Memcached高可用性スキームRepcached
11181 ワード
Repcachedは、Repcachedが単一のmaster単一slaveのスキームであることを示しているが、master/slaveはすべて読み書き可能であり、互いに同期することができる.master downが落ちると、slaveは接続が切れたことを検出し、自動的にlistenしてmasterになります.slaveが壊れた場合、masterは接続が切れたことを検出し、新しいslaveの参加を再listenで待つことになります.
Repcachedインストール:1:インストール条件(rootユーザー実行)
2:解凍&ディレクトリコンパイルへ
注意:makeの時にエラーを報告します
memcachedを修正する必要があります.cファイル:
さらにmake&&make install、コンパイル後rootユーザーを終了します.repcachedをオンにします.
masterの起動:[11211ポートでなければなりません]
slave:-x:同行memcachedのアドレスを起動します.
レプリケーション:11211のデータは11212にレプリケーションされます.
逆レプリケーション:11212が11211に同期しました
主従相互削除などの操作は相互に影響します.
これで、上記の同期は完了しました.
拡張:
http://houwenhui.gotoip2.com/archives/1384
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