2

私は2つのcouchbaseノードを持っています。

一方は他方をバックアップする必要がありますが、サーバーがそれらの間でドキュメントのバランスを取ることは望ましくありません。

そのため、両方を1つのクラスターに追加し、レプリカをバケットで「無効」に設定しようとしましたが、それでもこれら2つのサーバー間でドキュメントのバランスを取ります.

次に、サーバー間でレプリケーションを行う異なるクラスターとしてサーバーを使用しようとしました。また、これらの 2 つのサーバーをクライアント構成に追加しました。

<servers bucket="default" bucketPassword="private">
    <add uri="http://server1ip/pools/default">
    <add uri="http://server2ip/pools/default">
</servers>

server1 をシャットダウンすると、リクエストは server2 に送信されたので、バックアップが機能しました。

しかし、server1 のクライアントからリクエストを送信しているかどうかはわかりません。常に最も近いサーバーが選択されます (リクエストは常に server1ip に送信されます)

どうすればそれを達成できますか?

4

3 に答える 3

0

構成に2つのサーバーを追加すると、couchbaseが最も近いサーバーを選択するかどうかわかりません.roundrobinを使用できます. しかし、構成のサーバーの順序が負荷に影響することに気付きました。そのため、最初のサーバーだけが優先される可能性がありますが、すべての要求がそれに送られるわけではありません。また、「メイン」や「バックアップ」などのサーバーの1つを設定する.Netクライアントの構成オプションは見たことがありません。だから多分あなたは試すことができます:

  1. メインサーバーとバックアップサーバーを構成に設定するための解決策があるかどうか、couchbaseフォーラムで couchbase .net ライブラリの開発者に尋ねてください。
  2. HA Proxy を適切な実行中のサーバーを選択するミドルウェアとして使用するには。(ドン・ディキンソンが示唆したように)
  3. アプリで 2 つのソファベース接続を作成します (1 つはメイン サーバー用、もう 1 つはバックアップ用です。2 つの構成セクションが必要です)。メイン サーバーで一部の操作が失敗した場合は、バックアップのリクエストを繰り返します。したがって、コードは次のようになります。

    var getResult = _ClientMain.ExecuteGet(キー); if (!getResult.Sucess){ getResult = _ClientBackup.ExecuteGet(key); }

  4. 必要に応じて .Net クライアント ライブラリを変更します。

于 2013-09-10T05:24:34.927 に答える