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は真のクラウドネイティブになれるようである。