Quantcast
Channel: さくらインターネット研究所 » Key Value Store
Viewing all articles
Browse latest Browse all 12

Flareを使う(flush_allコマンドの不具合)

$
0
0

当ブログをご覧の皆様こんにちは。さくらインターネット研究所の大久保です。 先日、Flareにてflush_allコマンドを使用するとデータの不整合が発生するという事象が発生しました。 今回はその調査内容ついてご説明したいと思います。

不具合の内容

以前の記事ではご紹介していませんでしたが、memcachedプロトコルには保存されている全データを消去するflush_allコマンドというものがあります。Flareにおいてもflush_allコマンドはサポートされていますが、このコマンドを発行するとレプリケーションをとっている(スレーブサーバを設置している)場合に、サーバ間でデータの不整合が発生します。

開発者のグリー藤本さんにお聞きしたところ、flush_allコマンドは発行したサーバでのみ処理され、レプリケーションはされないとのことでした。そのため、あるサーバのデータは消去されるが、他のサーバのデータは存在したままとなり、問い合わせ先のサーバによってデータが存在したり、存在しなかったり、応答が変化することとなります。

この事象について以下の通り再現試験を行いました。

再現試験の内容 テスト構成 以下の4台のサーバを用いてテストを行いました。プロキシサーバ、ストレージマスターサーバ、ストレージスレーブサーバにそれぞれflush_allコマンドを発行してどのような結果になるかを確認します。 サーバ名 役割 IPアドレス kvs001 インデックスサーバ 192.168.12.151 kvs002 ストレージサーバ(マスター) 192.168.12.152 kvs003 ストレージサーバ(スレーブ) 192.168.12.153 kvs004 プロキシサーバ 192.168.12.154 各サーバにてデーモンを起動 設定は以前と同じものを使用するため省略します。 インデックスサーバにて役割設定 インデックスサーバにてflareiにtelnet接続して役割設定を行います。
[admin@kvs001 ~]$ telnet localhost 12120 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. node role 192.168.12.152 12121 master 1 0 OK [...]

Viewing all articles
Browse latest Browse all 12

Trending Articles