Index ソフト・ハード | UltraMonkey 導入 |
機能・要件 構成・方式 タスク 導入 トポロジー 諸元 エイリアス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ルータ設定例 ・外部と接続する ルータの設定を行う。 |
All Rights Reserved. Copyright (C) ITCL |