0

2 つのノード (Windows 2008 R2) で Couchbase 1.8 クラスターをセットアップしました。

1) ここで説明されているように、2 つのサーバーで必要なすべてのポートを開きます: http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-network-ports.html

2) 最初にノード A (172.30.75.53) を新しいクラスターに作成して、簡単なセットアップを行いました。http://www.couchbase.com/docs/couchbase-manual-1.8/couchbase-bestpractice-cloud-ip.htmlで説明されているように、IP アドレスをサーバーの静的 IP アドレスに変更しました 。デフォルトの Couchbase バケットを使用して作成されました。

3) 次に、ノード B (172.30.75.55) に Couchbase をインストールしました。IPAddress をサーバーの静的 IPAddress に変更しました。

4) ノード A に戻り、ノード B をクラスターに追加しました。

5) Couchbase Web コンソールで最初の再調整を行いました。

6) Couchbase コンソールで、2 つのノードが稼働していることを確認できました。

以下のようにテストする単純なアプリ C# サンプル アプリを作成しました。

ノード A を指す構成ファイル内

var client = new CouchbaseClient();
var setResult = client.ExecuteStore(StoreMode.Set, "someKey", "someData", new    TimeSpan(7, 0, 0, 0)); 
var resultGet = client.ExecuteGet<string>("someKey");

その後、問題なく Get および Set を実行できます (予想どおり)。

次に、構成ファイルで、ノード B を指すように変更しました。

次に、以下のように Get を実行できます (予想どおり): var resultGet = client.ExecuteGet("someKey");

ノード A で、service_stop.bat を実行して CouchBase サービスをシャットダウンします。

テスト アプリがまだノード B を指している状態で、(予想どおり) 取得および設定できました。

ノード A で、次を実行して Couchbase サービスを開始しました: service_start.bat ノード B で、次を実行して CouchBase サービスをシャットダウンしました: service_stop.bat

次に、構成ファイルで、ノード A を指すように変更しました。

ノード A に接続しているときに、次のように Get および Set を実行しようとすると、次のようになります。var resultGet = client.ExecuteGet("someKey");

以下のようにエラーが発生します。

-ストア操作に失敗しました。詳細については、InnerResult または StatusCode を参照してください" -操作の実行に失敗しました -StatusCode : 0

失敗しました。詳細については、InnerException または StatusCode を参照してください" StatusCode : Null

したがって、結論として:

a) ノード A とノード B が実行されている状態で Get および Set を実行できます。(クライアントがノード A またはノード B に接続されている場合)

b) ノード A が停止し、ノード B が実行されている状態で Get および Set を実行できます。(クライアントがノード B に接続されている場合)

c) ノード A が実行中で、ノード B が停止している状態で Get および Set を実行することはできません。(クライアントがノード A に接続されている場合)

何か案は?

ありがとう、

マット

4

1 に答える 1

0

テスト用に単一のキーに対して単一の get/set を実行しているようです。この場合、そのキーはノード B にあるため、ノード B を停止するとキーが見つかりません。Couchbase では、ノードがダウンすると、そのノードをフェイルオーバーするまでデータにアクセスできなくなります。実稼働環境で実行していて、ノード B が誤動作していた場合に行うことは、そのノードをフェイル オーバーし、ノードに発生していた問題を修正したら、ノードを追加して再調整することです。

于 2012-11-10T19:39:27.540 に答える