1つは、Keepalivedがホットスタンバイの基本的な知識をダブルクリックする
1.1 Keepalivedケース分析
- エンタープライズアプリケーションでは、単一のサーバーがアプリケーションの単一障害点のリスクを負います
- 単一障害点が発生すると、エンタープライズサービスが中断され、大きな損害が発生します
1.2 Keepalivedツールの概要
LVSおよびHA用に特別に設計されたヘルスチェックツール
- 自動フェイルオーバー(フェイルオーバー)をサポート
- サポートノードのヘルスチェック(ヘルスチェック)
- 公式サイト:http://www.keepalived.org/
1.3 Keepalived実装原理の分析
KeepalivedはVRRPホットバックアッププロトコルを採用
- Linuxサーバーのマルチマシンホットバックアップ機能を実現
VRRP(Virtual Routing Redundancy Protocol)は、ルーターのバックアップソリューションです。
- 複数のルーターがホットバックアップグループを形成し、共有仮想IPアドレスを介して外部にサービスを提供します
- 各ホットスタンバイグループには、同時にサービスを提供するメインルータが1つだけあり、他のルータは冗長状態です。
- 現在オンラインのルーターに障害が発生した場合、他のルーターは設定された優先順位に従って仮想IPアドレスを自動的に引き継ぎ、サービスを提供し続けます
第二に、Keepalivedの展開
2.1 Keepalivedケースの説明
- Keepalivedはマルチマシンホットバックアップを実現できます。各ホットバックアップグループには複数のサーバーがあります
- ダブルクリックホットスタンバイのフェイルオーバーは、さまざまなアプリケーションサーバーに適した仮想IPアドレスのドリフトによって実現されます。
- Webサービスに基づくデュアルシステムのホットバックアップを実現
2.2 Keepalivedのインストールと起動
- LVSクラスター環境に適用する場合、ipvsadm管理ツールも必要です
- YUMはKeepalivedをインストールします
- Keepalivedサービスを有効にする
2.3 Keepalivedマスターサーバーの設定
- Keepalived構成ディレクトリーは/ etc / keepalived /にあります
- keepalived.confはメイン構成ファイルです。
◆global_defs {…}セクションはグローバルパラメータを指定します
◆vrrp_instanceインスタンス名{…}セクションはVRRPホットスタンバイパラメータを指定します
◆コメントテキストは「!」記号で始まります◆
ディレクトリサンプルは多くの構成サンプルを提供します参考例 - 共通の構成オプション:
◆router_id HA_TEST_R1:ルーター(サーバー)の名前
◆vrrp_instance VI_1:VRRPホットスタンバイインスタンスを定義
◆状態MASTER:マスターサーバーを表すMASTER
◆インターフェースens33:VIPアドレスを伝送する物理インターフェース
◆virtual_router_ip 1:仮想ルーターのID番号、各ホットバックアップグループで同じ
◆優先度100:優先度、値が大きいほど、優先度が高くなります
◆advert_int 1:通知間の秒数(ハートビート頻度)
◆auth_type PASS:認証タイプ
◆auth_pass 123456:パスワードサブストリング
◆virtual_ipaddress {vip}:ドリフトアドレス(VIP)を指定します。
2.4 Keepalivedスレーブサーバーの設定
Keepalived バックアップサーバー構成とマスター構成には3つのオプションがあります。◆router_id:独自の名前に
設定◆状態:BACKUPに設定
◆優先度:値がマスターサーバーよりも低い- 他のオプションはマスターと同じです
3、実験
3.1実験準備
IPアドレス計画:
ドリフトアドレス(VIP):192.168.100.100
プライマリスケジューラ:192.168.100.21
セカンダリスケジューラ:192.168.100.25
WEBサーバー1:192.168.100.22
WEBサーバー2:192.168.100.23
ストレージサーバー:192.168.100.24
3.2ステップ
3.2.1メインスケジューラを構成する(192168.100.21)
'【1】调整/proc响应参数'
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
'【2】清除负载分配策略'
[root@localhost /]# ipvsadm -C
'【3】调整keepalived参数'
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.100
}
}
virtual_server 192.168.100.100 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.23 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
[root@localhost keepalived]# systemctl start keepalived ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived ####开机启动keepalived
[root@localhost keepalived]# ip addr show dev ens33 ####查看主控制IP地址和漂移地址
3.2.2補助スケジューラーの構成(192.168.100.25)
'【1】调整/proc响应参数'
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
'【2】清除负载分配策略'
[root@localhost /]# ipvsadm -C
'【3】调整keepalived参数'
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.100
}
}
virtual_server 192.168.100.100 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.23 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
[root@localhost keepalived]# systemctl start keepalived ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived ####开机启动keepalived
[root@localhost keepalived]# ip addr show dev ens33 ####查看主控制IP地址和漂移地址
3.2.3ストレージサーバーの構成(192.168.100.24)
rpm -q nfs-utils ###如果没装,yum -y install nfs-utils
rpm -q rpcbind ###如果没装,yum -y install rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24 (rw,sync)
/opt/52xit 192.168.100.0/24 (rw,sync)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html
3.2.4ノードサーバーの構成(192.168.100.22)
'【1】配置虚拟IP地址'
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig
[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 192.168.100.100 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.100 dev lo:0
'【2】调整/proc响应参数'
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost network-scripts]# sysctl -p
'【3】安装httpd 挂载测试页'
[root@localhost ~]# showmount -e 192.168.100.24 ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.44:
/opt/51xit (everyone)
/opt/52xit (everyone)
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab
192.168.100.24:/opt/51xit/ /var/www/html/ nfs rw,tcp,intr 0 1 ###开机自动挂载,注意格式对齐
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
3.2.5ノードサーバーの構成(192.168.100.23)
192.168.100.22の設定については、3.2.4を参照してください
3.3テスト
:次のページを入力
192.168.100.22を
ページ上で、次のように入力します。
192.168.100.23
ページで、次のように入力します。
192.168.100.100
オープンパケットキャプチャツールを、あなたは192.168.100.21マスタースケジューラを見つけるだろう、VRRPパケット送信されてきた
、オープンパケットキャプチャツールを意志を192.168.100.25スレーブスケジューラがVRRPパケットを送信していることがわかりました