1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Couchbaseの検証環境をcouchbase-cliで作成

Posted at

概要

Couchbase の検証用環境を作成してみます。マニュアルを参考に Docker を利用してコンテナ上に 3 ノードのクラスタを構成しますが、マニュアルに手順がきちんと書いてあるので、あえてコンソールを使わずにcouchbase-cliを利用してみました。
参考:Couchbase Server 6.6マニュアル - Deploy a Multi-Node Cluster with Containers

作業手順

環境

以下の環境で作業を実施しました。

$ cat /etc/centos-release
CentOS Linux release 8.3.2011
$ docker -v
Docker version 20.10.6, build 370c289

コンテナの起動

公式の Couchbase Server のコンテナイメージの取得と実行を行います。Couchbase のコンテナイメージは docker run コマンドの初回実行時にダウンロードされます。ここでは使用しませんが、コンソールからの操作ができるようマニュアル準拠でポートマッピングを 1 コンテナで指定しておきます。

# コンテナの起動
$ docker run -d --name cb1 -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 couchbase
$ docker run -d --name cb2 couchbase
$ docker run -d --name cb3 couchbase

# 起動状態の確認
$ docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS         PORTS                                                                                                                                                              NAMES
2506eb07bf2c   couchbase   "/entrypoint.sh couc…"   4 seconds ago    Up 2 seconds   8091-8096/tcp, 11207/tcp, 11210-11211/tcp, 18091-18096/tcp                                                                                                         cb3
e4059b1a5457   couchbase   "/entrypoint.sh couc…"   4 seconds ago    Up 3 seconds   8091-8096/tcp, 11207/tcp, 11210-11211/tcp, 18091-18096/tcp                                                                                                         cb2
34b717d68b3c   couchbase   "/entrypoint.sh couc…"   10 seconds ago   Up 8 seconds   0.0.0.0:8091-8096->8091-8096/tcp, :::8091-8096->8091-8096/tcp, 11207/tcp, 0.0.0.0:11210-11211->11210-11211/tcp, :::11210-11211->11210-11211/tcp, 18091-18096/tcp   cb1

コンソールを使用する場合、URL は以下から確認可能です。

$ docker logs cb1
Starting Couchbase Server -- Web UI available at http://<ip>:8091
and logs available in /opt/couchbase/var/lib/couchbase/logs

CLIを使用してCouchbase クラスタを構成する際には各コンテナのIPアドレスを指定するので、確認しておきます。

$ for name in {cb1,cb2,cb3}; do
    ipaddr=`docker inspect --format '{{.NetworkSettings.IPAddress}}' ${name}`
  echo "${name} : ${ipaddr}"
  done
cb1 : 172.17.0.2
cb2 : 172.17.0.3
cb3 : 172.17.0.4

クラスタの初期構成

まずはいずれか 1 ノードでクラスタの初期構成(名前やメモリ割り当ての設定など)を行います。初期構成は couchbase-cli cluster-init で行います。ここでは、cb1 に接続して実施しています。

# コンテナに接続
$ docker exec -it cb1 /bin/bash

# クラスタの初期構成
root@34b717d68b3c:/# couchbase-cli cluster-init         \
  --cluster couchbase://localhost  \    # 初期クラスタを構成するノードのホスト(couchbase://<addr>)
  --cluster-username Administrator \    # 管理ユーザの名前。
  --cluster-password password      \    # 管理ユーザのパスワード
  --cluster-name TestCluter        \    # クラスタ名
  --cluster-port 8091              \    # クラスタのポート番号。デフォルトは8091
  --services data,index,query,fts  \    # ノードで有効化するサービス。あとからの変更不可。最初のノードにはdataが必須
  --cluster-ramsize 2048           \    # Data Serviceで使用するメモリの上限値(MB)、クラスタ内の共通設定で新規ノード追加時にも適用されます
  --cluster-index-ramsize 512      \    # Index Serviceで使用するメモリの上限値(MB)、同上
  --cluster-fts-ramsize 512        \    # Full-Text Serviceで使用するメモリの上限値(MB)、同上
  --index-storage-setting default       # インデックスのストレージモードをdefault/memoptから選択、デフォルトはdefault
 
# クラスタ構成の確認
root@34b717d68b3c:/# couchbase-cli server-list -c couchbase://172.17.0.2 -u Administrator -p password
ns_1@cb.local 172.17.0.2:8091 healthy active

クラスタへのノード追加

クラスタの初期構成が完了したので、残る cb2, cb3 もクラスタへ追加します。クラスタへの追加は couchbase-cli server-add で行います。実行時にはユーザ情報と追加するノード、および稼働させるサービスを指定します。
※ 引数の指定順が入れ替わるとエラーになったので、マニュアル準拠の指定順としたほうがよさそうです。

# ノードの追加
root@34b717d68b3c:/# couchbase-cli server-add                                   \
  --cluster couchbase://172.17.0.2                           \   # ノードを追加する対象クラスタ
  --username Administrator                                   \   # 管理ユーザの名前
  --password password                                        \   # 管理ユーザのパスワード
  --server-add-username Administrator                        \   # サーバ追加に応じたクラスタ構成変更が可能なユーザの名前
  --server-add-password password                             \   # サーバ追加に応じたクラスタ構成変更が可能なユーザのパスワード
  --server-add http://172.17.0.3:8091,http://172.17.0.4:8091 \   # 追加するサーバをカンマ区切りで指定
  --services data,index                                          # 有効化するサービスを指定

# 追加を確認
root@34b717d68b3c:/# couchbase-cli server-list -c couchbase://172.17.0.2 -u Administrator -p password
ns_1@172.17.0.2 172.17.0.2:8091 healthy active
ns_1@172.17.0.3 172.17.0.3:8091 healthy inactiveAdded
ns_1@172.17.0.4 172.17.0.4:8091 healthy inactiveAdded

サーバ一覧に追加したノードがリストされるため、クラスタへの追加が完了しました。

リバランスの実行

ノード追加後のリバランスを実行していないため、追加ノードは "inactiveAdded" 状態になっています(詳細はマニュアル:Add a Node and Rebalance を参照)。そのため、couchbase-cli rebalance でリバランスを実行します。

# リバランスの実行
root@34b717d68b3c:/# couchbase-cli rebalance -c couchbase://172.17.0.2 -u Administrator -p password

これにより、追加ノードがアクティブとなります。クラスタ状態を couchbase-cli server-info から確認してみます。これにより、ノードで稼働するサービス一覧などのより詳細ない情報を確認することができます。couchbase-cli server-info 実行時には確認対象ノードへの接続情報が必要になるため、まずはそれらを couchbase-cli host-list で取得し、while で順次ノードへ問い合わせています。couchbase-cli server-info コマンドで取得される情報は JSON 形式で帰ってくるため、ここでは jq で一部の情報のみを抽出しています。

# コンテナにjqがなかったのでexit
root@34b717d68b3c:/# exit

# リバランス後のサーバ状態の確認
$ docker exec cb1 couchbase-cli host-list -c couchbase://172.17.0.2 -u Administrator -p password | \
  while read line ; do
    docker exec cb1 couchbase-cli server-info -c ${line} -u Administrator -p password | jq -cr '{host: .hostname, status: .status, clusterMembership: .clusterMembership, services: .services}'
  done
{"host":"172.17.0.2:8091","status":"healthy","clusterMembership":"active","services":["fts","index","kv","n1ql"]}
{"host":"172.17.0.3:8091","status":"healthy","clusterMembership":"active","services":["index","kv"]}
{"host":"172.17.0.4:8091","status":"healthy","clusterMembership":"active","services":["index","kv"]}

ノードの状態がすべて"active"であり、稼働サービスもコマンド実行時と一致していることが確認できました。以上で、3 ノードからなるCouchbase クラスタ環境の構成が完了です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?