Memcached高可用性スキームRepcached

11181 ワード

Repcachedは、Repcachedが単一のmaster単一slaveのスキームであることを示しているが、master/slaveはすべて読み書き可能であり、互いに同期することができる.master downが落ちると、slaveは接続が切れたことを検出し、自動的にlistenしてmasterになります.slaveが壊れた場合、masterは接続が切れたことを検出し、新しいslaveの参加を再listenで待つことになります. 
Repcachedインストール:1:インストール条件(rootユーザー実行)
apt-get install libevent-dev
wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz

2:解凍&ディレクトリコンパイルへ
root@m2:~/nosql# tar zxvf memcached-1.2.8-repcached-2.2.tar.gz

cd memcached-1.2.8-repcached-2.2/

./configure --enable-replication --program-transform-name=s/memcached/repcached/

make&&make install 

注意:makeの時にエラーを報告します
memcached.c:    ‘add_iov’ :
memcached.c:696:30:   : ‘IOV_MAX’   (          )
memcached.c:696:30:   :                       
make[2]: *** [memcached-memcached.o]    1

memcachedを修正する必要があります.cファイル:
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
#if defined(__FreeBSD__) || defined(__APPLE__)
# define IOV_MAX 1024
#endif
#endif/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
# define IOV_MAX 1024
#endif

さらにmake&&make install、コンパイル後rootユーザーを終了します.repcachedをオンにします.
masterの起動:[11211ポートでなければなりません]
1:
zhoujy@m2:~$ repcached -d -m 64 -p 11211 -u nobody -l 127.0.0.1 -v zhoujy@m2:~$ replication: listen

2:
zhoujy@m2:~$ repcached -d -m 64 -p 11211 -u nobody -l 127.0.0.1 -x 127.0.0.1 -X 11111 -v #(11211:master ;11111: )
zhoujy@m2:~$ replication: connect (peer=127.0.0.1:11111)
replication: marugoto copying
replication: close
replication: listen

slave:-x:同行memcachedのアドレスを起動します.
1:
zhoujy@m2:~$ repcached -d -m 64 -p 11212 -u nobody -l 127.0.0.1 -x 127.0.0.1 -v zhoujy@m2:~$ replication: connect (peer=127.0.0.1:11212) replication: marugoto copying

2:
zhoujy@m2:~$ repcached -d -m 64 -p 11212 -u nobody -l 127.0.0.1 -x 127.0.0.1 -X 11111 -v #(11212:slave ;11111: )
zhoujy@m2:~$ replication: connect (peer=127.0.0.1:11111)
replication: marugoto copying
replication: accept
replication: start

レプリケーション:11211のデータは11212にレプリケーションされます.
zhoujy@m2:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set a 0 0 3
abc
STORED
set aa 0 0 5
abcde
STORED
quit
Connection closed by foreign host.
zhoujy@m2:
~$ telnet 127.0.0.1 11212 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. get a VALUE a 0 3 abc END get aa VALUE aa 0 5 abcde END

逆レプリケーション:11212が11211に同期しました
set b 0 0 3
ABC
STORED
set bb 0 0 5
ABCDE
STORED

quit
Connection closed by foreign host.
zhoujy@m2:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get b
VALUE b 0 3
ABC
END
get bb
VALUE bb 0 5
ABCDE
END

主従相互削除などの操作は相互に影響します.
zhoujy@m2:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
delete aa
DELETED
delete bb
DELETED
quit
Connection closed by foreign host.
zhoujy@m2:~$ telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get aa
END
get bb
END
delete a
DELETED
get a
END
quit
Connection closed by foreign host.
zhoujy@m2:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get a
END
get b
VALUE b 0 3
ABC
END

これで、上記の同期は完了しました.

    
  memcached         


      
   memcached 1.2.x  

 
拡張:
http://houwenhui.gotoip2.com/archives/1384