YugaByteDB(2) Rookを使ったインストール


この記事は「RookだらけのAdvent Calender」11日目の記事です。

昨日分は概要ということで、Rookのストレージ・プロバイダーとしてYugaByteDBが入っている意味や、データベースとしてのアーキテクチャなどを簡単に解説しました。

本日からは実際にYugaByteDBをさわっていきますが、まずはRookを使ってインストールしていきます。

Rook quick start -YugaByteDB-

インストールの前提条件として、以下が必要になります。

  • Kubernetesクラスタ
  • 3台以上のWorker Node
  • standardの名前で利用可能なStorageClass ※クラウドストレージが使いやすいはず。

上記はcluster.yamlを修正する場合には必須ではありませんが、デフォルトのyamlをapplyする際には確認しておきましょう。

準備が出来ていれば、quick startに書いてある通りにインストールを進めます。

インストールは簡単

YugaByteDBのRook対応は現時点でシンプルなので、インストール自体も簡単、2つのYAMLをapplyするだけです。

$ kubectl apply -f cluster/examples/kubernetes/yugabytedb/operator.yaml
$ kubectl apply -f cluster/examples/kubernetes/yugabytedb/cluster.yaml

これにより、rook-yugabytedb-systemとrook-yugabytedbの2つのNamespaceが切られ、OperatorおよびYugaByteDBのコンポーネントが配置されます。

KubernetesレベルでどんなPodが配置されたかを確認すると以下のようになっています。

$ kubectl get pod -n rook-yugabytedb-system
NAME                                        READY   STATUS    RESTARTS   AGE
rook-yugabytedb-operator-7f4b8c7dc5-prpk4   1/1     Running   0          1d

$ kubectl get pod -n rook-yugabytedb       
NAME                              READY   STATUS    RESTARTS   AGE
yb-master-hello-ybdb-cluster-0    1/1     Running   0          1d
yb-master-hello-ybdb-cluster-1    1/1     Running   0          1d
yb-master-hello-ybdb-cluster-2    1/1     Running   0          1d
yb-tserver-hello-ybdb-cluster-0   1/1     Running   0          1d
yb-tserver-hello-ybdb-cluster-1   1/1     Running   0          1d
yb-tserver-hello-ybdb-cluster-2   1/1     Running   0          1d

何が出来たか

先ほどのPodを確認すると、YugaByteDBの2種類のプロセスが確認できます。

  • YB-Master process ・・・メタデータの管理や操作の振分けを担当
  • YB-TServer process ・・・テーブルデータの保持/提供を担当

詳しい用語の解説はこちらの公式ドキュメントに記載があります。

MasterおよびTServerではメタデータ/ユーザデータを3重に分散して持ち、RaftによりLeader-Followerを決定しています。

上記の用語を抑え、Kubernetes上のNodeに分散配置されたYugaByteDBのプロセスを図示すると下図のようになります。それぞれのPodにはPersistentVolumeが接続されています。

YugaByteDBへの接続

構築が完了したYugaByteDBには、YB-TServerのPodにkubectl execで接続し、そこからysqlshというクライアントツールでログインします。
※ysqlshはPostgreSQLのpsqlに相当するものと考えて下さい。

(kubectlとysqlshを使った接続の例)

$ kubectl -n rook-yugabytedb exec -it yb-tserver-hello-ybdb-cluster-0 /home/yugabyte/bin/ysqlsh -- -h yb-tserver-hello-ybdb-cluster-0  --echo-queries

ysqlsh (11.2)
Type "help" for help.

postgres=# 

見て頂くと分かるとおり、ysqlshの表示内容はpsqlそのものです。

Web UIも同時に起動される

YugaByteDBをRookでインストールすることで、管理用のユーザインタフェースも同時に導入されます。

こちらの利用にはKubernetes環境に応じたServiceのセットアップが必要になりますので、こちらを参考に設定して下さい。

まとめ

ここまでRookでYugaByteDBをインストールし、CLIとUIでの接続を試してきました。
明日からは実際にテーブルを作成し、データを入れた後にSQLクエリの実行を行っていきます。

よろしくお願いします。