一.准备工作
1、准备环境
配置四台主机:
dr1: 192.168.19.19 负载均衡服务器MASTER
dr2: 192.168.19.20 负载均衡服务器BACKUP
web1: 192.168.19.21
web2: 192.168.1922
关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
配置yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
epel-release
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
二、操作
在dr1主机上操作
安装keepalived和ipvsadm
yum install -y keepalived ipvsadm
编写keepalived配置文件
vim /etc/keepalived/keepalived.conf
把里面的内容都删掉,填写以下内容
! Configuration File for keepalived
global_defs {
router_id Director1 #两边不一样。
}
vrrp_instance VI_1 {
state MASTER #另外一台机器是BACKUP
interface ens33 #心跳网卡
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 150 #优先级
advert_int 1 #检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.229.100/24 dev ens33 #VIP和工作接口
}
}
virtual_server 192.168.19.100 80 { #LVS 配置,VIP,就是keepalived配置的对外地址
delay_loop 3 #服务论询的时间间隔,#每隔3秒检查一次real_server状态
lb_algo rr #LVS 调度算法
lb_kind DR #LVS 集群模式
protocol TCP
real_server 192.168.19.21 80 {
weight 1 #权重
TCP_CHECK {
connect_timeout 3 #健康检查方式,连接超时时间
}
}
real_server 192.168.19.22 80 {
weight 1
TCP_CHECK {
connect_timeout 3 #设定连接超时时间为3秒 超过视为掉线
}
}
}
在dr2主机上操作
安装keepalived
yum install -y keepalived ipvsadm
拷贝master上的keepalived.conf到backup上:
scp 192.168.19.19:/etc/keepalived/keepalived.conf 192.168.19.20:/etc/keepalived/
拷贝后,修改配置文件
- router_id Director2
- state BACKUP
- priority 140
vim /etc/keepalived/keepalived.conf
在dr1和dr2上操作
启动服务
systemctl start keepalived
systemctl enable keepalived
重启
reboot
在web1和web2上操作
yum install httpd && systemctl start httpd && systemctl enable httpd
在web1上操作
echo web1 > /var/www/html/index.html
在web2上操作
echo web2 > /var/www/html/index.html
配置虚拟地址(web1和web2都配置)
cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.19.100 #对外提供服务的地址
NETMASK=255.255.255.255
ONBOOT=yes
其他行注释掉
配置路由
route add 192.168.19.100 dev lo
配置ARP(忽略arp请求 可以回复)
vim /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
重启网卡
systemctl restart network
三、测试
1.观察lvs路由条目
在dr1上查询
ipvsadm -Ln
2.观察vip地址在哪台机器上
ip a
现在在dr1上
3.在浏览器上访问vip地址
等待一会再次刷新
在dr1上查看
ipvsadm -Lnc
此时如果关闭dr1的keepalived服务,那么vip就会挂在dr2上
systemctl stop keepalived
再次访问
在dr2上查看
ipvsadm -Lnc
如果关闭web2的httpd服务,就会一直访问web1
systemctl stop httpd
多访问几次
在dr2上查看
ipvsadm -Lnc