LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统
keepalived的作用是检测后端TCP服务的状态,如果有一台提供TCP服务的后端节点死机,或者工作出现故障,keepalived会及时检测到,并将有故障的节点从系统中剔除,当提供TCP服务的节点恢复并且正常提供服务后keepalived会自动将TCP服务的节点加入到集群中。

部署lvs
先决条件
- 本地已经在virtualbox中安装了三台centos7虚拟机
- 三节点之间网络已经互联,通常情况下,只有用作LVS服务器的节点能访问外网
- 三节点分别名为bg01,bg02,bg03,其中 bg01 用作LVS
接下来按顺序操作下面三步,不要擅自修改顺序
Step1 配置bg01
# 首先为网卡(这里的网卡为enp0s3)添加一个没有被占用的ip(当前添加的是192.168.30.100)
ifconfig enp0s3:3 192.168.30.100/24
# 检查上一步添加的ip是否已经加上
ifconfig
# 修改 ip_forward(请求操作方式,忽略、转发、处理),默认情况下为 0
cd /proc/sys/net/ipv4
cat ip_forward
echo 1 > ip_forward
Step 2 配置bg02和bg03
bg02 和 bg03 配置一致
# 首先修改相关配置文件,都是修改请求操作方式
echo 1 > /proc/sys/net/ipv4/conf/enp0s3/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/enp0s3/arp_announce
# 添加一个lo转发方式
ifconfig lo:3 192.168.30.100 netmask 255.255.255.255
# 安装一个apache服务器
yum install -y httpd
# 为服务器添加一个默认html文件(以下是一个bg02的示范,在bg03中操作时将echo的内容改为 echo "form bg03" )
echo "from bg02" > /var/ww/html/index.html
# 启动服务
systemctl start httpd
# 检测一下服务是否正常
# 在物理机浏览器中分别输入bg02的ip和bg03的ip,查看是否显示之前echo的内容
Step 3继续配置bg01
# 首先安装LVS,在kernel中的名字为ipvsadm
yum install ipvsadm -y
# 设置ipvsadm 的负载模式为轮询
ipvsadm -A -t 192.168.30.100:80 -s rr
# 为负载添加两个DIP,192.168.30.56 和 192.168.30.57 分别是 bg01 和 bg02 的
ipvsadm -a -t 192.168.30.100:80 -r 192.168.30.56
ipvsadm -a -t 192.168.30.100:80 -r 192.168.30.57
# 检测负载是否正常
# 在浏览器中输入 192.168.30.100 ,一直刷新,查看页面显示内容是否在一直变化,分别是之前bg02和bg03的内容
# 有可能一直刷新内容不变,是因为浏览器缓存导致的
# 相关命令,查看负载访问情况
ipvsadm -ln
ipvsadm -lnc
netstat -natp
部署keepalived
先决条件
- 本地已经在virtualbox中安装了4台centos7虚拟机
- 4节点之间网络已经互联
- 4节点分别命名为bg01,bg02,bg03,bg04,其中bg01和bg04用作vip server,另外两台作real server
接下来按照以下顺序操作
Step1 配置bg01 和bg04
如果之前 bg01 或者 bg04 已经安装过lvs,并且配置过网卡,需要清除之前的网卡配置
命令为 ifconfig -C
以下命令以及配置 bg01 与 bg04 都需要
# 首先安装 keepalived
yum install -y keepalived
# 配置 keepalvied.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.backup
vim keepalived.conf
# 当前配置文件如下
# start
# 对于 global_defs 邮件服务,本地可以不需要
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# 需要注释掉vrrp_strict,否则会出现无法ping通vip 的情况
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
# 配置statue,对于bg01 配置为MASTER,对于bg04 配置为BACKUP作为HA(主备)
state MASTER
# 根据实际修改 interface
interface enp0s3
virtual_router_id 51
# 对于priority 优先级配置,当 MASTER > BACKUP 时,
# 如果 MASTER 挂了再恢复时,服务最终会交给MASTER
# 当 MASTER == BACKUP,则两者具有相同优先级,
# 如果 MASTER 挂了再恢复时,服务最终不会交给MASTER,仍然由BACKUP持有
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# 配置 vip 和网卡
192.168.30.100/24 dev enp0s3 label enp0s3:3
}
}
# 添加vip 和开放端口
virtual_server 192.168.30.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
# 添加real server 和端口,并且配置HTTP_GET
real_server 192.168.30.56 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
# 添加real server 和端口,并且配置HTTP_GET
real_server 192.168.30.57 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
# end
Step2 配置bg02 和bg03
配置与配置 lvs 时,配置 bg02 和 bg03 时相同
因此此处省略,请上翻参考 配置lvs 的Step2 部分
Step3 继续配置 bg01 和 bg04
# 分别启动keepalived,通过浏览器访问 192.168.30.100 即可访问,即表示成果
systemctl start keepalived
相关测试
网卡插拔测试
# 当 MASTER(bg01) 优先级大于 BACKUP(bg04),先分别在 bg01 和 bg04 中执行以下命令
ifconfig
# 得到结果中有一条类似下图,bg01 有而 bg04 没有

# 此时在bg01 中继续执行以下命令,拔掉网卡 enp0s3
ifconfig enp0s3 down
# 此时,分别在 bg01 和bg04 中分别执行 ifconfig ,发现结果反过来了,bg01 没有上述图片中的内容,而 bg04 中出现了图片中的内容
# 这里实现了keepalived 的主备切换
# 继续,在 bg01 中执行以下命令,将拔掉的 enp0s3网卡插回去
ifconfig enp0s3 up
# 紧接着,分别在 bg01 和 bg04 中分别执行 ifconfig
# 打印结果又恢复到测试开始时第一次执行 ifconfig 的结果
# 这就是因为 MASTER(bg01) 的优先级 高于BACKUP(bg04)的原因,
# 只要 MASTER alived,那么服务交由 MASTER 接管
real server 重启测试
# 在bg01 中执行以下命令
ipvsadm -ln
# 结果如下图所示

# 此时,负载有两台real server
# 接着,进入 bg02 ,执行以下命令,关闭 httpd 服务
systemctl stop httpd
# 再回到 bg01 中,执行以下命令
ipvsadm -ln
# 结果如下图所示

# 此时只剩下 bg03 负载只剩下这台real server
# 紧接着,回到 bg02 中,重启httpd 服务
systemctl start httpd
# 最后,回到 bg01 中,重新执行以下命令
ipvsadm -ln
# 显示结果如下图,keepalived又重新把 bg02 加入负载server


本文详细介绍了在CentOS7环境下如何部署LVS和Keepalived。首先,确保三台虚拟机bg01、bg02和bg03网络互通,然后依次配置LVS的bg01、bg02和bg03。接着,部署Keepalived,需要四台虚拟机bg01、bg02、bg03和bg04,配置VIP服务器和Real服务器。最后,进行网卡插拔和Real服务器重启的测试,确保高可用性。
1687

被折叠的 条评论
为什么被折叠?



