概要
本ガイドは、設定ファイルを元に Ansible で、複数ノードに LifeKeeper をインストールする手順を記載しています。
主に、既に Ansible をご利用しているユーザーが、ご自身の環境に LifeKeeper のインストールを追加する際に参照して頂くことを想定しています。
そのため、本ガイドでは、実際の Ansible のタスクのサンプルを記載しています。
お客様自身でプレイブックをお持ちであれば、設定値などは環境に応じて変更してご活用ください。
環境
ここでは2ノード構成を作成します。
OS: CentOS 8.0
Python: 3.6.8
Ansible: 2.9.9
LifeKeeper: 9.5.1
LifeKeeper をインストールするターゲットのセットアップ
ホスト名と名前解決サービスの設定
LifeKeeper は、クラスター内のターゲットを名前解決できる必要があります。
その為、DNS サービスまたは、/etc/hosts を設定してクラスター間で名前解決できるように設定してください。
本ガイドでは、各 /etc/hosts を設定しています。以下で、設定を変更できます。
hosts.yml
--- # /etc/hostsにansibleを実行対象のホストをすべて登録する - name: update /etc/hosts lineinfile: dest: /etc/hosts state: present insertafter: EOF regexp: "^{{ item.address }}" line: "{{ item.address }}\t{{ item.hostname }}" with_items: - address: "10.1.6.88" hostname: "target1" - address: "10.1.6.89" hostname: "target2" - address: "10.1.6.87" hostname: "control-node"
Firewall の設定
Firewall が有効の場合、各ターゲットで Firewall の設定が必要です。
LifeKeeper では、ターゲット間で TCP の 7365 ポートを利用して通信します。
本ガイドでは、そのポートを、default の public ゾーンに設定しています。
firewall.yml
--- - name: enable lifekeeper port firewalld: zone: public port: 7365/tcp permanent: yes state: enabled register: firewalld - name: reload command: firewall-cmd --reload when: firewalld.changed
SELinux の設定
LifeKeeper を使用するには、SELinux を disabled にする必要があります。
以下で、設定を変更できます。
selinux.yml
--- - name: disable SELinux become: yes selinux: state=disabled register: selinux - name: reboot a node become: yes reboot: when: selinux.reboot_required
LifeKeeper のインストールイメージとライセンスの準備
- LifeKeeper のインストールイメージとライセンスを取得してください。
製品購入済みのお客様用
LifeKeeper 製品のソフトウェアをダウンロード
https://download.sios.com/
評価目的のお客様用
評価版ダウンロード
https://sios.jp/products/lkdk/product/evaluation_lk.html
LifeKeeper のインストール用のレスポンスファイルの準備
LifeKeeper をインストールするためには、インストール用のレスポンスファイルが必要です。既にレスポンスファイルをお持ちの方は、この項目をスキップしてください。本ガイドでは、control-nodeマシンで、レスポンスファイルを作成します。
- 以下のダウンロード先から create_response_file スクリプトを入手してください。
- レスポンスファイルのファイル名を指定して、create_response_file スクリプトを実行します。
# ./create_response_file /root/lifekeeper/LKCONF
- create_response_file スクリプトを起動すると、以下のメニュー画面が表示されます。
- 必要な設定を選択してださい。
- Install Java Runtime (JRE) の選択
- Recovery Kit Selection Menu でインストールしたい Recovery Kit の選択
- 設定後、< Done > を選択してください。その後、< Yes > を選択し終了します。
- 生成された LKCONF ファイルを確認し、設定が正しいことを確認してください。以下の例は、Oracle、PostgreSQL、MySQL、DataKeeper for Linux、Apache Recovery Kits を選択した場合のレスポンスファイルの例です。
# LifeKeeper setup response file # DO NOT EDIT MANUALLY LKCONF_INSTALL_JRE="y" LKCONF_SELONLY="y" LKCONF_AUTH="y" LKCONF_LKUSER_lkadmin="root" LKCONF_steeleye_lkORA="y" LKCONF_steeleye_lkPGSQL="y" LKCONF_steeleye_lkSQL="y" LKCONF_steeleye_lkDR="y" LKCONF_steeleye_lkAPA="y"
取得した各ファイルの配布とディレクトリーの指定
- 取得したインストールイメージとすべてのクラスタノードのライセンスと事前に作成したレスポンスファイルを control-node マシンへ配布してください。以下は、取得した各ファイルのディレクトリ構成例です。
/root/lifekeeper/
├sps.img : LifeKeeper のインストールイメージ
├LKCONF : LifeKeeper のサイレントインストール用のレスポンスファイル
└ licenses/
├target1/ : target1 のライセンスファイル群
└target2/ : target2 のライセンスファイル群
inventory
[targets] target1 target2
- 使用するディレクトリーを指定してください。
defaults/main.yml
--- # control-node側でインストールに必要なファイルを保存しておくディレクトリ control_node_dir: /root/lifekeeper # ターゲット側でインストールに一時的に必要なファイルを保存しておくディレクトリ target_dir: /tmp/lifekeeper # ターゲット側でインストールイメージのマウントディレクトリ target_mnt: /mnt
以下の処理は各ターゲットで実行されるようにしてください。
LifeKeeper のインストールイメージとライセンスとレスポンスファイルの配布
deploy.yml
--- - name: deploy to lifekeeper install files copy: src: "{{ control_node_dir }}/" dest: "{{ target_dir }}"
LifeKeeperのインストールイメージのマウント
mount.yml
--- - name: mount setup image mount: path: "{{ target_mnt }}" src: "{{ target_dir }}/sps.img" fstype: iso9660 state: mounted
LifeKeeper のインストール
install.yml
--- - name: install lifekeeper shell: # setupを直接実行すると失敗します。 cmd: script -q -e -c "{{ target_mnt | quote }}/setup -f {{ target_dir | quote }}/LKCONF -q y" {{ target_dir | quote }}/lifekeeper_install.log
LifeKeeper の環境変更の追加
bash_profile.yml
--- - name: update lifekeeper PATH in bash_profile blockinfile: path: /root/.bash_profile marker: "# {mark} ANSIBLE MANAGED BLOCK: LifeKeeper" block: | PATH=$PATH:/opt/LifeKeeper/bin MANPATH=$MANPATH:/opt/LifeKeeper/man export PATH MANPATH
LifeKeeper のライセンスのインストール
license.yml
--- - name: install lifekeeper license shell: cmd: | for file in `ls`; do /opt/LifeKeeper/bin/lkcli license --file $file done chdir: "{{ target_dir }}/licenses/{{ inventory_hostname }}"
LifeKeeper の起動
lkstart.yml
--- - name: start lifekeeper command: /opt/LifeKeeper/bin/lkcli start - name: lifekeeper status command: /opt/LifeKeeper/bin/lkcli status
LifeKeeper のセットアップ後、不要なファイルの削除
clean.yml
--- - name: unmount a mounted lifekeeper image mount: path: "{{ target_mnt }}" state: absent - name: delete lifekeeper files file: path: "{{ target_dir }}" state: absent
Ansible Playbook の例
前のセクションに記載された全てのタスクファイルを作成し、それらのタスクファイルを組み合わせることで以下の例に示すような Playbook を作成できます。
deploy_lifekeeper.yml
--- - name: deploy and install lifekeeper on all targets hosts: targets tasks: - include_vars: main.yml - include_tasks: hosts.yml - include_tasks: firewall.yml - include_tasks: selinux.yml - include_tasks: deploy.yml - include_tasks: mount.yml - include_tasks: install.yml - include_tasks: bash_profile.yml - include_tasks: license.yml - include_tasks: lkstart.ym l - include_tasks: clean.yml
この Playbook の例は、下記のコマンドを root として実行するか、既存の Ansible Playbook に追加することができます。
# ansible-playbook deploy_lifekeeper.yml -i inventory
本ガイドに記載されている全ての Ansible タスクが実行されると、Ansible はインベントリファイルで指定された全てのクラスターノードに LifeKeeer をセットアップすることができます。
ここまでの手順で、LifeKeeper がインストールされたマシンが作成されます。
このトピックへフィードバック