この記事は#CloudGarage Advent Calendar 2018の5日目です。
前日はTomonori MachidaさんのWordPressサイトを手軽に移設してみる。でした。
明日は中の人の予定です。


皆さん、gkbrは好きですか?gkbr。僕は嫌いです。
というわけでCockroachDBのクラスタをAnsibleで作ってみました。

構成はこんな感じ
dap

フロントに1台ロードバランサー的なインスタンスが1台いて、後ろに2台のCockroachDBインスタンスがクラスタ組んで待ち構える感じ。
CockroachDBのインスタンスは22番だけ外に公開していて(Ansibleでつなぎたいから)、CockroachDBへのアクセス(8080 / 26257)へはローカルネットワークからのみアクセス可能(このあたりはCloudGarageの仕組みで勝手にできる)。

インターネッツからのアクセスは、全部フロントのインスタンスにあるHAProxyがさばいていて、443番にきたアクセスは裏のCockroachDBの8080(Web UI)に流す、26257に来たアクセスは、裏のCockroachDBのインスタンスにラウンドロビンで流す。

ような構成になっています。

ちなみにOSは全部CentOS 7.5で組んでいます。(いろんなOS上でCockroachDB動かしてクラスタ組んでみても楽しいかもしれないとか思っているのでまた今度やってみたい。CentOS + Ubuntu + Rancherとか)ちな余談現在は直ってるそうです

構築手順は、公式のデプロイマニュアルの手順をAnsibleのPlaybookに変換していった感じです。
とりあえず、AnsibleのPlaybookを未完成&一部未検証ですが、GitHubで公開しています。今後これが充実することを祈っておいてください。
ryosms/cockroach-ansible - GitHub


で、DAPでそれぞれのインスタンスを立ち上げてAnsibleのPlaybookを流したら、ブラウザでProxyサーバーにアクセスしてドーン!(Secureモードで起動しているのでこの前に認証画面が入ります。認証を突破するためにはCockroachDBのユーザーを作成しておく必要があります。

webui

WebUIからはクラスタの状態やメトリック、データベースの一覧が確認できる他、なんと、テーブルのDDLまで確認できたりします。これは便利(かもしれない)です。
database


それでは、クラスタが構成できたので、いろんなツールを動かして遊んでみます!
と行きたかったのですが、PostgreSQL用のツールがだいたい動かずに心が折れたのでこれ以上はやっていません。(まぁ、完全PostgreSQL互換なんだったらポートも5432を使いますわな #知らんけど
そのあたりの話はqrunchに書きました。
CockroachDBはPostgreSQLのドライバで接続できるけどPostgreSQL互換ではない - qrunch


なお、CockroachDBについて注意点があります。これはガチで精神をやられる可能性があるので、本当に注意してください。



P.S. DAPだとインスタンスが3台 使えるのでこういうことやるのが楽でいいですね。本当にありがとうございます。

現場からは以上です。