
先日、CouchDBをスタンドアロンのNoSQLデータベースサーバーとしてデプロイする方法を紹介しました。これは小規模なインスタンスでの利用に適しています。今回は、Dockerを使ってCouchDBをクラスターとしてデプロイする便利な方法をご紹介します。この方法は本番環境での使用には適していないかもしれませんが、開発者がテスト環境でCouchDBを操作できるようにするには最適な方法です。
さっそく、展開してみましょう。
参照: 採用キット: バックエンド開発者 (TechRepublic Premium)
必要なもの
これを動作させるには、DockerをサポートするOSを搭載したサーバーが必要です。ここではUbuntu Server 22.04でデモを行いますが、使い慣れたプラットフォームであればどれでも構いません。
Dockerのインストール方法
万が一、まだ Docker がインストールされていない場合は、次の手順に従ってください。
まず、次のコマンドで公式の Docker GPG キーを追加します。
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コンテナをデプロイします。それぞれが固有の外部ポートを使用します。最初のコンテナはポート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
コマンド docker ps -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
完璧。
管理コンソールにログインする方法
ウェブブラウザを開き、http://server:5984 にアクセスします。ここで、SERVER は Docker をホストしているサーバーの IP アドレスです。ユーザー名 admin と、先ほど admin ユーザー用に追加したパスワードでログインします。
ログインしたら、左側のナビゲーションにあるレンチ アイコンをクリックし、[クラスターの構成] (図 A ) をクリックします。
図A

表示されるウィンドウ (図 B ) で、管理者の資格情報を入力し、クラスターにノードを追加する必要があります。
図B

最初のノードをクラスターに追加するには、リモートホストに「couchdb-1.local.com」と入力し、ポートは5984のままにします。入力したら、「ノードを追加」をクリックします。2番目のノードについても、リモートホストに「couchdb-2.local.com」と入力して同じ操作を行います。
両方のノードを追加した後、「クラスターの構成」をクリックすると、クラスターが構成されたことを通知するページが表示されます (図 C )。
図C

おめでとうございます。Docker の助けを借りて、最初の CouchDB クラスターをデプロイしました。
TechRepublic Academy の次のリソースを活用して Docker をマスターしましょう。
Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。