【Hinemos】Hinemos 5.0にHAオプションをインストールする
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
Hinemos HAオプションは、2台のHinemosマネージャをクラスタ化し、Hinemosの可用性を高めるためのオプション製品です。仮に、運用中に片方のHinemosマネージャサーバに物理的な故障が発生したとしても、HAオプションを適用していれば、もう片方で監視やジョブを引き続き実行することが可能となります。
今回は、Hinemos 5.0へ実際にHAオプションをインストールする様子をご紹介します。
1. 事前準備
Hinemos HAオプションをインストールするためには、事前に、2台のHinemosマネージャが必要となります。それぞれ、マニュアルにしたがって個別にインストールしておきます。私の環境では、以下の2台がHinemosマネージャです。
- Hinemosマネージャサーバ1
- OS: CentOS 7.2 (64bit)
- IPアドレス: 192.168.11.107 (NIC名: eno16777736)
- Hinemosマネージャサーバ2
- OS: CentOS 7.2 (64bit)
- IPアドレス: 192.168.11.120 (NIC名: eno16777736)
両サーバのIPアドレスは、Hinemos HAオプションではSIP(固定IP)と呼びます。その呼び名のとおり、IPアドレスはDHCPではなくスタティックに割り当てておく必要があります。
また両サーバとも、追加で以下のRPMパッケージが必要ですので、ここでインストールしておきます。
- wget
- ipmitool
以下は、上記パッケージを実際にインストールしている様子です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# yum -y install wget ipmitool 読み込んだプラグイン:fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 (1/2): extras/7/x86_64/primary_db | 132 kB 00:00 (2/2): updates/7/x86_64/primary_db | 4.9 MB 00:00 Determining fastest mirrors * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ ipmitool.x86_64 0:1.8.13-8.el7_1 を インストール --> 依存性の処理をしています: OpenIPMI-modalias のパッケージ: ipmitool-1.8.13-8.el7_1.x86_64 ---> パッケージ wget.x86_64 0:1.14-10.el7_0.1 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ OpenIPMI-modalias.x86_64 0:2.0.19-11.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: ipmitool x86_64 1.8.13-8.el7_1 base 367 k wget x86_64 1.14-10.el7_0.1 base 545 k 依存性関連でのインストールをします: OpenIPMI-modalias x86_64 2.0.19-11.el7 base 15 k トランザクションの要約 ================================================================================ インストール 2 パッケージ (+1 個の依存関係のパッケージ) 総ダウンロード容量: 927 k インストール容量: 3.2 M Downloading packages: (1/3): OpenIPMI-modalias-2.0.19-11.el7.x86_64.rpm | 15 kB 00:00 (2/3): ipmitool-1.8.13-8.el7_1.x86_64.rpm | 367 kB 00:00 (3/3): wget-1.14-10.el7_0.1.x86_64.rpm | 545 kB 00:00 -------------------------------------------------------------------------------- 合計 1.4 MB/s | 927 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : OpenIPMI-modalias-2.0.19-11.el7.x86_64 1/3 インストール中 : ipmitool-1.8.13-8.el7_1.x86_64 2/3 インストール中 : wget-1.14-10.el7_0.1.x86_64 3/3 検証中 : ipmitool-1.8.13-8.el7_1.x86_64 1/3 検証中 : wget-1.14-10.el7_0.1.x86_64 2/3 検証中 : OpenIPMI-modalias-2.0.19-11.el7.x86_64 3/3 インストール: ipmitool.x86_64 0:1.8.13-8.el7_1 wget.x86_64 0:1.14-10.el7_0.1 依存性関連をインストールしました: OpenIPMI-modalias.x86_64 0:2.0.19-11.el7 完了しました! |
2. HAオプションのインストール
それでは、いよいよHAオプションをインストールします。まず、Hinemosマネージャサービスが起動している場合は、両サーバとも事前に停止してください。
1 2 |
# service hinemos_manager stop Redirecting to /bin/systemctl stop hinemos_manager.service |
次に、インストーラーパッケージをサーバ上へ配置して、両サーバ上でインストールを行います。ここでは、順序はどちらが先でも構いません。
1 2 3 4 5 6 7 |
# rpm -ivh hinemos-manager-ha-5.0.b-1.el7.noarch.rpm 準備しています... ################################# [100%] Stopping Hinemos Manager before Installation... 更新中 / インストール中... 1:hinemos-manager-ha-0:5.0.b-1.el7 ################################# [100%] 情報:'systemctl disable hinemos_manager.service'へ転送しています。 Removed symlink /etc/systemd/system/multi-user.target.wants/hinemos_manager.service. |
パッケージの内容はそれほど多くないため、通常は、ほんの2~3秒でインストールが完了するはずです。
3. HAオプションの初期セットアップ
続いて、HAオプションの初期設定を行います。なお、ここでは必要最小限の設定のみに留めていますのでご了承ください。
まず、Hinemosマネージャサーバ1から、初期設定のためのスクリプトを実行します(実際には、Hinemosマネージャサーバ2が先でも構いません)。
1 |
# /opt/hinemos/bin/hinemos_ha_configure.sh |
最初に、自身(Hinemosマネージャサーバ1)のSIPを入力します。
1 |
IP Address of This Server (ex. 192.168.1.101) : 192.168.11.107 |
次に、自身(Hinemosマネージャサーバ1)のrootユーザのパスワードを入力します。これは、特定の条件下で両サーバがスプリットブレイン状態になるのを防ぐために、HA構成の相対サーバ(今回の場合はHinemosマネージャサーバ2)から、SSH経由でrootユーザがログインするのに使用されます。
1 |
Root Password of This Server (ex. password) : *********** |
続いて、クラスタメンバーのIPアドレスとして、Hinemosマネージャサーバ1および2のIPアドレスを、カンマで連結して入力します。
1 |
IP Addresses of Cluster Members (ex. 192.168.1.101,192.168.1.102) : 192.168.11.107,192.168.11.120 |
自身(Hinemosマネージャサーバ1)から外部ネットワークへ、pingの疎通確認を行う先のIPアドレスを、1つ以上入力します(2つ以上の場合はカンマで連結します)。疎通確認先は、Hinemosマネージャからのpingに対して常時応答可能である必要があります。通常は、デフォルトゲートウェイやスイッチのIPアドレスを指定します。
1 |
External IP Addresses used by Health Check (ex. 192.168.1.1,192.168.1.254) : 192.168.11.1 |
クラスタに新たに割り当てる仮想IP(IPエイリアス)およびネットマスク、並びにNIC名を入力します。このIPアドレスはFIP(フローティングIP)と呼ばれ、HinemosエージェントやHinemosクライアントは、このIPアドレスに対して通信を行います。ということで、FIPは既存のIPアドレスと被らないようにする必要があります。
1 2 3 |
Virtual IP Address of Cluster (ex. 192.168.1.100) : 192.168.11.106 CIDR Subnet Mask of Virtual IP Address (ex. 24) : 24 Network Device Name to which Virtual IP Address is assigned (ex. eth0) : eno16777736 |
入力内容の再確認を行い、問題なければ”Y”を入力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Please confirm following parameters... ----------------------------------------------------------------------------- IP Address of This Server : 192.168.11.107 Root Password of This Server : *********** IP Addresses of Cluster Members : 192.168.11.107,192.168.11.120 External IP Addresses used by Health Check : 192.168.11.1 Virtual IP Address of Cluster : 192.168.11.106 CIDR of Virtual IP Address's Subnet : 24 Network Device Name to which Virtual IP Address is assigned : eno16777736 ----------------------------------------------------------------------------- Apply configuration ? (Y/N default:Y) : y waiting for PostgreSQL startup... PostgreSQL started Installing configurations in database... INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 waiting for PostgreSQL shutdown... PostgreSQL stopped (shutdown mode : fast) configuration finished. |
以上で、Hinemosマネージャサーバ1に対する初期設定が完了しました。続いて、Hinemosマネージャサーバ2についても、同じ作業を行います。
1 2 3 4 5 |
# /opt/hinemos/bin/hinemos_ha_configure.sh IP Address of This Server (ex. 192.168.1.101) : 192.168.11.120 Root Password of This Server (ex. password) : *********** IP Addresses of Cluster Members (ex. 192.168.1.101,192.168.1.102) : 192.168.11.107,192.168.11.120 External IP Addresses used by Health Check (ex. 192.168.1.1,192.168.1.254) : 192.168.11.1 |
なお注意点として、FIPとネットマスクは、Hinemosマネージャサーバ1で設定したものと同じ値を入力する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Virtual IP Address of Cluster (ex. 192.168.1.100) : 192.168.11.106 CIDR Subnet Mask of Virtual IP Address (ex. 24) : 24 Network Device Name to which Virtual IP Address is assigned (ex. eth0) : eno16777736 Please confirm following parameters... ----------------------------------------------------------------------------- IP Address of This Server : 192.168.11.120 Root Password of This Server : *********** IP Addresses of Cluster Members : 192.168.11.107,192.168.11.120 External IP Addresses used by Health Check : 192.168.11.1 Virtual IP Address of Cluster : 192.168.11.106 CIDR of Virtual IP Address's Subnet : 24 Network Device Name to which Virtual IP Address is assigned : eno16777736 ----------------------------------------------------------------------------- Apply configuration ? (Y/N default:Y) : y waiting for PostgreSQL startup... PostgreSQL started Installing configurations in database... INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 waiting for PostgreSQL shutdown... PostgreSQL stopped (shutdown mode : fast) configuration finished. |
以上で、HAオプションの初期設定が完了しました。
4. 管理対象ノードのセットアップ
次に、監視対象ノードのHinemosエージェントとrsyslogの接続先IPアドレスを、HA構成に合わせて変更します。
なお、今回の私の環境では、HinemosエージェントはHinemosマネージャと同じサーバに同居しているため、Hinemosエージェントのみのサーバの場合と、設定方法が若干異なっています。あらかじめご了承ください。
それでは、まずHinemosエージェントの設定方法からご説明します。
4-1. Hinemosエージェントの接続先IPアドレス変更
Hinemosエージェントの接続先HinemosマネージャのIPアドレスは、以下のファイルで設定されています。
1 |
{Hinemosエージェントのインストール先}/conf/Agent.properties |
Hinemosエージェントサービスを停止した後、上記のファイルを開きます。
1 2 3 |
# service hinemos_agent stop Stopping hinemos_agent (via systemctl): [ OK ] # vi /opt/hinemos_agent/conf/Agent.properties |
ファイルの末尾の方に、以下の設定行がありますので、IPアドレスをHinemosマネージャのFIPに変更します。ポート番号やパス等はそのままにします。
1 2 3 |
managerAddress=http://127.0.0.1:8081/HinemosWS/ ↓ managerAddress=http://192.168.11.106:8081/HinemosWS/ |
変更したファイルを上書き保存したら、Hinemosエージェントサービスを起動します(この時点では、Hinemosマネージャは起動していませんが、後でHinemosマネージャが起動した際に接続されますので、問題ありません)。
1 2 |
# service hinemos_agent start Starting hinemos_agent (via systemctl): [ OK ] |
これを、全てのHinemosエージェントに対して行います。
以上で、Hinemosエージェントの接続先IPアドレスの変更が完了しました。
4-2. rsyslogの接続先IPアドレス変更
rsyslogが、Hinemosマネージャサーバ1と2の両方へログを転送するよう、設定を行います。なお、今回の私の環境では、Hinemosマネージャサーバ1と2しかないため、各サーバ上の以下の設定ファイルを編集します。
1 2 3 4 5 6 7 |
/etc/rsyslog.d/rsyslog_hinemos_manager.conf (省略) :fromhost-ip, !isequal, "127.0.0.1" ~ ↓ :fromhost-ip, !isequal, "127.0.0.1" ~ *.info;mail.none;authpriv.none;cron.none @@{相対サーバのSIP}:514 |
その後、rsyslogサービスを再起動します(両サーバとも行います)。
1 2 |
# service rsyslog restart Redirecting to /bin/systemctl restart rsyslog.service |
以上で、rsyslogの接続先IPアドレスの変更が完了しました。
あと、監視対象ノードがSNMPトラップを送信する場合は、そのトラップの送信先を、Hinemosマネージャサーバ1および2のSIPにするよう、設定を変更する必要があります。今回は必要最小限ということで、SNMPトラップの設定変更は省略しておりますので、ご了承ください。
5. Hinemosマネージャサービスの起動
いよいよ、Hinemosマネージャサービスを起動します。
なお、ここからは各Hinemosマネージャサーバを、
- Hinemosマネージャサーバ1 => Masterサーバ(現用系サーバ)
- Hinemosマネージャサーバ2 => Standbyサーバ(待機系サーバ)
と呼びます。MasterサーバとStandbyサーバは、フェイルオーバーが発生するたびに入れ替わりますので、ご注意ください。
5-1. MasterサーバのHinemosマネージャサービス起動
Masterサーバ(これまでのHinemosマネージャサーバ1)上で、Hinemosマネージャの起動スクリプト(hinemos_ha_start.sh)を実行します。
1 2 3 4 5 |
# /opt/hinemos/bin/hinemos_ha_start.sh root: hinemos_ha_start.sh waiting for Java Virtual Machine startup... ..done root: hinemos_ha_start.sh started : 122979 java -Djdk.(以降省略) root: hinemos_ha_start.sh Java Virtual Machine started |
これで起動完了ですが、念のため、クラスタの状態を確認します。以下のコマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# cat /opt/hinemos/var/log/cluster.status updated at yyyy-mm-dd hh:mm:ss +0900 [Instances] 192.168.11.107 : MASTER (*) [Plugins] CustomMonitor : STARTED InternalNetworkMonitor : STARTED ExternalNetworkMonitor : STARTED LoggingReloadPlugin : STARTED DiskMonitor : STARTED InstanceManager : STARTED [Resources] VirtualIPAddress : MASTER HinemosPostgreSQL : MASTER SyslogForwarder : MASTER SnmpTrapForwarder : MASTER HinemosJavaVM : MASTER ClusterEventNotifier : MASTER HinemoStatusManager : MASTER |
[Instances]の項目を見ると、Masterサーバのみが起動していることが分かります。
5-2. StandbyサーバのHinemosマネージャサービス起動
Masterサーバ側でHinemosマネージャサービスが起動したことが確認できたら、続いて、Standbyサーバ(これまでのHinemosマネージャサーバ2)上で、同じスクリプトを実行します。
1 2 3 4 5 6 7 |
# /opt/hinemos/bin/hinemos_ha_start.sh root: hinemos_ha_start.sh .pg_lock exists. -F option is needed to run as master instance. root: hinemos_ha_start.sh waiting for virtual ip address will be reachable... root: hinemos_ha_start.sh waiting for Java Virtual Machine startup... done root: hinemos_ha_start.sh started : 110748 java -Djdk.(以降省略) root: hinemos_ha_start.sh Java Virtual Machine started |
これで起動完了ですが、念のため、クラスタの状態を確認します。以下のコマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# cat /opt/hinemos/var/log/cluster.status updated at yyyy-mm-dd hh:mm:ss +0900 [Instances] 192.168.11.107 : MASTER 192.168.11.120 : STANDBY (*) [Plugins] InternalNetworkMonitor : STARTED DiskMonitor : STARTED LoggingReloadPlugin : STARTED ExternalNetworkMonitor : STARTED InstanceManager : STARTED CustomMonitor : STARTED [Resources] VirtualIPAddress : STANDBY HinemosPostgreSQL : STANDBY HinemosJavaVM : STANDBY SnmpTrapForwarder : STANDBY ClusterEventNotifier : STANDBY SyslogForwarder : STANDBY HinemoStatusManager : STANDBY |
[Instances]の項目を見ると、MasterサーバとStandbyサーバの両方が起動しており、こちらがStandbyサーバであることが分かります。ここで、もう一度Masterサーバの方も確認してみると、
1 2 3 4 5 6 7 8 9 10 11 12 |
# cat /opt/hinemos/var/log/cluster.status updated at yyyy-mm-dd hh:mm:ss +0900 [Instances] 192.168.11.107 : MASTER (*) 192.168.11.120 : STANDBY [Plugins] (省略) [Resources] (省略) |
となっています。[Instances]の項目を見ると、Masterサーバとして起動していることが分かります。以上で、Hinemosマネージャサービスの起動が完了しました。
6. Hinemosクライアントからの接続
それでは、HinemosクライアントからHinemosマネージャへ接続してみます。通常どおりHinemosクライアントを起動しますが、接続先のIPアドレスには、クラスタのFIPを指定します。
パスワード入力後、[ログイン]ボタンをクリックしてログインします。
無事、ログインすることができました。
7. Hinemosマネージャサービスの停止
Hinemosマネージャへログインするところまでは確認できましたので、ここでHinemosマネージャサービスを停止したいと思います。
なお、Hinemosマネージャサービスを停止するには、Standbyサーバ側->Masterサーバ側の順に停止を行う必要があります。先にMasterサーバ側を停止してしまうと、フェイルオーバーが発生してしまうためです。
それでは、実際に停止してみます。まずはStandbyサーバから。
1 2 3 4 5 6 7 |
# /opt/hinemos/bin/hinemos_ha_stop.sh root: hinemos_ha_stop.sh saving current state (thread dump)... .....done root: hinemos_ha_stop.sh waiting for Java Virtual Machine shutdown... root: hinemos_ha_stop.sh terminating : 110748 java -Djdk.(以降省略) ..done root: hinemos_ha_stop.sh Java Virtual Machine stopped |
ここで、念のためMasterサーバ側でクラスタの状態を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# cat /opt/hinemos/var/log/cluster.status updated at yyyy-mm-dd hh:mm:ss +0900 [Instances] 192.168.11.107 : MASTER (*) [Plugins] CustomMonitor : STARTED InternalNetworkMonitor : STARTED ExternalNetworkMonitor : STARTED LoggingReloadPlugin : STARTED DiskMonitor : STARTED InstanceManager : STARTED [Resources] VirtualIPAddress : MASTER HinemosPostgreSQL : MASTER SyslogForwarder : MASTER SnmpTrapForwarder : MASTER HinemosJavaVM : MASTER ClusterEventNotifier : MASTER HinemoStatusManager : MASTER |
[Instances]からStandbyサーバが消え、Masterサーバのみが起動している状態です。続いてMasterサーバの方も停止します。
1 2 3 4 5 6 7 |
# /opt/hinemos/bin/hinemos_ha_stop.sh root: hinemos_ha_stop.sh saving current state (thread dump)... .....done root: hinemos_ha_stop.sh waiting for Java Virtual Machine shutdown... root: hinemos_ha_stop.sh terminating : 122979 java -Djdk.(以降省略) ......done root: hinemos_ha_stop.sh Java Virtual Machine stopped |
停止が完了しました。ちなみに、この状態でクラスタの状態を確認しようとすると、
1 2 |
# cat /opt/hinemos/var/log/cluster.status cat: /opt/hinemos/var/log/cluster.status: そのようなファイルやディレクトリはありません |
となります(Hinemosマネージャサービスが停止している状態では、このファイル自体が存在しないためです)。
以上で、Hinemos HAオプションのインストールは完了です。次回は、擬似的に障害を起こしてフェイルオーバーを発生させ、その間の監視やジョブがどう動くか検証してみたいと思います。
なお、Hinemos HAオプションは有償オプションとなっており、Hinemosパートナー企業から購入することが可能です。弊社でも取り扱っておりますので、興味のある方は弊社営業窓口へお問い合わせください。