LVS的DR模式和keepalived 高可用性

本文详细介绍了如何使用Keepalived和LVS-dr模型在四台虚拟机环境中搭建高可用的负载均衡系统。通过配置Keepalived、设置虚拟IP地址和健康检查脚本,确保在主服务器故障时,VIP可以无缝转移到备用服务器,维持服务连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用keepalived高可用LVS-dr模型
目的:当一台代理服务器挂了后实现ip漂移由另外一台机器提供负载均衡功能 实现高可用性
为避免受影响 所有的虚拟机都需要关闭selinux 和防火墙

环境:四台虚拟机
RS1 :192.168.100.243
RS2 :192.168.100.244
Director1:192.168.100. 242
Director2:192.168.100.246
1 RS1
rpm -q httpd 查看是否安装了httpd
如果没有安装则 yum install httpd

echo "<h1>  RS1  </h1>"> /var/www/html/index.html 区别于RS2 

2 RS2
rpm -q httpd 查看是否安装了httpd
如果没有安装则 yum install httpd

echo "<h1>  RS2  </h1>"> /var/www/html/index.html

3 D1
yum install ipvsadm –y
ip addr add 192.168.100.88/32 dev ens37 配置vip
ip addr list
用别的主机ping 192.168.100.88

4 在RS1 上编写脚本
vim set.sh
! /bin/bash
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
stop)
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_annouce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
esac
chmod +x set.sh
bash set.sh start
cat /proc/sys/net/ipv4/conf/all/arp_ignore
1
scp set.sh 192.168.100.244:/root/ 传输 文件到RS2

在RS2 上
bash set.sh start
cat /proc/sys/net/ipv4/conf/all/arp_ignore
1

5 在RS1和RS2上都执行
ifconfig lo:0 192.168.100.88 netmask 255.255.255.255 broadcast 192.168.100.88 up 配置vip在回环网卡上
route add -host 192.168.100.88 dev lo:0 添加路由

6 D1 上
ipvsadm -A -t 192.168.100.88:80 -s rr
ipvsadm -a -t 192.168.100.88:80 -r 192.168.100.243 -g -w 1
ipvsadm -a -t 192.168.100.88:80 -r 192.168.100.244 -g -w 2
ipvsadm –L –n 查看规则
用别的客户端 curl http://192.168.100.88
ipvsadm –C 清空规则
ip addr del 192.168.100.88/32 dev ens37 删除ip
ip a

7 准备D2 在D2上
yum install ipvsadm
ip addr add 192.168.100.88/32 dev eth1
ipvsadm -A -t 192.168.100.88:80 -s rr
ipvsadm -a -t 192.168.100.88:80 -r 192.168.100.243 -g -w 1
ipvsadm -a -t 192.168.100.88:80 -r 192.168.100.244 -g -w 2
ipvsadm –L –n
用别的客户端 curl http://192.168.100.88
ipvsadm -C
ip addr del 192.168.100.88/32 dev eth1

让两个director拥有sorry server (D1和D2)
(1)
yum install httpd -y
vim /var/www/html/index.html

<h1> under maitenance D1  </h1>

(2)
yum install httpd -y
vim /var/www/html/index.html

<h1> under maitenance D2  </h1>

8 D1上
yum install keepalived -y 安装
cd /etc/keepalived
vim keepalived.conf
! Configuration File for keepalived

global_defs {
notification_email {
root@localhost
}
notification_email_from keepalive@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_mt {
script “[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”
interval 1
weight -2

}

vrrp_instance VI_1 {
state MASTER
interface ens37
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass ab7492f2e028
}
virtual_ipaddress {
192.168.100.88/32 dev ens37
}
track_script {
chk_mt
}
notify_master “/etc/keepalived/notify.sh master”
notify_backup “/etc/keepalived/notify.sh backup”
notify_fault “/etc/keepalived/notify.sh fault”
}

virtual_server 192.168.100.88 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.255
protocol TCP

real_server 192.168.100.243 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.100.244 80 {
weight 2
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

9 vim notify.sh

#!/bin/bash
vip=192.168.100.88
contact=‘root@localhost’
notify() {
mailsubject=“hostname to be $1: $vip floating”
mailbody=“date ‘+%F %H:%M:%S’: vrrp transition, hostname changed to be $1”

echo $mailbody | mail -s "$mailsubject" $contact

}
case “$1” in
master)
notify master
exit 0
;;
backup)
notify backup
exit 0
;;
fault)
notify fault
exit 0
;;
*)
echo ‘Usage: basename $0 {master|backup|fault}’
exit 1
;;
esac
chmod +x notify.sh
systemctl restart keepalived
11 scp notify.sh 192.168.100.246:/etc/keepalived/

12 在D2上配置
vim /etc/keepalived/keepalive.conf
! Configuration File for keepalived

global_defs {
notification_email {
root@localhost
}
notification_email_from keepalive@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_mt {
script “[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”
interval 1
weight -2

}

vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass ab7492f2e028
}
virtual_ipaddress {
192.168.100.88/32 dev eth1
}
track_script {
chk_mt
}
notify_master “/etc/keepalived/notify.sh master”
notify_backup “/etc/keepalived/notify.sh backup”
notify_fault “/etc/keepalived/notify.sh fault”
}

virtual_server 192.168.100.88 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.255
protocol TCP
real_server 192.168.100.243 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.100.244 80 {
weight 2
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
13 用浏览器访问 192.168100.88
或者是用其他的虚拟机
curl 192.168100.88
14 让D1挂了,看D2能否运行
在D1 上
cd /etc/keepalived
touch down

内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式控制符号在多条物理通道上的一致性正确性。文档还涵盖了链路性能监控错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计实现支持多种数据速率编码方式的InfiniBand设备;② 开发链路初始化训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控错误检测,提高系统的可靠性稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考技术交流使用。文档内容详尽,对于理解实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值