ambassadorを利用してRethinkDBに繋がらない?


CoreOS上でのRethinkDBアップデートでつまづいた。。。

  • 前提

CoreOSを利用していて、UnitでRethinkDBを利用している場合

RethinkDBを2.1系から2.3系へバージョンアップしたかったが、下記のような、rethinkdb及びコンテナ間接続に要するambassadorを利用している場合に接続障害が発生した。

rethinkdb.service
[Unit]
Description=RethinkDB
After=docker.service
Requires=docker.service

[Service]
EnvironmentFile=/etc/environment
TimeoutStartSec=0
Restart=always
ExecStartPre=/usr/bin/docker pull rethinkdb:2.3
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStartPre=/usr/bin/mkdir -p /srv/rethinkdb
ExecStartPre=/usr/bin/chattr -R +C /srv/rethinkdb
ExecStart=/usr/bin/docker run --rm \
  --name %p \
  -v /srv/rethinkdb:/data \
  -e "AUTHKEY=xxxxxxxxxx" \
  --net host \
  -p 8080:8080 \
  -p 28015:28015 \
  -p 29015:29015 \
  rethinkdb:2.3 \
  rethinkdb --bind all \
    --cache-size 4096
ExecStop=-/usr/bin/docker stop -t 10 %p

[X-Fleet]
MachineMetadata="role=db"
rethinkdb-proxy-2015.service
[Unit]
Description=RethinkDB proxy/28015
After=docker.service rethinkdb.service
Requires=docker.service

[Service]
EnvironmentFile=/etc/environment
TimeoutStartSec=0
Restart=always
ExecStartPre=/usr/bin/docker pull ctlc/ambassador:latest
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStart=/usr/bin/docker run --rm \
  --name %p \
  -e "AUTHKEY=xxxxxxxxxx" \
  -p 28015 \
  -e RETHINKDB_PORT_28015_TCP=tcp://d001.example.com:28015 \
  ctlc/ambassador:latest
ExecStop=-/usr/bin/docker stop -t 10 %p

[X-Fleet]
Global=true
MachineMetadata="role=app"

エラー内容

log
INF/db 1 [*] Connecting to 192.168.255.2:28015
INF/db 1 [*] Unable to connect to 192.168.255.2:28015
FTL/db 1 [*] No hosts left to try
FTL/util:lifecycle 1 [*] Shutting down due to fatal error

ambassadorを通しての接続が出来ない模様。

AUTHKEYとして設定してあるパスワードも設定を施行しようも下記エラーが出てしまう

"It's illegal to delete rows from the rethinkdb.cluster_config table."

解決

どうやら、RethinkDB2.3系からAUTHKEYの設定方法が変わったようだ。

Alternatives to RethinkDB 2.3 auth

r.db('rethinkdb').table('users').get('admin').update({password:'xxxxxxxxxx'})`

接続できた。。。