Day40
ARP广播的问题
当客户端发起访问VIP对应的域名请求时,根据网络通信原理会产生ARP广播
因为负载均衡器和真实服务器在同一网络并且VIP设置在集群中的每个节点上
此时集群内的真实服务器会尝试回答来自客户端的ARP广播,这就会产生问题,大家都说我是VIP
内核参数说明
arp_ignore(定义回复ARP广播的方式)
0(默认值)
回应所有本地地址ARP广播,本地地址可以配置在任意网络接口上
1
回应配置在入站网卡接口上的任意IP地址的ARP广播
arp——announce
0(默认)
使用配置在任意网卡接口上的本地IP地址
2
对查询目标使用最适当的本地地址。在此模式下忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址。如果没有合适的地址被发现,将选择当前发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送。
ARP防火墙
使用ARP防火墙也可以禁止对VIP的ARP请求
此方案为备选方案,非必须操作
yum -y install arptables_if
arptables -A IN -d <virtual_ip> -p DROP
arptables -A OUT -s <virtual_ip> -j mangle > --mangle-ip-s <real_ip>
Keepalived热备
Keeoalived概述
Keepalived实现了高可用集群
KeepaLived最初是为了LVS设计的
专门监控各个服务器节点的状态
Keepalived后来加入了VRRP功能,防止单点故障
Keepalived运行原理
keepalived检测每个服务器节点状态
服务器节点异常或者工作出现故障,Keepalived再将其加入到集群系统中
所有工作自动完成,无需人工干预
Keepalived安装
yum install -y keepalived
配置文件解析
/etc/keepalived/keepalived.conf
global_defs {
notification_email {
admin@tarena.com.cn //设置报警收件人邮箱
}
notification_email_from Alexandre.Cassen@firewall.loc //设置发件人
smtp_server 192.168.200.1 //定义邮箱服务器
smtp_connect_timeout 30
router_id web1 //设置路由ID号
}
vrrp_instance VI_1 {
state MASTER //主服务器设置为MASTER辅助为BACKUP
interface ens37 //定义网络接口
virtual_router_id 51 //主辅VRID号必须一致
priority 100 //服务器优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 //主辅服务器的密码必须一致
}
virtual_ipaddress {
192.168.4.80/24
}
}
环境准备
准备三台Linux服务器,两台做Web服务器,并部署Keepalived高可用软件,一台作为客户端主机,实现如下功能
拓扑图
案例
配置网络环境
1)设置Web1服务器网络参数、配置Web服务(不能照抄网卡名称)
[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up eth0
[root@web1 ~]# yum -y install httpd #安装软件
[root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html #创建网页文件
[root@web1 ~]# systemctl restart httpd #启动服务器
2)设置Web2服务器网络参数、配置Web服务(不能照抄网卡名称)
[root@web2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.200/24 connection.autoconnect yes[root@web2 ~]# nmcli connection up eth0[root@web2 ~]# yum -y install httpd #安装软件[root@web2 ~]# echo "192.168.4.200" > /var/www/html/index.html #创建网页文件[root@web2 ~]# systemctl restart httpd #启动服务器
3)配置proxy主机的网络参数(如果已经设置,可以忽略此步骤)
备注:这个实验,我们使用proxy当作客户端主机,网卡名称不能照抄。
[root@proxy ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.5/24 connection.autoconnect yes[root@proxy ~]# nmcli connection up eth0
安装Keepalived软件
注意:两台Web服务器做相同的操作。
[root@web1 ~]# yum install -y keepalived
[root@web2 ~]# yum install -y keepalived
部署Keepalived服务
1)修改web1服务器Keepalived配置文件
[root@web1 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
router_id web1 #12行,设置路由ID号(实验需要修改)
vrrp_iptables #13行,清除防火墙的拦截规则(实验需要修改,手动添加该行)
}
vrrp_instance VI_1 {
state MASTER #21行,主服务器为MASTE