目次
はじめに
Verticaは、3ノード以上の構成であれば、いずれかのノードがダウンした場合もサービスを継続(*)できます。バッチ処理は、データのロードを長時間おこなうため、ロード中に障害でノードがダウンする事も考えられます。本記事では、ロード中にノードダウンが発生した場合の動作を解説します。(*)Verticaの可用性機能
http://vertica-tech.ashisuto.co.jp/data_fault_tolerant/
Verticaの構成について
Verticaの複数ノード構成は、3ノードのケースが多いため、構成は以下のとおりとします。項目名 | 条件 |
---|---|
ノード数 | 3 |
K-Safety | 1 |
接続先ノード | ETLサーバからの最初の接続先は、ノード1とします。 |
障害発生パターンごとの動作
ロード処理が始まる前にVerticaがノードダウンしている場合やロード処理中にノードダウンしてしまった場合などが考えられます。本記事では、以下の4パターンを解説します。①接続先ノードがダウン中の場合
障害発生状況
ノード1がダウン中に、ETLサーバからロード処理が実行されました。ノード名 | ステータス |
---|---|
ノード1 | DOWN |
ノード2 | UP |
ノード3 | UP |
実行結果
接続時フェイルオーバー(*)が設定されている場合は、接続先がノード2(またノード3)に変更されて、ロード処理が実行されます。接続時フェイルオーバーが設定されていない場合は、ノード1に接続できずエラー(例:”vsql: could not connect to server: 接続を拒否されました”)となり、ロード処理が開始されません。(*)接続時フェイルオーバーの概要
http://vertica-tech.ashisuto.co.jp/failover/
②接続先以外のノードがダウン中の場合
障害発生状況
ノード2がダウン中に、ETLサーバからロード処理が実行されました。ノード名 | ステータス |
---|---|
ノード1 | UP |
ノード2 | DOWN |
ノード3 | UP |
実行結果
接続時フェイルオーバーが設定されているかどうかに関わらず、ロード処理は実行されます。③ロード処理中に接続先ノードがダウンした場合
障害発生状況
ETLサーバからロード処理が実行中に、ノード1がダウンしました。ノード名 | ステータス |
---|---|
ノード1 | ロード処理中にDOWN |
ノード2 | UP |
ノード3 | UP |
実行結果
接続時フェイルオーバーが設定されているかどうかに関わらず、ロード処理はエラー(例:”server closed the connection unexpectedly”)になり、ロールバックされます。④ロード処理中に接続先以外のノードがダウンした場合
障害発生状況
ETLサーバからロード処理が実行中に、ノード2がダウンしました。ノード名 | ステータス |
---|---|
ノード1 | UP |
ノード2 | ロード処理中にDOWN |
ノード3 | UP |
実行結果
接続時フェイルオーバーが設定されているかどうかに関わらず、ロード処理はエラー(例:”ERROR 4142: Node failure during execution”)になり、ロールバックされます。ノード1とは、別のノード2もしくはノード3がノードダウンした場合も、ロード処理は失敗します。参考情報
リカバリ中の「ロードバランス」と「接続時フェイルオーバー」の動作についてhttp://vertica-tech.ashisuto.co.jp/recovery_action/
検証バージョンについて
この記事の内容はVertica 12.0で確認しています。更新履歴
2023/07/04 「はじめに」の表現を修正2023/06/16 本記事を公開
- 投稿タグ
- セッション, 接続中, 接続時フェイルオーバー