ccmでCassandraの検証環境を操作する

ccmを使って検証用のCassandraクラスタを立ち上げてみます。

準備

最新の 3.1.5 でもPython2.7でテストしているようです。はじめ3.8のみインストールされた環境で実行したところランタイムエラーが起きました。

ccm をアンインストールしてから、Python2.7のインストールして、再び pip2 install ccmccm をインストールしたところ問題なく動きました。

そのため2系に依存しているのかと考えていましたが、poetry でPython3.8.1の環境をつくったところ動きました。

またccmではインストールや操作を簡単にしてくれますが依存するJDKはインストールしてくれません。自分でsdkmanなどで準備する必要があります。

1
2
3
4
5
6
7
# install python2.7
# Open Java 8.0 with sdkman
$ sudo apt-get install python
$ curl https://bootstrap.pypa.io/get-pip.py \
    | python2.7 /dev/stdin
$ pip2 install -U pip
$ pip2 install ccm

またはpoetryを使ってください。

1
2
3
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py \
    | python /dev/stdin --yes --no-modify-path
$ poetry add ccm

つかってみる

ccmは検証用にローカルにノードを立ち上げます。その時に使われるデバイスはループバックデバイスです。 ccmは末尾が1のアドレスから昇順でバインドを試みます。 そのためループバックデバイスでIPエイリアスを設定しないとなりません。次のようにipコマンドを使ってください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# クラスタ定義
$ ccm create example -v 3.11
# クラスタにノード数を設定
$ ccm populate -n 3
# ノード分のIPをループバックデバイス(lo)に設定
$ ip address add 172.0.0.1/8 dev lo
$ ip address add 172.0.0.2/8 dev lo
$ ip address add 172.0.0.3/8 dev lo
# クラスタ起動
$ ccm start
# クラスタの状態確認
$ ccm status
# ノード1を落とす
$ ccm node1 down
# ノード2にcqlshで接続する
$ ccm node2 cqlsh

ref.

comments powered by Disqus