ambassadorを利用してRethinkDBに繋がらない?
CoreOS上でのRethinkDBアップデートでつまづいた。。。
- 前提
CoreOSを利用していて、UnitでRethinkDBを利用している場合
RethinkDBを2.1系から2.3系へバージョンアップしたかったが、下記のような、rethinkdb及びコンテナ間接続に要するambassadorを利用している場合に接続障害が発生した。
[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"
[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"
エラー内容
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'})
接続できた。。。