機能・要件
 構成・方式
 タスク
 導入 
    トポロジー
    諸元
    エイリアスIF
    IPフォワード
    FW
    LD設定
    ipvsadm
    LVS手動設定
    LVS の管理
    pacemaker
    リポジトリ
    インストール
    アップデート
    SELinux
    ldirectord
    リソース追加
    リソース制約
    実サーバ
    CRMファイル
    ルータ設定例

 ネットワークトポロジー
 ・4台のマシンで高可用性と負荷分散を実装する
LinuxDirector 2台
LD1_eth2 192.168.5.35
LD2_eth2 192.168.5.45
FIP 192.168.5.55
DGW 192.168.5.1
リアルサーバ 2台
FE1_eth1 192.168.5.33
FE2_eth1 192.168.5.43
DGW 192.168.5.1
 ・NAT方式(masq)にすると、ldirectorサーバはL4スイッチ
LinuxDirectorに2枚のNIC
帰りも同じルート(IPマスカレード)
 ・ldirectord から実サービスへの転送はダイレクトルーティング方式 (gate)
HTTP応答を直接ネットワークへ返す。

 諸元
 ・ダイレクトルーティング(gate)方式
 ・実サービスへの振り分けはラウンドロビン
 ・死活確認用コンテンツは静的HTMLファイル

 ダイレクトルーティング用エイリアスインターフェイス
 ・リアルサーバ 2台
 ・仮想IPと同じIPアドレスを持つエイリアスインターフェイス
ループバックのエイリアスとして作成する。     DEVICE=lo:0     TYPE=Ethernet     BOOTPROTO=static     BROADCAST=192.168.5.255     IPADDR=192.168.5.55     NETMASK=255.255.255.255     NETWORK=192.168.5.0     ONBOOT=yes     NAME=loopback  ・反映
# ifup lo:0
 ・ARPリクエストへの回答を制限
ARPを受けたIF自体がそのIPアドレスを持っている時にだけ返事
「/etc/sysctl.conf」へ書く。(ブート時に必ず設定される。)     net.ipv4.conf.all.arp_ignore = 1     net.ipv4.conf.eth2.arp_ignore = 1     net.ipv4.conf.all.arp_announce = 2     net.ipv4.conf.eth2.arp_announce = 2
 IPフォワード
 ・LinuxDirector 2台
 ・両系のIP フォワードは有効
# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p

 ファイアウォール設定
 ・ファイアウォール
インターネット側はゾーンを「external」(デフォルトmasqueradeオン)
# firewall-cmd --change-interface=eth2 --zone=external --permanent
リアルサーバ側はゾーンを「trusted」または、「rich-rule」で設定
tcpdump」などで戻りのパケットを確認

 LinuxDirectorの設定
 ・LinuxDirector 2台
 ・両系のLVSが設定され、負荷分散が正常に動作する。 例、httpd(確認)

 ipvsadmの導入設定
 ・LinuxDirector 2台
 ・インストール
 ・Unitファイル、起動確認

 LVSの手動設定
 ・LinuxDirector 2台
 ・リアルサーバを仮想サービスに追加
 ・テスト
片系ずつテスト
テスト時、リアルサーバのデフォルトゲートウェイは当該系に合わせる。
 ・自動設定は ldirectord

 pacemakerパッケージ
 ・両系にPacemaker 、Corosyncが正常にインストールされている
CMAN機能は、CentOS7からcorosyncに含む。
rpmは、「/opt/linux-ha/pacemaker/rpm」
Pacemakerリポジトリを追加(確認)
Pacemakerインストール(確認)
ShortName(確認)
ノード間通信(確認)
パッケージ(確認)
pcs(確認)
crmshは、インストール済(確認)
ファイアウォール設定(確認)
corosync.conf が設計したネットワーク構成に基づき設定されている。(確認)
クラスタ(Corosync)認証設定ファイル (authkey)が両系にを生成されている。(確認)
環境変数初期設定 が両系にされている。(確認)
必要なら設定ファイル(Pacemaker)の追加設定 を行う。(確認)
Corosync用Unitファイルの修正 が両系にされている。(確認)
Pacemaker用Unitファイルの修正 が両系にされている。(確認)
property(クラスタ全体の設定確認)
rsc_defaults(リソース全体のデフォルト設定確認)
フェールオーバーのテスト(確認)

 リポジトリ(UltraMonkey)
 ・リポジトリインストール
# yum -y localinstall https://ja.osdn.net/projects/ultramonkey-l7/downloads/67849/ultramonkey-repo-3.19-1.el7.x86_64.rpm      /var/tmp/yum-root-MZ6_xp/ultramonkey-repo-3.19-1.el7.x86_64.rpm をインストール済みとして設定      パッケージ ultramonkey-repo.x86_64 0:3.19-1.el7 を インストール      完了しました!  ・README.ja
/usr/share/doc/ultramonkey-repo-3.19.README.ja

 インストール(UltraMonkey)
 ・rpmは、  /opt/ultramonkey-l7/ultramonkey/x86_64/
ldirectord-4.0.1-1.el7.x86_64.rpm
perl-Authen-Radius-0.13-14.el7.noarch.rpm
perl-Data-HexDump-0.02-15.el7.noarch.rpm
perl-Mail-POP3Client-2.18-12.el7.noarch.rpm
perl-Net-IMAP-Simple-1.1916-10.el7.noarch.rpm
perl-Net-IMAP-Simple-SSL-1.3-9.el7.noarch.rpm
perl-Net-INET6Glue-0.5-3.el7.noarch.rpm
repodata
ultramonkey-3.19-1.el7.x86_64.rpm

 ・インストール
# yum -y install ultramonkey      ultramonkey  x86_64  3.19-1.el7  ultramonkey      依存性関連でのインストールをします:      ipvsadm  x86_64  1.27-7.el7  base        ldirectord  x86_64  4.1.1-1.el7  linux-ha-ja-pacemaker      完了しました!
 アップデート(CentOS7 両系)
アップデート(確認)

 SELinux
 ・必要ならば、SELinuxを設定

 ldirectordの導入設定
 ・Unitファイル、起動確認
ldirectord.service
# cp -p /usr/lib/systemd/system/ldirectord.service /etc/systemd/system
# cp /usr/share/doc/ldirectord-4.1.1/ldirectord.cf /etc/ha.d/
# systemctl start ldirectord
# systemctl stop ldirectord
ldirectordはPacemakerから起動される。

 ・設定ファイルは/etc/ha.d/ldirectord.cf
# vi /etc/ha.d/ldirectord.cf
 ・変更後、リアルサーバなど更新
# systemctl reload ldirectord
 ・http
# vi /etc/ha.d/ldirectord.cf
毎秒チェック
死活確認コンテンツ「haCheker/haCheck.html」
「receive」は正規表現文字列 # Global Directives checktimeout=5 checkinterval=10 #fallback=127.0.0.1:80 #fallback6=[::1]:80 autoreload=yes #logfile="/var/log/ldirectord.log" #logfile="local0" #emailalert="[email protected]" #emailalertfreq=3600 #emailalertstatus=all quiescent=no # Sample for an http virtual service virtual=192.168.10.3:80 servicename=Web Site comment=Test load balanced web site real=192.168.10.4:80 gate real=192.168.10.5:80 gate fallback=127.0.0.1:80 gate service=http scheduler=rr #persistent=600 #netmask=255.255.255.255 protocol=tcp checktype=negotiate checkport=80 request="haCheker/haCheck.html" receive="up and running" #virtualhost=www.x.y.z  ・checktimeout = 5
実サーバへの接続テストで応答がない時、異常判定までの待ち時間 (秒、デフォルト「5」)
 ・checkinterval = 10
実サーバへの接続テストを行う間隔(秒、デフォルト「10」)
 ・fallback = 127.0.0.1:80
すべての実サーバダウンの、Webサービスのリダイレクト先サーバ
 ・autoreload = yes(ldirectord.cf が変更されたら自動的にリロード、デフォルト「no」)
ldirectordが変更の有無について設定ファイルを継続的に確認する。
ファイルのタイムスタンプで判定
 ・quiescent = yes(障害発生の実サーバをLVSテーブルから削除)
yes、障害発生の実サーバをLVSテーブルから削除せず、重み付けを「0」にする。
 ・virtual=192.168.6.1:80
LVSの仮想IPアドレス:ポート
 ・real=192.168.6.2:80 masq
ポート80で使用できる2つの実サーバを定義
 ・service=http
監視するサービスのタイプ
 ・scheduler=rr
負荷分散に使用するスケジューラ
 ・protocol = tcp
使用するプロトコル
 ・checktype=negotiate(デフォルト)
実サーバのアクティブテストの確認のタイプ
 ・request="haCheker/haCheck.html"
確認中、各実サーバで要求されるオブジェクトへのURI
 ・receive="up and running"
実サーバからの応答文字列内で一致する必要のある正規表現

 リソース追加
 ・FIP(IPaddr2)とVIPcheckの追加(ocf:heartbeat:VIPcheck)
 ・ldirectord起動リソース  (ocf:heartbeat)
op monitor interval=30 timeout=60 on-fail=restart \
op start interval=0s start-delay=5s timeout=60 on-fail=restart \
op stop interval=0s timeout=60s on-fail=block
 ・ネットワーク経路死活確認リソース  (ocf:pacemaker:ping)
host_list="192.168.xx.xx 192.168.xx.xx" multiplier=100 name=pingd_score \
op monitor interval=10s timeout=30s on-fail=restart \
op start interval=0s timeout=60s on-fail=restart \
op stop interval=0s timeout=60s on-fail=ignore
 ・ノード間を一団で移動
 ・全ノードで同時に活性化

 リソース制約 (Constraints)
 ・場所制約(location)
 ・同居制約(colocation constraint)
# pcs constraint colocation add GrpBalancer PINGD-clone INFINITY \
id=GrpBalancer-with-PINGD
 ・順序制約(order constraint)
# pcs constraint order \
PINGD-clone then GrpBalancer score=INFINITY symmetrical=false \
id=order-PINGD-then-GrpBalancer
# pcs constraint order \
VIPCHK1 then LB_VIP score=INFINITY symmetrical=true \
id=order-VIPCHK1-then-LB_VIP
# pcs constraint order \
LB_VIP then LDIRECTOR1 score=INFINITY symmetrical=true \
id=order-LB_VIP-then-LDIRECTOR1
# pcs constraint show all
# crm configure show

 実サーバの提供するサービス
 ・仮想サービスを構成するためのサンプルldirectord構成ファイル(/etc.ha.d/ldirectord.cf)
http(80)
https(443)
ftp(21)
smtp(25)
submission(587)
pop(110)
imap(143)
ldap(369)
nntp(119)
dns(53)
mysql
pgsql
oracle
radius
nntp(119)

 ・ファイアウォール設定
実サーバの提供するサービスのファイアウォール設定


 ログ設定rsyslog.conf
 ・ログの出力先を/etc/rsyslog.confに設定  確認 
 ・ログメッセージ制御機能設定(pm_logconv.conf)
基本設定部([Setting]セクション)を編集  確認 
 ・ログローテーションの追加設定(syslog)
Pacemaker用ログファイル(/var/log/ha-log)のローテーション設定  確認 
 ・pm_logconvプロセス、ifcheckdプロセスの起動  確認 

 CRMファイル
 ・両系standby、configure erase後確認
# crm_verify -L -V
STONITHエラー
 ・「stonith」を一時無効にする
# pcs property set stonith-enabled=false
 ・「quorum」無視
# pcs property set no-quorum-policy=ignore
 ・「自動フェイルバック」無効
# pcs property set default-resource-stickiness=INFINITY

 ルータ設定例
 ・外部と接続する ルータの設定を行う。