複数のサーバやコンテナの環境上において,
オーケストレーション
クラウドの広がりと共にオーケストレーション
このようなオーケストレーションという表現は抽象的ですので,
- アプリケーションやミドルウェアを自動インストール
(デプロイ) したい - インストール済みのソフトウェアのバージョンを確認したい
- 各々のサーバのload averageや,
CPUやメモリリソースの利用状況を確認したい - コマンドを一斉実行し,
デーモンやプログラムの再起動を行いたい
クラウドや仮想化が広範囲に展開する前は,
これらは管理対象のサーバ台数が少なければ,
Consulが提供するオーケストレーション機能
Consulが持つ機能は,
コマンド実行のトリガは,
初期のConsulにはSerfの機能は内部的にしか使用されておらず,
表1 Serf/
同時実行コマンド | 結果取得コマンド | |
---|---|---|
Consul | consul event | consul exec |
Serf | serf event | serf query |
これらはChefやPuppetのような構成管理ツールを使うような状況と似ていますが,
Consulのイベントハンドラ
Consulのオーケストレーションと呼ばれる機能の実体は,
リモートでコマンドを実行するConsul exec
Consulには,serf query
を実行した時と同様の処理です。
Consulクラスタ上でコマンドを実行するには,consul exec
を実行します。実行するのはクラスタ内のどのサーバでも構いませんし,
たとえば,uptime
コマンドを実行した結果を知りたい場合はconsul exec uptime
と実行します。
$ consul exec uptime server: 17:17:16 up 2 days, 7:08, 2 users, load average: 0.01, 0.03, 0.00 server: ==> server: finished with exit code 0 node1: 18:48:36 up 3 days, 5:26, 0 users, load average: 0.00, 0.00, 0.00 node1: ==> node1: finished with exit code 0 node2: 19:03:11 up 2 days, 4:31, 1 user, load average: 0.00, 0.00, 0.00 node2: ==> node2: finished with exit code 0 3 / 3 node(s) completed / acknowledged
ここでは全てのノート情報が帰ってきましたが,-node
オプションを使ってノード名を指定することができます。たとえばノード名がnode1
の結果だけを知りたい場合は,
$ consul exec -node=node1 uptime node1: 19:02:04 up 3 days, 5:40, 0 users, load average: 0.00, 0.00, 0.00 node1: ==> node1: finished with exit code 0 1 / 1 node(s) completed / acknowledged
-node
オプションの他にも,consul exec
には実行対象のノードやサービスを絞るためのオプションが提供されていますconsul exec [オプション] <コマンド>
です。
表2 execオプション
オプション | 説明 |
---|---|
-http-addr | コマンドを実行させたいConsulエージェントのHTTPアドレス。標準は127. 。ローカルだけでなく, |
-datacenter | 実行対象のデータセンター名を絞る場合に使用。 |
-prefix | リクエスト送信時,_rexec 。 |
-node | 実行対象をノード名称で絞る場合に使用 |
-service | 実行対象をサービスで絞る場合に使用 |
-tag | 実行対象をタグで絞る場合に使用 |
-wait | リモート実行時,consul exec -wait=10s <コマンド> )。 |
-wait-repl | 指定した期間待機後,-wait-reply=10s )。 |
-verbose | より詳細なメッセージの表示。 |
これを応用して,node1
という名称のサーバにnginxパッケージをyum
を使ってセットアップするには,
$ consul exec -node=node1 "sudo yum -y install nginx"
注意点は,
まとめ
consul exec
や,
次回は,consul event
やconsul watch
を使い,