アクティブ/アクティブ高可用性での GEO の設定
ESC アクティブ/アクティブ HA は、1 つのデータセンターに 3 つの VM をクラスタとして備えています。2 番目のデータセンターは、GEO HA で構成されています。
GEO で事前定義されている 6 つのロールは次のとおりです。
-
init:geo サービスの初期ロールを意味します。 -
pre_primary -
primary -
pre_secondary -
secondary -
unknown:consul に到達できない場合に使用されます。
GEO は、ロールを別のロールに変更できます。移行は esc-config. yaml で定義されます。各移行は、次の 3 つの部分に分かれています。
-
from:現在のロール -
goto:移行先のロール -
condition:GEO がロールを変更する条件
移行条件
A/A HA GEO の起動時、プライマリデータセンターの状態は、init、 pre_primary、primary の順に移行する必要があります。一方、セカンダリデータセンターの場合は、init、pre_secondary、secondary の順に状態が移行する必要があります。プライマリデータセンターとセカンダリデータセンターの両方で、すべての ESC
VM の正常性チェックに合格した場合、ESC A/A HA GEO は稼働中です。使用する準備が整いました。
条件関数
サポートされているすべての条件関数を次に示します。
-
return:何も実行せずに引数を返します。 -
and:すべての引数が true の場合に true を返します。 -
or:引数のいずれかが true の場合に true を返します。 -
len:引数の長さを返します。 -
equals:すべての引数が等しい場合に true を返します。 -
true:python の真理値に対して args をテストできる場合に true を返します。 -
false:「true」の逆を意味します。
プライマリデータセンターでの GEO 設定のサンプルを次に示します。
on_init: consul start
on_primary: start
on_secondary: stop
on_stop: consul stop
startup: manual
transitions:
- condition:
return:
and:
- equals:
- len: service1
- 3
- equals:
- len: service2
- 3
rise: 3
service1:
dc: dc1
name: consul_agent
passing: true
type: service
service2:
dc: dc2
name: geo
passing: true
type: service
from: init
goto: primary
- condition:
fall: 2
return:
equals:
- len: service
- 3
service:
dc: dc1
name: consul_agent
from: primary
goto: secondaryセカンダリデータセンターでの GEO 設定のサンプルを次に示します。
on_init: consul start
on_primary: start
on_secondary: stop
on_stop: consul stop
startup: manual
transitions:
- condition:
return:
and:
- equals:
- len: service1
- 3
- equals:
- len: service2
- 3
rise: 3
service1:
dc: dc1
name: consul_agent
passing: true
type: service
service2:
dc: dc2
name: geo
passing: true
type: service
from: init
goto: secondary
- condition:
fall: 2
return:
equals:
- len: service
- 3
service:
dc: dc1
name: consul_agent
from: secondary
goto: primary
フィードバック