工做原理:(报文转发权利的争夺)bash 路由器开启VRRP功能后,会根据优先级肯定本身在备份组中的主备角色。主用路由器按期发送VRRP通告报文,通知备份组内的其余路由器本身工做正常;服务器 备用路由器则启动定时器等待通告报文的到来。架构 VRRP在不一样的主用抢占方式下,主用角色的替换方式不一样:app l在抢占方式下,备用收到VRRP通告报文后,会将本身的优先级与通告报文中的优先级进行比较。若是大于,则成为主用路由器;不然将保持备用状态。负载均衡 l在非抢占方式下,只要主用路由器没有出现故障,备份组中的路由器即便随后被配置了更高的优先级也不会成为主用路由器。主路由器故障后,备用路由器会认为本身是主用路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出主用路由器,承担报文的转发功能。ide
参考百度百科: 现的是路由器的高可用 轻量级 不须要共享存储 |
VRRP周边技术:(主要是交换机中的vrrp) VRRP,堆叠,端口聚合是三种不一样的技术。堆叠和端口聚合差别巨大。 堆叠适用于接入交换机端口数量不够的状况,没有真正意义上的冗余效果。 端口聚合适用于单一设备使用多条线路链接的状况,实现线路级别的冗余。 VRRP适用于于多套相同设备链接的状况,实现设备级别的冗余。
堆叠简单粗暴最好啊(堆叠成本高,有钱玩堆叠,没钱vrrp都用不起。最少要两台核心交换机。) 能用堆叠就不要用 hsrp、 vrrp。 能用端口聚合就不要用生成树。 能用防火墙就不要用路由器。 能在二层解决的问题就不要在三层解决。(能在低层解决的不要留在高层)
堆叠,思科vss,华为css,h3c irf等等,vrrp如今仍是很经常使用的技术,在Linux中的keeplive也是用vrrp技术的。 CSS(Cluster Switch System),又被称为集×××换机系统(简称为CSS或堆叠)。 是将几台交换机经过专用的堆叠线缆连接起来,对外呈现为一台逻辑交换机。 IRF(Intelligent Resilient Framework,智能弹性架构)是H3C自主研发的软件虚拟化技术。它的核心思想是将多台设备经过IRF物理端口链接在一块儿 VSS(Virtual Switch System)Cisco将两台物理Catalyst 6500系列交换机虚拟成一台逻辑交换机的虚拟化技术叫作VSS(虚拟交换系统)。 一个VRRP路由器有惟一的标识:VRID,范围为0—255 |
EXAMPLE1:场景说明 【state】段不管写Master仍是Backup其实都是其次的,是给人阅读的,主要优先级仍是看【priority】段, 把nopreempt 设置为不抢夺VIP 修改M,B服务器的 state BACKUP 都为【备】类型,同时设置 nopreempt 设置为不抢夺VIP, 而后先启动M服务器,M服务器会成为【主】,而后启动B服务器,因为M的优先级高【priority 100】 因此B不会抢夺VIP,这时M宕机,B成为【主】,接着M恢复正常,因为设置了nopreempt 因此M不会抢夺VIP,B继续为【主】而M为【备】。 同时: [s@S:/home/s]$cat /etc/keepalived/keepalived.conf global_defs { router_id s_app_ha }
vrrp_instance VI_1 { state BACKUP nopreempt interface eth0 virtual_router_id 9 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 0009 } virtual_ipaddress { 10.108.67.9/25 } notify_master "/etc/keepalived/scripts/notify_s_master.sh" notify_backup "/etc/keepalived/scripts/notify_s_backup.sh" }
[s@S:/home/s]$cat /etc/keepalived/scripts/notify_s_backup.sh #!/bin/bash export PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin LOG_FILE="/tmp/keepalived.log" echo "`date '+%Y-%m-%d %T'`: start change role to backup" >> "${LOG_FILE}" #run script echo "`date '+%Y-%m-%d %T'`: change role to backup finish" >> "${LOG_FI
[s@S:/home/s]$cat /etc/keepalived/scripts/notify_s_master.sh #!/bin/bash export PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin LOG_FILE="/tmp/keepalived.log" echo "`date '+%Y-%m-%d %T'`: start change role to master" >> "${LOG_FILE}" #run script su -l suser -c "/bin/sh /u/H/stop.sh" >> "${LOG_FILE}" su -l suser -c "/bin/sh /u/H/start.sh" >> "${LOG_FILE}" echo "`date '+%Y-%m-%d %T'`: change role to master finish" >> "${LOG_FILE}" ********************************************************************************************************* notify_master:当当前节点成为master时,通知脚本执行任务(通常用于启动某服务或者记录日志,好比nginx,haproxy等) notify_backup:当当前节点成为backup时,通知脚本执行任务(通常用于关闭某服务或者记录日志,好比nginx,haproxy等) notify_fault:当当前节点出现故障,执行的任务; |
EXAMPLE2 KeepAlived+LVS(DR调度器)实现负载均衡的高可用。 KeepAlived的功能: 1. 实现调度器的HA 2. 对RealServer作健康检查 3. 动态维护IPVS路由表
LVS: lvs的持久链接。 ipvsadm -Ln -c 调度算法用于决定LVS如何选择后端的RealServer 1、轮叫调度(Round Robin)(简称rr) 2、加权轮叫(Weighted Round Robin)(简称wrr) 3、最少连接(Least Connections)(LC) |
TIPS:
su -l 和su -的意思同样(su为switch user)
应用故障的时候==经过执行外部脚本检查应用运行状态,若是异常则中止Keepaliced。
只有主机 keepalived 服务挂了才会漂移。也就是说重启keepalived服务会让vip漂移。