概要

本ガイドは、設定ファイルを元に 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 のインストールイメージとライセンスの準備

  1. LifeKeeper のインストールイメージとライセンスを取得してください。

製品購入済みのお客様用
LifeKeeper 製品のソフトウェアをダウンロード
https://download.sios.com/

評価目的のお客様用
評価版ダウンロード
https://sios.jp/products/lkdk/product/evaluation_lk.html

 

LifeKeeper のインストール用のレスポンスファイルの準備

LifeKeeper をインストールするためには、インストール用のレスポンスファイルが必要です。既にレスポンスファイルをお持ちの方は、この項目をスキップしてください。本ガイドでは、control-nodeマシンで、レスポンスファイルを作成します。

  1. 以下のダウンロード先から create_response_file スクリプトを入手してください。

自動インストール用設定 作成ツール

  1. レスポンスファイルのファイル名を指定して、create_response_file スクリプトを実行します。
# ./create_response_file /root/lifekeeper/LKCONF
  1. create_response_file スクリプトを起動すると、以下のメニュー画面が表示されます。

  1. 必要な設定を選択してださい。
  • Install Java Runtime (JRE) の選択
  • Recovery Kit Selection Menu でインストールしたい Recovery Kit の選択
  1. 設定後、< Done > を選択してください。その後、< Yes > を選択し終了します。

  1. 生成された 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"

 

取得した各ファイルの配布とディレクトリーの指定

  1. 取得したインストールイメージとすべてのクラスタノードのライセンスと事前に作成したレスポンスファイルを control-node マシンへ配布してください。以下は、取得した各ファイルのディレクトリ構成例です。

/root/lifekeeper/
   ├sps.img : LifeKeeper のインストールイメージ
   ├LKCONF : LifeKeeper のサイレントインストール用のレスポンスファイル
   └ licenses/
      ├target1/ : target1 のライセンスファイル群
      └target2/ : target2 のライセンスファイル群

inventory

[targets]
target1
target2
  1. 使用するディレクトリーを指定してください。

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 がインストールされたマシンが作成されます。

フィードバック

フィードバックありがとうございました

このトピックへフィードバック

送信