repcached não funcionou quando replicado com 2 servidores?

1

Eu compilei o memcached-repcached com a opção --enable-replication, e comecei como abaixo:

no servidor 1:

# /usr/local/memcached/bin/memcached -v -d -u memcached -l 192.168.7.106 -p 11216 -c 2048 -m 512 -P /usr/local/memcached/var/run/test.pid -x 192.168.3.82 -X 11216
# replication: connect (peer=192.168.3.82:11216)
replication: marugoto copying
replication: close
replication: failed to initialize replication server socket

no servidor 2:

# /usr/local/memcached/bin/memcached -v -d -u memcached -l 192.168.3.82 -p 11216 -c 2048 -m 512 -P /usr/local/memcached/var/run/test.pid -x 192.168.7.106 -X 11216
replication: connect (peer=192.168.7.106:11216)
replication: marugoto copying

Mas parece que o servidor 2 só se conecta à instância do memcached no servidor 1, ele não escutou na porta 11216:

# lsof -i :11216
COMMAND     PID      USER   FD   TYPE   DEVICE SIZE NODE NAME
memcached 12786 memcached    6u  IPv4 55213579       TCP 192.168.3.82:56176->192.168.7.106:11216 (ESTABLISHED)

portanto não consigo fazer telnet no servidor 2:

# telnet 192.168.3.82 11216
Trying 192.168.3.82...
telnet: connect to address 192.168.3.82: Connection refused
telnet: Unable to connect to remote host: Connection refused

Mas se eu tentar replicar 2 instâncias do memcached em apenas um servidor com porta diferente, tudo funcionará bem:

$ telnet 192.168.7.106 11216
Trying 192.168.7.106...
Connected to 192.168.7.106.
Escape character is '^]'.
set foo 0 0 3
bar
STORED

$ telnet 192.168.7.106 11217
Trying 192.168.7.106...
Connected to 192.168.7.106.
Escape character is '^]'.
marugoto_end
rep foo 0 0 3 1
bar
get foo
VALUE foo 0 3
bar
END

Eu senti falta de algo?

    
por quanta 21.03.2011 / 09:57

2 respostas

1

parece que você não combinou com as configurações da porta:

-x 192.168.3.82 -X 11216

e

-x 192.168.7.106 -X 11216

use as mesmas portas para replicação (o que é correto quando você usa máquinas diferentes)

Mas, por que você iniciou esses daemons com outras portas:

-l 192.168.7.106 -p 11217

e

-l 192.168.3.82 -p 11216

Eu sugiro mudar 11217 para 11216 e isso deve começar a funcionar imediatamente. Eu acho que você já começou com as configurações padrão para ver o Repcached basicamente funcionando, certo? Minhas configurações padrão funcionaram bem, como: link

saídas de um exemplo de trabalho:

Veja como eu iniciei o memcached (truncado do pstree):

  |-memcached,2915 -m 64 -p 11211 -u root -P /var/run/memcachedrep.pid -d -x 192.168.18.11

e no outro nó:

  |-memcached,2965 -m 64 -p 11211 -u root -P /var/run/memcachedrep.pid -d -x 192.168.18.10

Portas usadas:

tcp        0      0 192.168.18.11:54122     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.11:54133     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.11:54130     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.11:54125     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.11:52466     192.168.18.10:11211     TIME_WAIT   -               
tcp6       0      0 192.168.18.11:11212     192.168.18.10:37881     VERBUNDEN   2965/memcached

e o outro nó

tcp        0      0 192.168.18.10:57768     192.168.18.10:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:45406     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:45412     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:56134     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:40624     192.168.18.10:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:37881     192.168.18.11:11212     VERBUNDEN   2915/memcached  
tcp        0      0 192.168.18.10:57750     192.168.18.10:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:45428     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:45419     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:45410     192.168.18.11:11211     TIME_WAIT   -               
tcp        0      0 192.168.18.10:57766     192.168.18.10:11211     TIME_WAIT   -       

Lembre-se A porta usada para replicação (11212) é diferente da porta usada para servir o cache (11211)!

A porta de replicação deve ser a mesma em ambas as máquinas e deve estar acessível a partir das outras interfaces. A porta de veiculação está configurada para ser a mesma nos dois nós, pois os dois nós também estão se conectando às mesmas portas que os clientes. Isso imita uma configuração como Master-Master-Replication no MySQL.

    
por 21.03.2011 / 16:10
0

Desculpe, é meu erro. Deve ser 11216 (eu me misturei com a porta ao testar com 2 instâncias no servidor 1).

No seu blog, você não especificou a porta TCP para replicação ( -X ). Por padrão, é 11212, não 11211, portanto você não pode fazer telnet para 11211. Além disso, você tem um erro de digitação com o endereço IP em DAEMON_ARGS, 192.168.168.62 em vez de 192.168.168.2.

Eu testei novamente e ainda recebi o erro "Conexão recusada" quando o telnet. Abaixo estão os detalhes:

Inicie o memcached no 106:

# /usr/local/memcached/bin/memcached -v -d -u memcached -l 192.168.7.106 -p 11216 -c 2048 -m 512 -P /usr/local/memcached/var/run/test.pid -x 192.168.3.82 -X 11216
replication: connect (peer=192.168.3.82:11216)
replication: marugoto copying
replication: close
replication: listen
failed to listen
replication: accept

Iniciar o memcached no 82:

# /usr/local/memcached/bin/memcached -v -d -u memcached -l 192.168.3.82 -p 11216 -c 2048 -m 512 -P /usr/local/memcached/var/run/test.pid -x 192.168.7.106 -X 11216
replication: connect (peer=192.168.7.106:11216)
replication: marugoto copying
replication: start

no 106:

# lsof -i :11216
COMMAND   PID      USER   FD   TYPE   DEVICE SIZE NODE NAME
memcached 777 memcached    7u  IPv4 10701963       TCP 192.168.7.106:11216->192.168.3.82:60861 (ESTABLISHED)

no 82:

# lsof -i :11216
COMMAND     PID      USER   FD   TYPE   DEVICE SIZE NODE NAME
memcached 18305 memcached    6u  IPv4 55702870       TCP 192.168.3.82:60861->192.168.7.106:11216 (ESTABLISHED)
memcached 18305 memcached    9u  IPv4 55702872       TCP 192.168.3.82:11216 (LISTEN)

Teste com telnet:

# telnet 192.168.7.106 11216
Trying 192.168.7.106...
telnet: connect to address 192.168.7.106: Connection refused
telnet: Unable to connect to remote host: Connection refused

Eu também tentei vincular o memcached a qualquer interface (não especificou -l ao iniciar), mas ele ainda não escuta na porta 11216:

$ ps -ef | grep 11216
502       2305     1  0 10:37 ?        00:00:00 /usr/local/memcached/bin/memcached -v -d -u memcached -p 11216 -c 2048 -m 512 -P /usr/local/memcached/var/run/test.pid -x 192.168.3.82 -X 11216

# lsof -i :11216
COMMAND    PID      USER   FD   TYPE   DEVICE SIZE NODE NAME
memcached 2305 memcached    7u  IPv6 10707474       TCP 192.168.7.106:11216->192.168.3.82:47534 (ESTABLISHED)
    
por 22.03.2011 / 04:12

Tags