第二の問題は少しトリッキーで、CouchbaseがIPアドレスの代わりにDNSのエントリを使用するように設定が必要です。デフォルトでは、Couchbaseのサーバは一意な識別子としてIPアドレスを使用します。IPが変更された場合は、個々のノードは自身の設定を識別することができなくなり、クラスタを構成する他のノードはそれにアクセスすることができなくなります。ノードがIPアドレスでなく、DNS名で自身を認識するためには、次の方法に従わなければなりません。この設定はRightScaleのサーバーテンプレートによって自動的に処理されます。
この設定を行う際に留意すべき点:
ホスト名が常にIPアドレスに名前解決されることを確認してください。これはIPアドレスが変更された場合にホスト名を自動的に更新できる動的DNSMadeEasyのようなDNSサービスを利用して実現できます。
ホスト名で登録されたIPアドレスに他のノードとアプリケーションのマシンが通信できるように、ホスト名と登録されるIPアドレスはノードの内部IP(Amazonによって配布される外部IPではなく)を設定してください。
以下の手順で完全にノードから全てのデータと設定を消去し、フレッシュな状態でCouchbaseを開始することができます。既に実行中のクラスタの場合、リバランスにより容易にクラスタからノードを切り離し、ノードを変更後、再度リバランスによりクラスタへ戻すことができます。同一のクラスタにIP指定のノードとホスト名指定のノードが共存できます。
Linuxの場合
Couchbaseのソフトウェアをインストールします
次を実行します:
sudo /etc/init.d/couchbase-server stop
/opt/couchbase/bin/couchbase-server
のスクリプトを編集します。
最後の行の末尾に'\'を追加します
最後の行に reads:-name
ns_1@<hostname>
を追加します。
hostname
はこのサーバにリスンさせたいDNS名もしくはIPアドレスです('ns_1@'
プリフィックスは必須)。 例えば:
-detached \ -run ns_bootstrap -- \ -ns_server config_path "\"/opt/couchbase/etc/couchbase/static_config\"" \ -name ns_1@couchbase1.company.com
下記のファイルを削除します。
/opt/couchbase/var/lib/couchbase/data/*
/opt/couchbase/var/lib/couchbase/mnesia/*
/opt/couchbase/var/lib/couchbase/config/config.dat
次を実行します:
sudo /etc/init.d/couchbase-server start
GUIのManage Serversページからノードが自身を正しく識別しているかを見ます。(設定がクリアされているためにセットアップウイザードに戻りますが、ウイザードが完了するとノード名は正しく表示されます)
Windowsの場合
Couchbase Serverソフトウェアをインストールします。
下記を実行してサービスを停止します:
C:\Program Files\Couchbase\Server\bin\service_stop.bat
下記を実行してサービスの登録を解除します
C:\Program Files\Couchbase\Server\bin\service_unregister.bat
次の場所にあるスクリプトを編集しますC:\Program
Files\Couchbase\Server\bin\service_register.bat
:
7行目に次のように書かれています:set
NS_NAME=ns_1@%IP_ADDR%
%IP_ADDR%
を使用するホスト名/IPに書き換えます。
修正したスクリプトを使ってサービスに登録します: C:\Program Files\Couchbase\Server\bin\service_register.bat
次の配下にあるファイルを削除します:C:\Program
Files\Couchbase \Server\var\lib\couchbase\mnesia
下記を実行してサービスを起動します:
C:\Program Files\Couchbase\Server\bin\service_start.bat
GUIのManage Serversページからノードが自身を正しく識別しているかを見ます。(設定がクリアされているためにセットアップウイザードに戻りますが、ウイザードが完了するとノード名は正しく表示されます)