2012-04-12 4 views
2

私は現在、3つの異なるサーバで3つのmemcachedインスタンスを実行している場合があります。私のアプリケーションは現在、同じ3つの異なるノードにあります。すべてのアプリケーションサーバーはすべてのmemcachedサーバーを知っていますが、そのうちの1つがダウンすると、私は通知の方法がありません。 考えられるのは、memcachedサーバーを自分のノードに移動することです。memcachedバケットを使用してCouchbaseを把握する

私はCouchBaseをこれを解決する代替手段として検討し始めましたが、正確にはうまくいくかどうかは不明です。

アプリケーションノードごとにCouchBaseクラスタを作成し、それらを異なるmemcachedサーバーに接続すると、CouchBaseはどのサーバーが稼動しているかを監視して認識しますか?

この場合、memcachedインスタンスに現在結ばれているアプリケーションは、memcachedインスタンスの1つが停止している場合にデータを取得する方法をどのように知っていますか?それともそれを保管する場所を世話する中堅の男になるのでしょうか?

答えて

2

Couchbaseは、標準のmemcachedインスタンスを置き換えるときに使用する非常に適応性の高いプラットフォームです。これにより、多くのフォールトトレランスをアプリケーションからcouchbaseインスタンスに移すことができます。

PHPを使用しているときは、CouchbaseクラスタにアクセスするときにPHP SDKを使用することをお勧めします。 http://www.couchbase.com/develop/php/current

ここで重要なことは、SDK for PHPが「vbucket aware」であることです。つまり、Couchbaseクラスターに接続するときに使用すると、コンストラクターに入れたアドレスからすべてのノードのすべての情報が収集されます。例:ノードがダウンして行く必要があります。これは、あなたがその意志を通じてのコマンドを実行することができますオブジェクトを作成します

#Create the Couchbase object 
$cb_obj = new Couchbase("127.0.0.1:8091", "user", "pass", "default"); 

、それ自身の上、必要になることなど、フェイルオーバーのすべてを処理することができます。各言語には独自の小さなコードプロセスがあります(私は一般的にPythonを自分で使用します)。しかし、一度理解すれば非常に効果的です。

クラスタは、コマンドラインインターフェイスまたはhttp://<nodehostname>:8091/にアクセスしてWeb URLを通じて管理できます。これは、インストール後に初期クラスタを設定するためにアクセスするURLです。

スタンドアロンmemcachedの代わりにCouchbaseをお勧めします。

+0

ありがとう、すべてのノードの情報の収集に関する1つの質問。これは、e.x 2のcouchbaseサーバーを持つクラスタを持つ場合、そのうちの1つに接続するだけで、2つのノードについてオブジェクトに知らせることになりますか?そして、提供されたものがダウンしたら、他のノードから取得しようとしますか? couchbaseサーバーがダウンしたときに何が起きるのだろうと思っているだけで、memcachedバケツだけでなくダウンしています。 – Nitro

+1

最初の通信ではvbucketのリストが取得されますが、vbucket情報が更新される場所はチェックされます。通常、良いアイデアは、すべてのノードでラウンドロビンの負荷分散を行うことができるnginxのような仮想IPインターフェイスまたはプロキシを設定することです。そうすれば、ノードの1つがダウンしても、フェールオーバーをサポートするコードを変更しなくても、それらのvbucketアップデートに接続して取得することができます。その側面以外は、はい。 Couchbase SDKを使用して最初のノードと通信するとすぐに、他のすべてのサーバーについて認識し、それに応じてトラフィックを分散します。 – Drahkar

1

Couchbaseでは、3つのノードのそれぞれからなる単一のクラスタを作成します。アプリケーションでPHP(?)Couchbaseクライアントのインスタンスを作成し、少なくとも1つのノードにURIを渡します。クライアントは、これらのノードのいずれかからクラスタのトポロジについて学習します。

クライアントはクラスタへのストリーミング接続を維持し、トポロジの変更が通知されます。ノードが停止すると、クライアントはそれに応じて反応します。

自動フェイルオーバーイベントを通知するために、自動フェイルオーバーと通知を設定できます。