一、介绍
为了解决调度器挂掉VIP故障的问题
采用主备、双主等模式建立冗余机制
VRRP虚拟路由冗余协议,解决路由故障
VRRP主要解决服务器出去的问题
keepalive主要解决客户端进来的问题
VIP会给谁取决于主备设备的优先级
VRRP相关技术
通告:心跳,优先级;周期性
工作模式:抢占式、非抢占式
安全认证:
无认证
简单字符认证
MDS
工作模式:
主备
双主
keepalived架构
二、应用示例
1、环境配置
注意:以下配置均在防火墙和selinux关掉的情况下
在两台realserver上安装http并写入内容
[root@rs2 ~]# echo rs2 - 172.25.254.120 > /var/www/html/index.html
[root@rs2 ~]# systemctl start httpd[root@rs1 ~]# echo rs1 - 172.25.254.120 > /var/www/html/index.html
[root@rs1 ~]# systemctl start httpd
在ka1里面能够访问
[root@ka1 ~]# curl 172.25.254.110
rs1 - 172.25.254.110
[root@ka1 ~]# curl 172.25.254.120
rs2 - 172.25.254.120
2、安装keepalived
[root@ka1 ~]# yum install keepalived -y
编辑vim配置方便ka配置文件的编辑
[root@ka1 ~]# vim ~/.vimrc
[root@ka1 ~]# vim /etc/keepalived//keepalived.conf
将配置文件复制到ka2上
在ka2上更改以下复制过来的配置文件
两台服务器上启动ka服务
[root@ka1 ~]# systemctl enable --now keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
查看IP
ka1上有VIP
ka2上没有VIP
抓包测试:
可以看到访问的都是10服务器
通过远程ka1关闭卡服务后
自动访问ka2
查看一下IP
这个时候可以看到ka1上没有VIP了,因为VIP在ka1down掉的同时迁移给了ka2
3、开启日志功能
编辑以下文件添加日志级别
[root@ka1 ~]# vim /etc/sysconfig/keepalived
[root@ka1 ~]# vim /etc/rsyslog.conf
重启服务
[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# systemctl restart rsyslog.service
切换到日志目录就可以看到生成了独属于ka的日志文件
[root@ka1 ~]# cd /var/log
[root@ka1 log]# ll | grep kee
-rw------- 1 root root 4943 Aug 13 13:42 keepalived.log
4、独立子配置文件
编辑主配置文件
先去创建我们添加的子配置文件目录
[root@ka1 ~]# mkdir -p /etc/keepalived/conf.d
[root@ka1 ~]# vim /etc/keepalived/conf.d/VIP.conf
将以上注释的内容粘贴到子配置文件中
[root@ka1 ~]# cat /etc/keepalived/conf.d/VIP.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.254.100/24 dev eth0 label eth0:1
}
}
5、设置非抢占模式
需要将子配置文件给注释掉
两台ka配置一样
将ka的服务停掉,查看两台ka的IP,可以发现ka2已经将VIP获取了,ka1没有VIP,如果在开启ka1上的服务是不会把VIP抢过来的
6、设置抢占式延迟模式
编辑vim /etc/keepalived/keepalived.conf文件
7、设置单播通告模式
默认Ka主机之间利用多播通告消息可能会造成网络堵塞,所以我们可以用单播减少流量
抓包测试
停掉ka1的服务使VIP到ka2上去再测试:
8、Keepalived 通知脚本配置
进去邮箱获取授权码先开启服务
[root@ka1 ~]# vim /etc/mail.rc
测试发送
[root@ka1 ~]# echo test message | mail -s test 1589145046@qq.com
[root@ka1 ~]# vim /etc/keepalived/mail.sh
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
测试:
在ka1上重启服务时ka1获取VIPka1会发送一个邮件
在ka1上停掉服务时ka2获取VIPka2会发送一个邮件
[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# systemctl stop keepalived.service
[root@ka1 ~]# systemctl start keepalived.service
9、实现 master/master 的 Keepalived 双主架构
master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。
效果测验:
ka1上会出现100VIP
ka2上会出现200VIP
如果ka1down掉了,那ka2会获得100、200的两个VIP
10、IPVS高可用性的实现- LVS-DR 模式
在rs上准备web服务器并使用脚本绑定VIP至web服务器lo网卡
[root@rs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
或者 ip a a 172.25.254.100 dev lo 临时配置
[root@rs2 ~]# sysctl -a | grep arp 用这条命令查看要加入的参数
[root@rs1 ~]# vim /etc/sysctl.d/arp.conf
配置完sysctl -p刷新
安装ipvsadm方便查看调度策略
[root@ka1 ~]# yum install ipvsadm -y
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
效果测试:
当两台后端服务器都正常运行时,策略都有
当挂掉一台后端服务器的http时,自动修改策略
[root@rs1 network-scripts]# systemctl stop httpd
关闭ka1的服务时自动切换到ka2上
[root@ka1 ~]# systemctl stop keepalived.service
11、实现HAProxy高可用-利用脚本实现主从角色切换
[root@ka1 ~]# vim /etc/keepalived/test.sh 编写一个脚本测试
#!/bin/bash
[ ! -f /mnt/lee ][root@ka1 ~]# chmod +x /etc/keepalived/test.sh
[root@ka1 ~]# sh /etc/keepalived/test.sh
[root@ka1 ~]# echo $? 状态码为0
0
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
定义 VRRP script
调用VRRP script
当没有创建文件时,VIP在ka1上为主
创建文件后,脚本生效自动降低优先级从而切换主设备
[root@ka1 ~]# touch /mnt/lee
[root@ka1 ~]# sh /etc/keepalived/test.sh
[root@ka1 ~]# echo $?
1 非0配置文件中的VRRP script生效
首先在两个ka1和ka2上安装haproxy
为了使ka上即使没有VIP也能启动,我们需要启动内核参数
编辑/etc/sysctl.conf
sysctl -p
编辑haroxy配置文件
启动服务后查看端口是否启动
删掉两台rs中的VIP
ip a d 172.25.254.100/32 dev lo
编辑/etc/sysctl.d/arp.conf
在两台ka上的keepalived配置文件中的策略注释掉
测试访问100
把检测haproxy状态的命令添加到脚本中
[root@ka1 haproxy]# cat /etc/keepalived/test.sh
#!/bin/bash
killall -0 haproxy
编写好脚本后停掉ka1上的haproxy,script生效降低优先级,VIP自动飘逸到ka2上成为主设备。