アクティブ/アクティブ高可用性での 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