一.VRRP(Virtual Router Redundancy Protocol)
1.1什么是vrrp:虚拟路由冗余协议,解决静态网关单点风险
1.2 哪些地方用到这个协议:
1.物理层:路由器、三层交换机
2.软件层:keepalived
1.3VRRP 相关术语:
虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
物理路由器:
master:主设备
backup:备用设备
priority:优先级
1.4VRRP 相关技术:
通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式
安全认证:
1.无认证
2.简单字符认证:预共享密钥
3.MD5
工作模式:
1.主/备:单虚拟路由器
2.主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)
二.Keepalived
2.1keepalived简介:
vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务
官网:http://keepalived.org/ 功能:
1. 基于vrrp协议完成地址流动
2.为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
3.为ipvs集群的各RS做健康状态检测
4.基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务
2.2Keepalived 架构:
1.用户空间核心组件:
vrrp stack:VIP消息通告
checkers:监测real server
system call:实现 vrrp 协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程
2.控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
3.IO复用器:针对网络目的而优化的自己的线程抽象
4.内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限
2.3Keepalived 相关文件:
软件包名:keepalived
主程序文件:/usr/sbin/keepalived
主配置文件:/etc/keepalived/keepalived.conf
配置文件示例:/usr/share/doc/keepalived/
Unit File:/lib/systemd/system/keepalived.service
Unit File的环境配置文件:/etc/sysconfig/keepalived
2.4keepalived的相关实验:
2.4.1启用keepalived日志功能:
1.先下载keepalived:yum install keepalived
2.需要修改的文件路径:
3.修改第一个文件:
4.修改第二个文件:
5.日志功能启用成功:
2.4.2创建keepalived子配置文件:
1.创建子配置文件目录并创建子配置文件:
2.将注释掉的这一段放在子配置文件中并且写入include加子配置文件路径:
3.vip写入子配置文件:
4.重启keepalived服务:
5.ifconfig查看到vip生成子配置文件生效:
2.4.3VRRP虚拟路由冗余协议基本实验:
1.修改ka1配置文件etc下keepalived下keepalived conf文件:
2.修改ka2配置文件:
3.用vrrpserver2服务器远程登录ka1并测试:
4.ifconfig命令可以查看vip在ka1:
5.接下来我们模拟ka1故障关掉ka1的keepalived服务:
6.查看vrrpserver2服务器的测试页面由172.25.254.10变为20:
7.我们可以用ifconfig命令查看到vip移动到了ka2上面:
8.ka1的vip被转移到了ka2:
9.接下来我们再次重启ka1的keepalived服务:
10.查看vrrpserver2服务器的测试页面由172.25.254.20变为10:
11.可以发现ka1把vip从ka2抢夺了回来(能抢夺ka1的优先级应该高于ka2):
12.ka2的vip已经被ka1抢夺:
13.允许和vip通信两台ka上都要配置:
14.通信成功:
2.4.4抢占与非抢占模式:
2.4.4.1延迟抢占模式:
1.
2.
3.
4.
5.
6.还没到10s所以还没抢占vip:
7.10s后查看出现vip:
2.4.4.2非抢占模式:
1.
2.
3.
4.
5.
6.ka1再次启动还是没有vip:
7.关闭ka2的keepalived服务后ka1获得vip:systemctl stop keepalived.service
2.4.5vip单播配置:
1.编辑/etc/keepalived/keepalived.conf文件,ka1配置如下:
2.ka2配置:
3.启动单播得注释掉这条参数:
4.ka1到ka2单播成功(注意源主机得有vip才能单播):
5.关掉ka1的keepalived服务使ka2得到vip后ka2到ka1单播成功:
2.4.6邮件配置:
1.进入qq邮箱
2.
3.
4.
5.编辑etc下的mail rc文件:
6.发送一条消息给邮箱:
7.邮件收到,实验成功:
2.4.7keepalived通知脚本配置:
1.创建并编写一个脚本文件mail.sh:
2.编辑内容:
3.赋予脚本文件可执行权限:
4.编辑/etc/keealived/keepalived.conf文件,添加图中内容并重启服务:
5.执行mail.sh脚本
6.关闭和开启ka1的keepalived服务后会发来两条消息,实验成功:
2.4.8keepalived双主架构:
1.ka1的keepalived配置:
2.ka2的keepalived配置:
3.查看ka1vip有100配置成功:
4.查看ka2vip有200配置成功:
2.4.9实现IPVS的高可用性,单主的LVS-DR模式实验:
1.相关配置文件的一些参数含义:
2.两台keepalived主句得下载ipvsadm:
3.两台keepalived主机在根下的etc下的keepalived下的keepalived.conf配置文件配置DR模式:
4.在两台服务器上添加临时vip:
5.查看要解决的arp响应的配置参数方便复制粘贴:
6.两台服务器解决arp响应问题要配置的文件路径:
7.创建arp.conf文件并编辑:
8.通过ipvsadm -Ln命令查看算法策略已生成:
9.curl vip地址基于权重的轮询访问成功:
2.4.10实现haproxy高可用(实验前先删除刚刚两台服务器配置的vip和解决arp响应的pei并且把刚刚两台keepalived主机的keepalived.conf文件里的LVS-DR配置注释掉):
1.两台keepalived上下载haproxy:
2.编辑haproxy.conf文件:
3.编辑keepalived.conf文件:
4.编辑sysctl conf文件:
5.创建test脚本并编辑:
6.先用vrrpserver2远程登录ka1curl 172.25.254.100:
7.关闭ka1keepalived:
8.发现vip从ka1转移到ka2:
9.但是还可以正常访问: