最近、CouchDBをスタンドアロンのNoSQLデータベースサーバーとしてデプロイする方法を紹介しました。これは、小さなインスタンスでうまく機能する可能性があります。今回は、Dockerを使用してCouchDBをクラスターとしてデプロイするための巧妙なトリックを紹介します。この方法は本番環境での使用には理想的ではないかもしれませんが、開発者がテスト環境でCouchDBを操作できるようにするための優れた方法です。
さらに面倒なことはせずに、展開に取り掛かりましょう。
必要なもの
これを機能させるには、DockerをサポートするOSを搭載したサーバーが必要です。 Ubuntu Server 22.04でデモンストレーションしますが、使い慣れたプラットフォームを使用できます。
必読の開発者向け記事
Dockerのインストール方法
Dockerをまだインストールしていない場合は、次のようにします。
まず、次のコマンドを使用して公式のDockerGPGキーを追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
次に、必要なリポジトリを追加します:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
必要な依存関係を次のコマンドでインストールします:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
最後に、最新バージョンのDockerエンジンをインストールできます。
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
次のコマンドを使用して、ユーザーをdockerグループに追加します。
sudo usermod -aG docker $USER
次の方法でシステムに変更を認識させます:
newgrp docker
CouchDBコンテナーをデプロイする方法
それぞれが一意の外部ポートを使用する3つのCouchDBコンテナーをデプロイします。 1つ目はポート5984を使用し、次のようにデプロイされます:
docker run -itd -p 5984:5984 -p 5986:5986 --name=couchdb0 -e NODENAME='couchdb-0.local.com' --mount 'source=volume-0,target=/opt/couchdb/data' couchdb:2.3.0
2番目のコンテナは(ポート15984を使用して)次のようにデプロイされます:
docker run -itd -p 15984:5984 -p 15986:5986 --name=couchdb1 -e NODENAME='couchdb-1.local.com' --mount 'source=volume-1,target=/opt/couchdb/data' couchdb:2.3.0
最終的なコンテナは、*ポート25984を使用して)展開されます:
docker run -itd -p 25984:5984 -p 25986:5986 --name=couchdb2 -e NODENAME='couchdb-2.local.com' --mount 'source=volume-2,target=/opt/couchdb/data' couchdb:2.3.0
コマンドdockerps-a|を発行した場合grep couchdbは、3つのインスタンスすべてが稼働していることを確認する必要があります。
管理者ユーザーの作成方法
次に、各コンテナに管理者を作成する必要があります。いずれの場合も、PASSWORDを強力なパスワードに置き換えます(それぞれが同じであることを確認してください)。このためのコマンドは次のようになります:
curl -X PUT http://localhost:5984/_node/[email protected]/_config/admins/admin -d '"PASSWORD"
curl -X PUT http://localhost:15984/_node/[email protected]/_config/admins/admin -d '"PASSWORD"
curl -X PUT http://localhost:25984/_node/[email protected]/_config/admins/admin -d '"PASSWORD"''
並外れた。続けましょう。
Dockerネットワークを作成する方法
現時点では、CouchDBノードは相互に認識していません。これを修正するには、新しいDockerネットワークを作成する必要があります。これを行うには:
docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw
ネットワークを作成したら、コンテナをネットワークに接続する必要があります。これは、次のコマンドを使用して行われます。
docker network connect --alias couchdb-0.local.com isolated_nw couchdb0
docker network connect --alias couchdb-1.local.com isolated_nw couchdb1
docker network connect --alias couchdb-2.local.com isolated_nw couchdb2
完璧です。
管理コンソールにログインする方法
Webブラウザーを開き、http:// server:5984をポイントします。ここで、SERVERはDockerをホストしているサーバーのIPアドレスです。ユーザー名adminと、以前にadminユーザー用に追加したパスワードを使用してログインします。
ログインしたら、左側のナビゲーションにあるレンチアイコンをクリックし、[クラスターの構成]をクリックします(図A 。
図A
結果のウィンドウ(図B )、管理者のクレデンシャルを入力してから、クラスターにノードを追加する必要があります。
図B
最初のノードをクラスターに追加するには、リモートホストとしてcouchdb-1.local.comと入力し、ポートを5984のままにします。それが完了したら、[ノードの追加]をクリックします。リモートホストとしてcouchdb-2.local.comを使用して、2番目のノードに対して同じことを行います。
両方のノードを追加した後、[クラスターの構成]をクリックすると、クラスターが構成されたことを通知するページが表示されます(図C 。
図C
おめでとうございます。Dockerを使用して、最初のCouchDBクラスターをデプロイしました。