TiDB Operator - 自動フェイルオーバー

自動フェイルオーバーの準備

自動フェイルオーバーとは

TiDBクラスター内のノードが何らかの理由で動作しない障害が発生した場合、TiDBが自動的に新しいノードを追加し、クラスターの可用性を保証するようである。

自動フェイルオーバーテスト

テストでは、2つのTiDBサーバープロセスのうち1つをKillし、自動復旧するか確認してみる。

まず、tidb-serverプロセスを確認する。

]$ ps -ef | grep tidb-server | grep -v grep
kimkc    14506 14429  0 11:53 pts/0    00:00:22 /home/kimkc/.tiup/components/tidb/v6.1.0/tidb-server -P 4000 --store=tikv --host=127.0.0.1 --status=10080 --path=127.0.0.1:2379,127.0.0.1:2382,127.0.0.1:2384 --log-file=/home/kimkc/.tiup/data/TLr4XQE/tidb-0/tidb.log
kimkc    14508 14429  0 11:53 pts/0    00:00:26 /home/kimkc/.tiup/components/tidb/v6.1.0/tidb-server -P 4001 --store=tikv --host=127.0.0.1 --status=10081 --path=127.0.0.1:2379,127.0.0.1:2382,127.0.0.1:2384 --log-file=/home/kimkc/.tiup/data/TLr4XQE/tidb-1/tidb.log

ポート番号4001のプロセスを強制終了してみる。

$ kill -9 14508
[kimkc@localhost ~]$ ps -ef | grep tidb-server | grep -v grep
kimkc    14506 14429  0 11:53 pts/0    00:00:22 /home/kimkc/.tiup/components/tidb/v6.1.0/tidb-server -P 4000 --store=tikv --host=127.0.0.1 --status=10080 --path=127.0.0.1:2379,127.0.0.1:2382,127.0.0.1:2384 --log-file=/home/kimkc/.tiup/data/TLr4XQE/tidb-0/tidb.log
[kimkc@localhost ~]$

TiDBサーバープロセスの1つが停止し、1つだけ残っていることが確認できる。少し待ってみる。

しばらく待っても復旧しない。

[kimkc@localhost ~]$ ps -ef | grep tidb-server | grep -v grep
kimkc    14506 14429  0 11:53 pts/0    00:00:27 /home/kimkc/.tiup/components/tidb/v6.1.0/tidb-server -P 4000 --store=tikv --host=127.0.0.1 --status=10080 --path=127.0.0.1:2379,127.0.0.1:2382,127.0.0.1:2384 --log-file=/home/kimkc/.tiup/data/TLr4XQE/tidb-0/tidb.log
[kimkc@localhost ~]$

単純に、基本機能だけでは復旧しないことが分かる。

TiDB Operator

自動フェイルオーバーには、TiDB Operatorという別のツールが追加で必要である。

TiDBクラスターをKubernetesクラスターで管理し、関連作業を自動化するツールのようである。これがあることで、TiDBは真のクラウドネイティブになれるようである。