以下、Aerospike 3.X系-3.8.x
20160902追記
※3.9でpaxos-recovery-policy、Cluster-dunはOmmitされた模様・・・
※Nodeを外す場合は、該当のAerospikeプロセスをStop
※復活してくれませんかねえ。
概要
Aerospike、メンテとか、ローリングアップデートしたいじゃないですか。
でも、いきなりクラスタからノード外すと、
やっぱり色々不都合が有ったりするわけで・・・
システム側でリトライとか仕込んでても、リトライしても失敗するとか。
なので、メンテの際はやっぱりクラスタからノード外してえなと。
Aerospikeのクライアント側のマッピング
Aerospikeは、クライアント側にデータのマッピング情報を持っており
tend thread がデフォルトで1秒間隔で、このマッピング情報が書き換えれられる。
[http://www.aerospike.com/docs/client/c/usage/shm.html]
(もちろんある特定ノードが死ねば、他のノードにあるデータを見に行く)
が!デフォ1秒なので、ノードが落ちたりした場合
timeout 100ms, Retry Interval 200ms とかでリトライさせても
同じにノードにデータを取りに行って、結局取れなかったりする。
※関し感覚はtendIntervalで変更も可能。
どうすんの?
$ asadm [-h HOST] [-p PORT] [-U USER] [-P [PASSWORD]]
Aerospike Interactive Shell, version 0.0.16
Found X nodes
Online: 192.168.XX.XX:3000,,,,
# 現在のクラスタ確認
Admin> info service
# クラスタからノードを外す
Admin> cluster dun 192.168.XX.XX:3000 # ←これでクラスターから外れる
# asinfo dun でもできるが、NODE IDで指定なので面倒
# Cluster Sizeが変わる、Migratesが起こる ので確認
Admin> info service
# コネクション減ったの確認
Admin> info network
# またはAMCで確認
# 諸々終わったらノードをクラスタに戻す
Admin> cluster undun 192.168.XX.XX:3000
# migrateの値が0になるまで待機。migrateが落ち着いたらまた次のノードを作業など
Admin> info service
それでは良いAerospike活用を!