Próbowałem dodać w postaci memcached conf plik -l 11211 -l 11212 . Ale to jest po prostu słuchać pierwszego czyli 1121Jak możemy utworzyć dwa wystąpienia memcached serwera na tym samym serwerze w innym porcie?
Odpowiedz
Oto co Memcached mówi komenda -l
jest dla:
-l <addr> interface to listen on (default: INADDR_ANY, all addresses)
<addr> may be specified as host:port. If you don't specify
a port number, the value you specified with -p or -U is
used. You may specify multiple addresses separated by comma
or by using -l multiple times
Po pierwsze trzeba określić interfejs chcesz memcached słuchać dalej, jeśli są za pomocą Flaga -l
. Użyj 0.0.0.0
dla wszystkich interfejsów i użyj 127.0.0.1
, czy chcesz mieć dostęp do memcached z localhost
. Po drugie, nie używaj dwóch flag: -l
. Użyj tylko jednego i oddziel każdy adres przecinkami. Poniższe polecenie powinno zrobić to, co chcesz.
memcached -l 0.0.0.0:11211,0.0.0.0:11212
Należy pamiętać, że będzie to jedna instancja memcached nasłuchująca na dwóch portach. Aby mieć dwa memcached wystąpień na jednym komputerze uruchom te dwie komendy.
memcached -p 11211 -d
memcached -p 11212 -d
Dzięki za odpowiedź. Pracując jako urok :) – panalbish
Wow, dzięki, to naprawdę pomoże mi z moim skupiskiem. – WojonsTech
żadna z nich nie działa dla mnie w wersji 1.4.2, a dokumentacja, której dotyczy odwołanie, już nie istnieje. – Brunis
Najpierw użyłem rozwiązanie mikewied, ale potem wpadłem na problem automatycznego uruchamiania demona. Inną dziwną rzeczą w tym rozwiązaniu jest to, że nie używa ona konfiguracji z itp. Miałem zamiar stworzyć własne skrypty startowe w /etc/init.d, ale potem zajrzałem do pliku /etc/init.d/memcached i widziałem to piękne rozwiązanie
# Usage:
# cp /etc/memcached.conf /etc/memcached_server1.conf
# cp /etc/memcached.conf /etc/memcached_server2.conf
# start all instances:
# /etc/init.d/memcached start
# start one instance:
# /etc/init.d/memcached start server1
# stop all instances:
# /etc/init.d/memcached stop
# stop one instance:
# /etc/init.d/memcached stop server1
# There is no "status" command.
Zasadniczo czytelnicy to pytanie wystarczy przeczytać plik /etc/init.d/memcached
.
Cheers
To powinno być wybrane rozwiązanie – Avision
Myślę, że twój skrypt init musi być inny. W CenOS 6 czytałem plik /etc/init.d/memcached i nie widzę, w jaki sposób wymienione polecenia działałyby bez modyfikowania go. Może jestem wolny :) – im3r3k
Należy pamiętać, że to nie działa dla Debain Jessie z powodu tego błędu: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784357. W bilecie są obejścia. – gArn
w /etc/memcached.conf można tylko zmieniać jak poniżej
-l 192.168.112.22,127.0.0.1
musi używać przecinek między dwoma adres IP
Odpowiedź od Davida Dzhagayeva jest najlepsza. Jeśli nie masz poprawnej wersji skryptu inicjującego memcache, tutaj jest ten, o którym mówi:
Powinien działać z każdą linuksową dystrybucją używając init.
#! /bin/bash
### BEGIN INIT INFO
# Provides: memcached
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start memcached daemon
# Description: Start up memcached, a high-performance memory caching daemon
### END INIT INFO
# Usage:
# cp /etc/memcached.conf /etc/memcached_server1.conf
# cp /etc/memcached.conf /etc/memcached_server2.conf
# start all instances:
# /etc/init.d/memcached start
# start one instance:
# /etc/init.d/memcached start server1
# stop all instances:
# /etc/init.d/memcached stop
# stop one instance:
# /etc/init.d/memcached stop server1
# There is no "status" command.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/memcached
DAEMONNAME=memcached
DAEMONBOOTSTRAP=/usr/share/memcached/scripts/start-memcached
DESC=memcached
test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0
set -e
. /lib/lsb/init-functions
# Edit /etc/default/memcached to change this.
ENABLE_MEMCACHED=no
test -r /etc/default/memcached && . /etc/default/memcached
FILES=(/etc/memcached_*.conf)
# check for alternative config schema
if [ -r "${FILES[0]}" ]; then
CONFIGS=()
for FILE in "${FILES[@]}";
do
# remove prefix
NAME=${FILE#/etc/}
# remove suffix
NAME=${NAME%.conf}
# check optional second param
if [ $# -ne 2 ];
then
# add to config array
CONFIGS+=($NAME)
elif [ "memcached_$2" == "$NAME" ];
then
# use only one memcached
CONFIGS=($NAME)
break;
fi;
done;
if [ ${#CONFIGS[@]} == 0 ];
then
echo "Config not exist for: $2" >&2
exit 1
fi;
else
CONFIGS=(memcached)
fi;
CONFIG_NUM=${#CONFIGS[@]}
for ((i=0; i < $CONFIG_NUM; i++)); do
NAME=${CONFIGS[${i}]}
PIDFILE="/var/run/${NAME}.pid"
case "$1" in
start)
echo -n "Starting $DESC: "
if [ $ENABLE_MEMCACHED = yes ]; then
start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
echo "$NAME."
else
echo "$NAME disabled in /etc/default/memcached."
fi
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --oknodo --retry 5 --pidfile $PIDFILE --exec $DAEMON
echo "$NAME."
rm -f $PIDFILE
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --oknodo --retry 5 --pidfile $PIDFILE
rm -f $PIDFILE
if [ $ENABLE_MEMCACHED = yes ]; then
start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
echo "$NAME."
else
echo "$NAME disabled in /etc/default/memcached."
fi
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
done;
exit 0
Dobra odpowiedź, Tristan CHARBONNIER. Proszę wymienić kod do pliku/usr/share/memcached/scripts/start-memcached:
#!/usr/bin/perl -w
# start-memcached
# 2003/2004 - Jay Bonci
# This script handles the parsing of the /etc/memcached.conf file
# and was originally created for the Debian distribution.
# Anyone may use this little script under the same terms as
# memcached itself.
use strict;
if($> != 0 and $< != 0)
{
print STDERR "Only root wants to run start-memcached.\n";
exit;
}
my $params; my $etchandle; my $etcfile = "/etc/memcached.conf";
# This script assumes that memcached is located at /usr/bin/memcached, and
# that the pidfile is writable at /var/run/memcached.pid
my $memcached = "/usr/bin/memcached";
my $pidfile = "/var/run/memcached.pid";
if (scalar(@ARGV) == 2) {
$etcfile = shift(@ARGV);
$pidfile = shift(@ARGV);
}
# If we don't get a valid logfile parameter in the /etc/memcached.conf file,
# we'll just throw away all of our in-daemon output. We need to re-tie it so
# that non-bash shells will not hang on logout. Thanks to Michael Renner for
# the tip
my $fd_reopened = "/dev/null";
sub handle_logfile
{
my ($logfile) = @_;
$fd_reopened = $logfile;
}
sub reopen_logfile
{
my ($logfile) = @_;
open *STDERR, ">>$logfile";
open *STDOUT, ">>$logfile";
open *STDIN, ">>/dev/null";
$fd_reopened = $logfile;
}
# This is set up in place here to support other non -[a-z] directives
my $conf_directives = {
"logfile" => \&handle_logfile,
};
if(open $etchandle, $etcfile)
{
foreach my $line (< $etchandle>)
{
$line ||= "";
$line =~ s/\#.*//g;
$line =~ s/\s+$//g;
$line =~ s/^\s+//g;
next unless $line;
next if $line =~ /^\-[dh]/;
if($line =~ /^[^\-]/)
{
my ($directive, $arg) = $line =~ /^(.*?)\s+(.*)/;
$conf_directives->{$directive}->($arg);
next;
}
push @$params, $line;
}
}else{
$params = [];
}
push @$params, "-u root" unless(grep "-u", @$params);
$params = join " ", @$params;
if(-e $pidfile)
{
open PIDHANDLE, "$pidfile";
my $localpid = <PIDHANDLE>;
close PIDHANDLE;
chomp $localpid;
if(-d "/proc/$localpid")
{
print STDERR "memcached is already running.\n";
exit;
}else{
`rm -f $localpid`;
}
}
my $pid = fork();
if($pid == 0)
{
reopen_logfile($fd_reopened);
exec "$memcached $params";
exit(0);
}else{
if(open PIDHANDLE,">$pidfile")
{
print PIDHANDLE $pid;
close PIDHANDLE;
}else{
print STDERR "Can't write pidfile to $pidfile.\n";
}
}
proste rozwiązanie Centosu 6
pierwszej kopii /etc/sysconfig/memcached
do /etc/sysconfig/memcached2
i pisać nowe ustawienia do nowego pliku .
Następnie skopiuj /etc/init.d/memcached
do /etc/init.d/memcached2
i zmiany w nowym pliku:
- PORT do nowego portu (należy zresetować z
/etc/sysconfig/memcached2
, więc robimy to na wszelki wypadek) /etc/sysconfig/memcached
do/etc/sysconfig/memcached2
/var/run/memcached/memcached.pid
do/var/run/memcached/memcached2.pid
/var/lock/subsys/memcached
do/var/lock/subsys/memcached2
Teraz można używać , service memcached2 stop
itd. Nie zapomnij o włączeniu funkcji chkconfig memcached2, aby uruchomić ją po uruchomieniu komputera.
W przypadku, gdy ktoś inny natknie się na to pytanie, pojawia się błąd w dystrybucji debianowej memcached (co oznacza, że wpłynie to również na smaki takie jak Ubuntu).
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784357
Z powodu tego błędu, nawet jeśli mają oddzielne pliki konfiguracyjne, po uruchomieniu sudo service memcached restart
tylko domyślny plik konfiguracyjny w /etc/memcached.conf
zostanie załadowany.
Jak wspomniano w comment here, tymczasowa rozwiązaniem jest
Usuń
/lib/systemd/system/memcached.service
Run
sudo systemctl daemon-reload
(nie martw się, że jest to bezpieczne tak)Na koniec uruchom
sudo service memcached reload
- 1. Czy mogę używać APC AND memcached na tym samym serwerze?
- 2. Nginx wiele bloków serwera nasłuchujących na tym samym porcie
- 3. Android: Dwa wystąpienia nagrywarki Media w tym samym czasie
- 4. Jak korzystać z ExpressJS i Socket.io na tym samym porcie?
- 5. Nasłuchuj na TCP i UDP na tym samym porcie
- 6. Dlaczego OS X pozwala na słuchanie na tym samym porcie TCP dwa razy?
- 7. Jak uruchomić dwa moduły w tym samym czasie w IDLE
- 8. Query w wielu bazach danych na tym samym serwerze
- 9. Dwa UITableView w tym samym widoku
- 10. Konfigurowanie lakieru na tym samym serwerze co serwer WWW
- 11. Jak zrobić Cienki uruchomić na innym porcie?
- 12. Wiele witryn w wielu projektach na tym samym serwerze szyn
- 13. podzielić dwa razy w tym samym wyrażeniu?
- 14. Jak skopiować plik na serwerze ftp do katalogu na tym samym serwerze w java?
- 15. Możliwe jest wiele środowisk na tym samym serwerze RabbitMQ?
- 16. utworzyć synonim tabeli w bazie danych zorganizowanej w innym serwerze
- 17. Dwa elementy XML o tym samym identyfikatorze
- 18. PayPal IPN na porcie innym niż 80
- 19. Jak utworzyć klasę HttpListener na losowym porcie w C#?
- 20. dwa widoki z tym samym identyfikatorem
- 21. Jak utworzyć oddzielne bazy danych Neo4j na tym samym komputerze?
- 22. W jaki sposób klasa serwerocket obsługuje wiele połączeń klientów na tym samym porcie?
- 23. DAO na innym serwerze aplikacji
- 24. Komunikacja między dwiema aplikacjami WWW na tym samym serwerze
- 25. Komunikacja między dwiema aplikacjami PHP na tym samym serwerze?
- 26. Jak dodać dwa pliki google-services.json w tym samym projekcie?
- 27. Laravel i Wordpress na tym samym serwerze/domenie
- 28. Uruchom konsolę żagli na innym porcie, a następnie podnieś windę.
- 29. Dlaczego korzystamy z wielu wystąpień serwera aplikacji na tym samym serwerze?
- 30. Google Chart - dwa data serie na tym samym wykresie
Do symulacji środowiska klastrowego używam dwóch tomcatów na jednym serwerze, ale oba serwery tomcat dzielą jeden serwer mysql. Proszę, popraw mnie jeśli się mylę. Do celów udostępniania lepkich sesji potrzebuję uruchomić memcahed jako demon. – panalbish