こんにちは。サイオステクノロジーの高田です。
近年システムの構築や運用を容易するために構成管理ツールを利用されるケースが多くなってきていると思います。その中でも特にAnsibleは多くの環境でも利用されているように見受けられます。システム構築・運用担当者のための手間とミスを減らすHAクラスタ自動構築の方法を紹介します。
LK CLIを使った自動構築のメリット
システムの冗長化を提供するLifeKeeperもGUIだけでなくコマンド(LK CLI)でのクラスター構築を可能となるようにアップデートを重ねてきました。
今回は、このLK CLIをAnsibleから実行してLifeKeeperのシステム構築を自動化してみます。LifeKeeperの作業だけでなくインフラからアプリまでのシステム構築の全てをAnsibleで自動構築します。事前に準備しておくサーバーはAnsibleサーバー(コントローラーノード)だけです。インフラはAWS環境を利用します。アプリケーションはOracle Databaseです。これにより作業ミスと作業の工数を減らしながら、クラスタシステムの構築が可能になります。
スクリプト(AnsibleのPlaybook)を実行すると以下の構成を自動的に作成することが可能です。
システム構成
- 東京リージョンでVPCを構成(アベイラビリティゾーンは3つ)
- EC2インスタンスは4つ(RedHat Entperprise Linux 7系)
- 踏み台兼NAT用インスタンス(以下踏み台) … host名: lk-ora-bastion
- Quorum/Witness用インスタンス … host名: lk-ora-qw
- Oracle用インスタンス1 … host名: lk-ora-oracle01
- Oracle用インスタンス2… host名: lk-ora-oracle02
- 保護対象のアプリケーションはOracle Database 19c
- 共有領域はDataKeeper for Linuxでミラーリング
- LifeKeeperのバージョンは、LifeKeeper for Linux v9.5.1
- EC2 ARKのルートテーブルシナリオを利用して、仮想IPを冗長化
Ansibleのコントローラーノードの準備やPlaybookの準備や実行の詳細については、以下URLのガイドを参照してください。
→https://mk.sios.jp/BC_Ansible-lkcli-manual
作業の流れやその他の記載内容については以下の通りです。
- Ansibleのコントローラーノードの設定前提
- Ansibleで AWS の操作を実行するための用意
- Ansibleの Playbook の実行の準備
- Ansibleの Playbook の実行
<その他>
・トラブルシューティング
・Ansible実行後の設定状況の確認
・カスタマイズについて
・Ansibleの Playbook で作成した環境の一括削除
スクリプト(AnsibleのPlaybook)の構成内容について
スクリプト(AnsibleのPlaybook)の構成要素について、説明します。
<基本構成>
aws-LifeKeeper-oracle.yml : 実行するPlaybook本体 |
各ロールは、基本的に以下のような構造となっています。
roles/分類名/機能名/操作名/tasks/main.yml
ロールによっては、defaults, templates ディレクトリを持つものがあります。
defauls/main.yml内で定義する変数は、当該ロール中で明示的に変数が存在しない場合にデフォルト値として指定する変数となります。
変更可能な項目(パラメーター)
ホスト名やサブネットなど変更可能なパラメーターを用意しています。パラメーターで変更な項目は以下の通りです。
パラメーターの指定方法については、ガイドを参照してください。
- Oracle接続用に使用する仮想IPアドレス(VIP)
VPCに割り当てるIPアドレスの範囲外のプライベートアドレスを使用します - Activeノード、Standbyノードのホスト名、IPアドレス
- OracleのORACLE_HOME及びデータファイルの位置
本例では ORACLE_HOMEを/u01/app/oracle/product/19.3.0/dbhome_1、データファイルを /u01/app/oracle/oradata としています - OracleのSID
※サブネットは、publicを1つ、privateを3つ、コミュニケーションパス用のprivateを3つ作成しています
※各サブネットで利用するIPアドレスブロックも併せて決定します
※他にも変更可能なパラメーターあり
Playbookをお客様にて変更/カスタマイズすることも可能です。環境や構成にあわせて変更して利用いただいても構いません。
AnsibleのPlaybookの実行
準備が完了したらAnsible実行環境で以下のコマンドを利用し、Playbookを実行します。
test@testpc: $ ansible-playbok aws-LifeKeeper-oracle.yml |
以下の全てを有効(true)にしている場合、全てのタスクを実行します。
do_oracle_install |
do_clone_oracle_instance |
do_lifekeeper_install |
do_lifekeeper_create_resource |
lk_resource_create_datakeeper |
lk_resource_create_datakeeper |
lk_resource_create_ec2_ark |
lk_resource_create_oracle_ark |
全てのタスクが完了すると、以下のような状態のインスタンスが作成されます。
・踏み台ホスト 1台
・Oracle用インスタンス 2台
Oracle及びLifeKeeperがインストールされ、Oracleリソースを頂点とする各種リソースが作成されます。
・Quorum/Witnessサーバ 1台
Oracle用インスタンス 2台との間でコミュニケーションパスが作成された状態となります。
実行完了後、全てのタスクに成功すると、以下のような出力が表示されます。
TASK [lifekeeper/run-lifekeeper-setup-script : debug] ************************** |
LifeKeeperのGUI画面としては、以下のように表示されます。
クラスタ環境の自動構築に興味がある方は是非試してみてください。