AWSの東京リージョンにあるROMAのクラスターを米国スタンダードリージョンに移設した話
条件
AWS EC2
Model | m3.large | |
Memory | 7.5GB | |
Storage | 32GB | |
OS | CentOS 6.5 | |
Asia pacific(Tokyo) region | ROMA server | 3 server |
Gladiator server | 1 server | |
US standard region | ROMA server | 3 server |
ROMA
ROMA version | v1.2.0 |
Ruby version | v2.1.6 |
Storage Type | Tokyo Cabinet(v1.4.48) |
instance/server | 1 |
Redundancy | 2 |
Gladiator version | v1.2.0 |
Test Data
Record counts | 6,000,000 (records) |
Value size | 1024 (bytes) |
Total Data size | 3.3(GB) |
流れ
1. 東京リージョンでクラスターつくって・・・
2. 米国リージョンからinstanceをjoinして・・・
3. 国をまたいだクラスターが出来たら・・・
4. 東京リージョンの方のインスタンスを落としていく
5. 完了!
手順
1. snapshotとる(万が一のために)
$ cpdb #{port}
2. 米国リージョンからインスタンス追加
$ bin/romad #{host} -p #{port} -j #{Japan ROMA instance}
Before adding US instances | After adding US instances! |
3. 東京リージョンのインスタンスを外していく
単純にインスタンスを落とすと冗長度が落ちてしまうので、release
コマンドを使用して担当しているvnodesを解放してからインスタンスを落とす
> release
> shutdown_self
releaseとshutdown_self(rbalse)はGUI上からも可能です
Relese process was ongoing | After removing Japan instances | Routing History List |
結果
NO ERROR
- エラーログでなかった
- AWS monitoringの方でも特におかしなとこなかった
NO DATA LOST
- short_vnodesもlost_vnodesも発生しなかった
- (冗長度の低下もデータロストも発生しなかった)
- 常にデータの読み書きをフロントから行っていたけどそちらも問題なく行えた(スクリプトは以下を使用)
NO High CPU rate
- CPU rateの大部分は15%以下だった
- MAXでも23%だった
AWS monitoring Glaph
- CPU use ratio
Japan | US |
- I/O Input
Japan | US |
- I/O Output
Japan | US |
Client & Gladiator
今回はクライアントとGladiatorは移設していないので東京リージョンにあるままですが、クライアントもGladiatorもROMAクラスターのrouting情報を定期的にチェックして更新する機能を持っているので、特にアクセス先の変更や再起動等しなくてもそのまま使い続けることが出きます
参照URL
ROMA Blog: http://roma-kvs.org/blogs/blog-entry-14.html