JP1/AJS3 V11.5評価版を動かしてみよう(4)〜クラスタ構成(Red Hat High Availability Add-Onの構築)
JP1/AJS3は高可用性が求められるシステムのために、クラスタ構成がとれるようになっている。といっても、JP1/AJS3自体がなにかしてくれるわけではなく、サードパーティのクラスタソフトにリソースとして登録して、フェイルオーバーさせるというもので、公式のドキュメントに記載があるクラスタ構成は以下のようなものだ。
JP1/AJS3におけるクラスタ構成
ManagerはManagerで、AgentはAgentでそれぞれ待機系を用意して、クラスタソフトを利用してフェイルオーバーするというもの。間にある共有ディスクにジョブやイベントの情報を保存しておくことで、フェイルオーバー後も正しく業務を継続できるという理屈である。
2.2.3 クラスタシステムでの構成例 : JP1/Automatic Job Management System 3 設計ガイド(システム構築編)
ただし、ここに書かれている「クラスタソフト」というのは、サードパーティのMWのことを指している。つまり、JP1/AJS3以外にクラスタソフトを買う必要があるということだ。
現在サポートされているクラスタソフトはこちらに記載がある。
例えばRHEL 7で言えば以下のような顔ぶれである。Excelファイルの列で言うと左から順に並べてみたが、特に辞書順というわけでもなさそうなので、HITACHIの意志入れがあるのかもしれない。
- Lifekeeper
- CLUSTERPRO
- PRIMECLUSTER
- VERITAS Cluster Server
- Symantec Cluster Server
- Red Hat High Availability Add-On
- HAモニタ
- DNCWARE
- ClusterPerfect
- ApplicationHA
こちらにもあるようにCLUSTERPROに限りJP1とCLUSTERPROのセットをAWSで評価するキット一式をさわらせてもらえるらしい。
CLUSTERPROとJP1の評価キット:統合システム運用管理 JP1:日立
ほとんどの製品については、評価版を利用するためには登録の上、数営業日後にライセンスキーが提供されるようになっているようなので、ここではすぐに利用できるRed Hat High Availability Add-Onを例にとって、JP1/AJS3のクラスタ構成を構築する
Red Hat High Availability Add-Onの構築
ホスト名jm01とjm02のクラスタ構成を考える。それぞれこちらの記事*1にしたがってRHEL 7を用意し、subscription登録を済ませておく。
jm02の構築
jm01はこちら*2で用意済みなので、jm02についても環境を揃える。
timezoneとlocaleの設定
[root@jm02 ~]# timedatectl set-timezone Asia/Tokyo [root@jm02 ~]# localectl set-locale LANG=ja_JP.utf8 [root@jm02 ~]# source /etc/locale.conf
サブスクリプション登録
[root@jm02 ~]# subscription-manager register --auto-attach 登録中: subscription.rhsm.redhat.com:443/subscription ユーザー名: xxxxxxxxx パスワード: このシステムは次の ID で登録されました: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX インストール済み製品の現在の状態: 製品名: Red Hat Enterprise Linux Server 状態: サブスクライブ済み [root@jm02 ~]#
/etc/hostsの設定
jm01とjm02で互いに名前解決ができるように/etc/hostsに設定を入れておく。
jm01やjm02としてしまうと、ループバックアドレスが引かれてしまい、クラスタ構成が正しく構築できないので、それぞれ物理IPには末尾にあえてpを付けた。
- jm01の物理IP 192.168.100.11(jm01p)
- jm02の物理IP 192.168.100.12(jm02p)
- クラスタのリソースとする仮想IP 192.168.100.10(jm00v)
jm01の/etc/hosts
[root@jm01 ~]# cat /etc/hosts 127.0.0.1 jm01 jm01 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.11 jm01p 192.168.100.12 jm02p 192.168.100.10 jm00v
jm02の/etc/hosts
[root@jm02 ~]# cat /etc/hosts 127.0.0.1 jm02 jm02 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.11 jm01p 192.168.100.12 jm02p 192.168.100.10 jm00v [root@jm02 ~]#
クラスタ関連のパッケージインストール
クラスタ関連のパッケージは、DVDに含まれているのでyumのリポジトリに追加するところから始める。
DVDをyumのリポジトリに追加(jm01, jm02)
例えば、rhel-server-7.4-x86_64-dvd.isoを/mediaにマウントしたとすると、/media/addons/HighAvailability以下にクラスタ関連のパッケージが含まれているので、以下のようにリポジトリに追加する。
[root@jm01 ~]# cat /etc/yum.repos.d/dvd.repo [rhel-dvd] name=RHEL7.4 DVD baseurl=file:///media/addons/HighAvailability enabled=1 gpgcheck=1 gpgkey=file:///media/RPM-GPG-KEY-redhat-release [root@jm01 ~]#
リポジトリに追加できたら、必要なパッケージをインストールする。
[root@jm01 ~]# yum install pcs fence-agents-all 読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager (中略) インストール: fence-agents-all.x86_64 0:4.0.11-66.el7_4.3 pcs.x86_64 0:0.9.158-6.el7 依存性関連をインストールしました: OpenIPMI-modalias.x86_64 0:2.0.19-15.el7 audit-libs-python.x86_64 0:2.7.6-3.el7 autogen-libopts.x86_64 0:5.18-5.el7 avahi-libs.x86_64 0:0.6.31-17.el7 bc.x86_64 0:1.06.95-13.el7 boost-system.x86_64 0:1.53.0-27.el7 boost-thread.x86_64 0:1.53.0-27.el7 checkpolicy.x86_64 0:2.5-4.el7 cifs-utils.x86_64 0:6.2-10.el7 clufter-bin.x86_64 0:0.76.0-1.el7 clufter-common.noarch 0:0.76.0-1.el7 corosync.x86_64 0:2.4.0-9.el7 corosynclib.x86_64 0:2.4.0-9.el7 cups-libs.x86_64 1:1.6.3-29.el7 device-mapper-event.x86_64 7:1.02.140-8.el7 device-mapper-event-libs.x86_64 7:1.02.140-8.el7 device-mapper-multipath.x86_64 0:0.4.9-111.el7 device-mapper-multipath-libs.x86_64 0:0.4.9-111.el7 device-mapper-persistent-data.x86_64 0:0.7.0-0.1.rc6.el7 fence-agents-apc.x86_64 0:4.0.11-66.el7_4.3 fence-agents-apc-snmp.x86_64 0:4.0.11-66.el7_4.3 fence-agents-bladecenter.x86_64 0:4.0.11-66.el7_4.3 fence-agents-brocade.x86_64 0:4.0.11-66.el7_4.3 fence-agents-cisco-mds.x86_64 0:4.0.11-66.el7_4.3 fence-agents-cisco-ucs.x86_64 0:4.0.11-66.el7_4.3 fence-agents-common.x86_64 0:4.0.11-66.el7_4.3 fence-agents-compute.x86_64 0:4.0.11-66.el7_4.3 fence-agents-drac5.x86_64 0:4.0.11-66.el7_4.3 fence-agents-eaton-snmp.x86_64 0:4.0.11-66.el7_4.3 fence-agents-emerson.x86_64 0:4.0.11-66.el7_4.3 fence-agents-eps.x86_64 0:4.0.11-66.el7_4.3 fence-agents-hpblade.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ibmblade.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ifmib.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ilo-moonshot.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ilo-mp.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ilo-ssh.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ilo2.x86_64 0:4.0.11-66.el7_4.3 fence-agents-intelmodular.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ipdu.x86_64 0:4.0.11-66.el7_4.3 fence-agents-ipmilan.x86_64 0:4.0.11-66.el7_4.3 fence-agents-kdump.x86_64 0:4.0.11-66.el7_4.3 fence-agents-mpath.x86_64 0:4.0.11-66.el7_4.3 fence-agents-rhevm.x86_64 0:4.0.11-66.el7_4.3 fence-agents-rsa.x86_64 0:4.0.11-66.el7_4.3 fence-agents-rsb.x86_64 0:4.0.11-66.el7_4.3 fence-agents-sbd.x86_64 0:4.0.11-66.el7_4.3 fence-agents-scsi.x86_64 0:4.0.11-66.el7_4.3 fence-agents-vmware-soap.x86_64 0:4.0.11-66.el7_4.3 fence-agents-wti.x86_64 0:4.0.11-66.el7_4.3 fence-virt.x86_64 0:0.3.2-12.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 gnutls.x86_64 0:3.3.26-9.el7 gnutls-dane.x86_64 0:3.3.26-9.el7 gnutls-utils.x86_64 0:3.3.26-9.el7 gssproxy.x86_64 0:0.7.0-4.el7 ipmitool.x86_64 0:1.8.18-5.el7 keyutils.x86_64 0:1.5.8-3.el7 ldns.x86_64 0:1.6.16-10.el7 libaio.x86_64 0:0.3.109-13.el7 libbasicobjects.x86_64 0:0.1.1-27.el7 libcgroup.x86_64 0:0.41-13.el7 libcollection.x86_64 0:0.6.2-27.el7 liberation-fonts-common.noarch 1:1.07.2-15.el7 liberation-sans-fonts.noarch 1:1.07.2-15.el7 libevent.x86_64 0:2.0.21-4.el7 libini_config.x86_64 0:1.3.0-27.el7 libldb.x86_64 0:1.1.29-1.el7 libnfsidmap.x86_64 0:0.25-17.el7 libpath_utils.x86_64 0:0.2.1-27.el7 libpcap.x86_64 14:1.5.3-9.el7 libqb.x86_64 0:1.0.1-5.el7 librados2.x86_64 1:0.94.5-2.el7 libref_array.x86_64 0:0.1.5-27.el7 libsemanage-python.x86_64 0:2.5-8.el7 libtalloc.x86_64 0:2.1.9-1.el7 libtdb.x86_64 0:1.3.12-2.el7 libtevent.x86_64 0:0.9.31-1.el7 libtirpc.x86_64 0:0.2.4-0.10.el7 libtool-ltdl.x86_64 0:2.4.2-22.el7_3 libverto-libevent.x86_64 0:0.2.5-4.el7 libwbclient.x86_64 0:4.6.2-12.el7_4 libyaml.x86_64 0:0.1.4-11.el7_0 lvm2.x86_64 7:2.02.171-8.el7 lvm2-libs.x86_64 7:2.02.171-8.el7 net-snmp-libs.x86_64 1:5.7.2-28.el7 net-snmp-utils.x86_64 1:5.7.2-28.el7 net-tools.x86_64 0:2.0-0.22.20131004git.el7 nettle.x86_64 0:2.7.1-8.el7 nfs-utils.x86_64 1:1.3.0-0.48.el7_4 overpass-fonts.noarch 0:2.1-1.el7 pacemaker.x86_64 0:1.1.16-12.el7 pacemaker-cli.x86_64 0:1.1.16-12.el7 pacemaker-cluster-libs.x86_64 0:1.1.16-12.el7 pacemaker-libs.x86_64 0:1.1.16-12.el7 perl.x86_64 4:5.16.3-292.el7 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-2.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-292.el7 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-4.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-TimeDate.noarch 1:2.30-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-292.el7 perl-macros.x86_64 4:5.16.3-292.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 pexpect.noarch 0:2.3-11.el7 policycoreutils-python.x86_64 0:2.5-17.1.el7 psmisc.x86_64 0:22.20-15.el7 python-IPy.noarch 0:0.75-6.el7 python-backports.x86_64 0:1.0-8.el7 python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7 python-chardet.noarch 0:2.2.1-1.el7_1 python-clufter.noarch 0:0.76.0-1.el7 python-requests.noarch 0:2.6.0-1.el7_1 python-setuptools.noarch 0:0.9.8-7.el7 python-six.noarch 0:1.9.0-2.el7 python-suds.noarch 0:0.4.1-5.el7 python-urllib3.noarch 0:1.10.2-3.el7 quota.x86_64 1:4.01-14.el7 quota-nls.noarch 1:4.01-14.el7 resource-agents.x86_64 0:3.9.5-105.el7 rpcbind.x86_64 0:0.2.0-42.el7 ruby.x86_64 0:2.0.0.648-30.el7 ruby-irb.noarch 0:2.0.0.648-30.el7 ruby-libs.x86_64 0:2.0.0.648-30.el7 rubygem-bigdecimal.x86_64 0:1.2.0-30.el7 rubygem-io-console.x86_64 0:0.4.2-30.el7 rubygem-json.x86_64 0:1.7.7-30.el7 rubygem-psych.x86_64 0:2.0.0-30.el7 rubygem-rdoc.noarch 0:4.0.0-30.el7 rubygems.noarch 0:2.0.14.1-30.el7 samba-client-libs.x86_64 0:4.6.2-12.el7_4 samba-common.noarch 0:4.6.2-12.el7_4 setools-libs.x86_64 0:3.3.8-1.1.el7 sg3_utils.x86_64 0:1.37-12.el7 sg3_utils-libs.x86_64 0:1.37-12.el7 tcp_wrappers.x86_64 0:7.6-77.el7 telnet.x86_64 1:0.17-64.el7 trousers.x86_64 0:0.3.14-2.el7 unbound-libs.x86_64 0:1.4.20-34.el7 完了しました! [root@jm01 ~]#
インストールすると、haclusterというユーザが生成されている。
[root@jm01 ~]# cat /etc/passwd | grep hacluster hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin [root@jm01 ~]#
このhaclusterユーザのパスワードを設定する。
[root@jm01 ~]# passwd hacluster ユーザー hacluster のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
Pacemakerのサービスを起動する。
[root@jm01 ~]# systemctl start pcsd.service [root@jm01 ~]# systemctl enable pcsd.service Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service. [root@jm01 ~]#
heartbeatの疎通をするのでファイアウォールを停止しておく。
[root@jm01 ~]# systemctl stop firewalld [root@jm01 ~]#
ついでに、firewalldを次回から起動しないようにしておく。
[root@jm01 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
ここまでの作業を同様に、jm02でもパッケージインストール、パスワード変更、サービス起動、firewalldの停止を行う。
どちらか一方のノード(例:jm01)でクラスタの認証を行う
[root@jm01 ~]# pcs cluster auth jm01p jm02p -u hacluster -p XXXXXXX jm01p: Authorized jm02p: Authorized
どちらか一方のノード(例:jm01)でクラスタを作成する
[root@jm01 ~]# pcs cluster setup --start --name my_cluster jm01p jm02p Destroying cluster on nodes: jm01p, jm02p... jm01p: Stopping Cluster (pacemaker)... jm02p: Stopping Cluster (pacemaker)... jm02p: Successfully destroyed cluster jm01p: Successfully destroyed cluster Sending 'pacemaker_remote authkey' to 'jm01p', 'jm02p' jm02p: successful distribution of the file 'pacemaker_remote authkey' jm01p: successful distribution of the file 'pacemaker_remote authkey' Sending cluster config files to the nodes... jm01p: Succeeded jm02p: Succeeded Starting cluster on nodes: jm01p, jm02p... jm02p: Starting Cluster... jm01p: Starting Cluster... Synchronizing pcsd certificates on nodes jm01p, jm02p... jm01p: Success jm02p: Success Restarting pcsd on the nodes in order to reload the certificates... jm01p: Success jm02p: Success [root@jm01 ~]#
この時点での設定を確認するとSTONITH(ノード異常を検知したときに強制的に停止や再起動する)のエラーが出ている事がわかる。
[root@jm01 ~]# crm_verify -L -V error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity Errors found during check: config not valid [root@jm01 ~]#
STONITHを無効化して、もう一度バリデーションチェックをすると、エラーが消えているのが確認できる。
[root@jm01 ~]# pcs property set stonith-enabled=false [root@jm01 ~]# crm_verify -L -V [root@jm01 ~]#
ここまででクラスタの構築は終わり。クラスタの動作確認のため、次はリソースを追加する。
どちらか一方のノード(例:jm01)でステータスを確認する
どちらかのノード(ここではjm01)で、ステータスを確認する。jm01pとjm02pの2ノードがOnlineであることが確認できる。現時点ではリソースは存在しないので No resourcesと表示されている。
[root@jm01 ~]# pcs status Cluster name: my_cluster Stack: corosync Current DC: jm01p (version 1.1.16-12.el7-94ff4df) - partition with quorum Last updated: Mon Jan 8 16:34:18 2018 Last change: Mon Jan 8 16:24:10 2018 by root via cibadmin on jm01p 2 nodes configured 0 resources configured Online: [ jm01p jm02p ] No resources Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled [root@jm01 ~]#
どちらか一方のノード(例:jm01)で仮想IPをリソースに追加してみる
以下コマンドで、仮想IPのresourceをcreateする。ここではvipという名前のリソースでIPアドレスは192.168.100.10、ネットマスクは/24、ネットワークデバイス名はeth1で、監視の間隔は30秒としている。"IPaddr2"は仮想IPをリソースとして設定するためのモジュール名だと考えて良い。フルパスはocf:heartbeat:IPaddr2だが、省略しても補完される。
[root@jm01 ~]# pcs resource create vip IPaddr2 ip=192.168.100.10 cidr_netmask=24 nic=eth1 op monitor interval=30s Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPaddr2')
ステータスを確認すると、resourceに追加されている。
[root@jm01 ~]# pcs status Cluster name: my_cluster Stack: corosync Current DC: jm01p (version 1.1.16-12.el7-94ff4df) - partition with quorum Last updated: Mon Jan 8 16:38:51 2018 Last change: Mon Jan 8 16:38:47 2018 by root via cibadmin on jm01p 2 nodes configured 1 resource configured Online: [ jm01p jm02p ] Full list of resources: vip (ocf::heartbeat:IPaddr2): Started jm01p Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled [root@jm01 ~]#
pingしてみると確かに仮想IPが生きていることがわかる。
[root@jm01 ~]# ping jm00v PING jm00v (192.168.100.10) 56(84) bytes of data. 64 bytes from jm00v (192.168.100.10): icmp_seq=1 ttl=64 time=0.019 ms 64 bytes from jm00v (192.168.100.10): icmp_seq=2 ttl=64 time=0.039 ms 64 bytes from jm00v (192.168.100.10): icmp_seq=3 ttl=64 time=0.025 ms 64 bytes from jm00v (192.168.100.10): icmp_seq=4 ttl=64 time=0.036 ms 64 bytes from jm00v (192.168.100.10): icmp_seq=5 ttl=64 time=0.138 ms ^C --- jm00v ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4015ms rtt min/avg/max/mdev = 0.019/0.051/0.138/0.044 ms [root@jm01 ~]#
外部からもpingしてみる。
macbook:~ user$ ping 192.168.100.10 PING 192.168.100.10 (192.168.100.10): 56 data bytes 64 bytes from 192.168.100.10: icmp_seq=0 ttl=64 time=0.406 ms 64 bytes from 192.168.100.10: icmp_seq=1 ttl=64 time=0.337 ms 64 bytes from 192.168.100.10: icmp_seq=2 ttl=64 time=0.415 ms 64 bytes from 192.168.100.10: icmp_seq=3 ttl=64 time=0.308 ms --- 192.168.100.10 ping statistics --- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.308/0.367/0.415/0.045 ms macbook:~ user $
外部からpingしている間に仮想IPを持つjm01のnetworkを殺してみる。networkが死ぬとsshも死ぬので、コンソールからnetworkを止める。
切断された瞬間、2回ほどpingに失敗するが、すぐに仮想IPがフェイルオーバーしてpingの応答が再開した。
macbook:~ user$ ping 192.168.100.10 PING 192.168.100.10 (192.168.100.10): 56 data bytes 64 bytes from 192.168.100.10: icmp_seq=0 ttl=64 time=0.457 ms 64 bytes from 192.168.100.10: icmp_seq=1 ttl=64 time=0.347 ms 64 bytes from 192.168.100.10: icmp_seq=2 ttl=64 time=0.394 ms 64 bytes from 192.168.100.10: icmp_seq=3 ttl=64 time=0.332 ms 64 bytes from 192.168.100.10: icmp_seq=4 ttl=64 time=2.463 ms 64 bytes from 192.168.100.10: icmp_seq=5 ttl=64 time=14.943 ms 64 bytes from 192.168.100.10: icmp_seq=6 ttl=64 time=0.251 ms 64 bytes from 192.168.100.10: icmp_seq=7 ttl=64 time=0.577 ms 64 bytes from 192.168.100.10: icmp_seq=8 ttl=64 time=0.301 ms 64 bytes from 192.168.100.10: icmp_seq=9 ttl=64 time=0.254 ms 64 bytes from 192.168.100.10: icmp_seq=10 ttl=64 time=0.603 ms 64 bytes from 192.168.100.10: icmp_seq=11 ttl=64 time=0.277 ms Request timeout for icmp_seq 12 Request timeout for icmp_seq 13 64 bytes from 192.168.100.10: icmp_seq=14 ttl=64 time=0.501 ms 64 bytes from 192.168.100.10: icmp_seq=15 ttl=64 time=0.294 ms 64 bytes from 192.168.100.10: icmp_seq=16 ttl=64 time=0.485 ms 64 bytes from 192.168.100.10: icmp_seq=17 ttl=64 time=0.319 ms
jm02でステータスを確認すると、確かにjm01pはオフラインになり、仮想IPリソースであるvipがjm02pでStartedになっていることがわかる。
[root@jm02 ~]# pcs status Cluster name: my_cluster Stack: corosync Current DC: jm02p (version 1.1.16-12.el7-94ff4df) - partition with quorum Last updated: Mon Jan 8 18:09:35 2018 Last change: Mon Jan 8 16:38:47 2018 by root via cibadmin on jm01p 2 nodes configured 1 resource configured Online: [ jm02p ] OFFLINE: [ jm01p ] Full list of resources: vip (ocf::heartbeat:IPaddr2): Started jm02p Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled [root@jm02 ~]#
これで、Red Hat High Availability Add-Onが使えるようになった。次回は、Red Hat High Availability Add-OnのリソースにJP1/AJS3のサービスを登録して、JP1/AJS3上で実行中のジョブがフェイルオーバー後も継続できるかどうか検証する。