leepalived+lvs服务器

使用5台虚拟机,1台作为客户端主机、2台作为LVS调度器、2台作为Real Server,实验拓扑环境结构如图-2所示,基础环境配置如表-2所示

leepalived+lvs服务器
leepalived+lvs服务器
注意:所有主机都需要配置IP地址与有效的YUM源。

1.给web1配置VIP地址
注意:这里的子网掩码必须是32(也就是全255),网络地址与IP地址一样,广播地址与IP地址也一样。
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] ~]# cp ifcfg-lo{,:0}
[[email protected] ~]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0

注意:这里因为web1也配置与调度器一样的VIP地址,默认肯定会出现地址冲突。
写入这四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应。
[[email protected] ~]# vim /etc/sysctl.conf
#手动写入如下4行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#本机不要向外宣告自己的lo回环地址是192.168.4.15

重启网络服务,设置防火墙与SELinux
[[email protected] ~]# systemctl stop NetworkManager
[[email protected] ~]# systemctl disable NetworkManager
[[email protected]1 ~]# systemctl restart network
[[email protected] ~]# ifconfig
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
web2配置同上

2配置proxy主机的网络参数(不配置VIP,由keepalvied自动配置)
[[email protected] ~]# nmcli connection modify eth0 ipv4.method manual
ipv4.addresses 192.168.4.5/24 connection.autoconnect yes
[[email protected] ~]# nmcli connection up eth0

配置proxy2主机的网络参数(不配置VIP,由keepalvied自动配置)
[[email protected] ~]# nmcli connection modify eth0 ipv4.method manual
ipv4.addresses 192.168.4.6/24 connection.autoconnect yes
[[email protected] ~]# nmcli connection up eth0

3.配置后台web服务
1)安装软件,自定义Web页面(web1和web2主机)
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo “192.168.4.100” > /var/www/html/index.html
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo “192.168.4.200” > /var/www/html/index.html

2)启动Web服务器软件(web1和web2主机)
[[email protected] ~]# systemctl start httpd ; systemctl enable httpd
[[email protected] ~]# systemctl start httpd ; systemctl enable httpd

4.调度器安装Keepalived与ipvsadm软件
两台LVS调度器执行相同的操作
[[email protected] ~]# yum install -y keepalived
[[email protected] ~]# systemctl enable keepalived
[[email protected] ~]# yum install -y ipvsadm
[[email protected] ~]# ipvsadm -C

5.部署Keepalived实现LVS-DR模式调度器的高可用
a. LVS1
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected] //设置报警收件人邮箱
}
notification_email_from [email protected] //设置发件人
smtp_server 127.0.0.1 //定义邮件服务器
smtp_connect_timeout 30
router_id lvs1 //设置路由ID号(实验需要修改)
}
vrrp_instance VI_1 {
state MASTER //主服务器为MASTER
interface eth0 //定义网络接口
virtual_router_id 51 //主辅VRID号必须一致
priority 100 //服务器优先级
advert_int 1
authentication {
auth_type pass
auth_pass 1111 //主辅服务器密码必须一致
}
virtual_ipaddress { //配置VIP(实验需要修改)
192.168.4.15
}
}
virtual_server 192.168.4.15 80 { //设置ipvsadm的VIP规则(实验需要修改)
delay_loop 6
lb_algo rr //设置LVS调度算法为RR
lb_kind DR //设置LVS的模式为DR(实验需要修改)
#persistence_timeout 50 //(实验需要注释)
#注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同服务器
protocol TCP
real_server 192.168.4.100 80 { //设置后端web服务器真实IP(实验需要修改)
weight 1 //设置权重为1
TCP_CHECK { //对后台real_server做健康检查(实验需要修改)
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.4.200 80 { //设置后端web服务器真实IP(实验需要修改)
weight 2 //设置权重为1
TCP_CHECK { //对后台real_server做健康检查(实验需要修改)
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[[email protected] ~]# systemctl start keepalived
[[email protected] ~]# ipvsadm -Ln #查看LVS规则
[[email protected] ~]# ip a s #查看VIP配置
[[email protected] ~]# iptables -F

b.LVS2调度器设置Keepalived(在192.168.4.6主机操作)
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected] //设置报警收件人邮箱
}
notification_email_from [email protected] //设置发件人
smtp_server 127.0.0.1 //定义邮件服务器
smtp_connect_timeout 30
router_id lvs2 //设置路由ID号(实验需要修改)
}
vrrp_instance VI_1 {
state BACKUP //从服务器为BACKUP(实验需要修改)
interface eth0 //定义网络接口
virtual_router_id 51 //主辅VRID号必须一致
priority 50 //服务器优先级(实验需要修改)
advert_int 1
authentication {
auth_type pass
auth_pass 1111 //主辅服务器密码必须一致
}
virtual_ipaddress { //设置VIP(实验需要修改)
192.168.4.15
}
}
virtual_server 192.168.4.15 80 { //自动设置LVS规则(实验需要修改)
delay_loop 6
lb_algo rr //设置LVS调度算法为RR
lb_kind DR //设置LVS的模式为DR(实验需要修改)

persistence_timeout 50 //(实验需要注释)

#注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同服务器
protocol TCP
real_server 192.168.4.100 80 { //设置后端web服务器的真实IP(实验需要修改)
weight 1 //设置权重为1
TCP_CHECK { //对后台real_server做健康检查(实验需要修改)
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.4.200 80 { //设置后端web服务器的真实IP(实验需要修改)
weight 2 //设置权重为1
TCP_CHECK { //对后台real_server做健康检查(实验需要修改)
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
[[email protected] ~]# systemctl start keepalived
[[email protected] ~]# ipvsadm -Ln #查看LVS规则
[[email protected] ~]# ip a s #查看VIP设置
[[email protected] ~]# iptables -F

6.客户端测试

客户端使用curl命令反复连接http://192.168.4.15,查看访问的页面是否会轮询到不同的后端真实服务器。