一个新的网站开发语言,平价网站建设,爱洛阳网,网上开店网站一 vrrp技术
VRRP 相关术语
VRRP能够在不改变组网的情况下#xff0c;将多台路由器虚拟成一个虚拟路由器#xff0c;i通过配置虚拟路由器的IP地址为默认网关#xff0c;实现网关的备份。 协议版本: VRRPv2 (常用) 和VRRPv3:0 VRRPv2仅适用于IPv4网络#xff0c;VRRPv3适用…一 vrrp技术
VRRP 相关术语
VRRP能够在不改变组网的情况下将多台路由器虚拟成一个虚拟路由器i通过配置虚拟路由器的IP地址为默认网关实现网关的备份。 协议版本: VRRPv2 (常用) 和VRRPv3:0 VRRPv2仅适用于IPv4网络VRRPv3适用于IPv4和IPv6两种网络 VRRP协议报文: 其目的IP地址是224.0.0.18目的MAC地址是只有一种报文: Advertisement报文;01-00-5e-00-00-12协议号是112. 虚拟路由器Virtual Router 不是真实存在 虚构出来的 虚拟路由器标识VRID(0-255)唯一标识虚拟路由器 VIPVirtual IP 192.168.91.100 路由1 路由2 VMACVirutal MAC (00-00-5e-00-01-VRID) 物理路由器 master主设备 backup备用设备 priority优先级
状态机决定什么时间是主什么时间是备 心跳线 1s 虚拟路由器的主备 是由priority优先级决定的
1.2 VRRP相关技术
通告心跳优先级等周期性
工作方式抢占式非抢占式延迟抢占模式
安全认证 无认证 简单字符认证预共享密钥 MD5
工作模式 主/备单虚拟路径器 主/主主/备虚拟路由器1备/主虚拟路由器2
#通告
是宣告自己的主权不要妄想抢班夺权不停的向外#抢占式
主服务器宕机过了一段时间修好了再把主权抢过来#非抢占式
主服务器宕机过了一段时间修好了原来的主就作为备了#延迟抢占
主修好后等待一定的时间300s后再次成为主#抢占式好还是非抢占式好#安全认证
如没有安全认证不在集群中的keeplive服务器设置超高的优先级会造成事故#主/主主/备虚拟路由器1备/主虚拟路由器2见下图
环境
有两台服务器
虚拟出两台虚拟路由器
第一台虚拟路由器中服务器1为主服务器2为备那么虚拟IP1就飘在服务器1上真正工作的只有服务器1
第二台虚拟路由器中服务器2为主服务器1为备那么虚拟IP2就飘在服务器2上真正工作的只有服务器2
优点
#提高了资源利用率 这样主备服务器同时干活可以同时运行两个项目 #同样有备份功能 如果服务器1坏了服务器2 将同时拥有虚拟IP1和虚拟IP2
缺点
虽然有备份冗余功能但是对机器的性能要求非常高当其中一台出现故障本来一台运行一个任务现在所有的业务全部压在了一台上有十分大的风险
二 keepalived工具介绍 专为LVS和HA设计的一款健康检查工具支持故障自动切换 (Failover)支持节点健康状态检查(Health checking)判断 LVS 负载调度器、节点服务器的可用性当 master 主机出现故障及时切换到backup 节点保证业务正常当 master故障主机恢复后将其重新加入群集并目业务重新切换回 master 节点。
官网http://keepalived.org/
lvs 调度 虚拟ip 手动配置
keepalived 会lvs ipvsadm
功能 基于vrrp协议完成地址流动 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义) 为ipvs集群的各RS做健康状态检测 基于脚本调用接口完成脚本中定义的功能进而影响集群事务以此支持nginx、haproxy等服务
2.2 Keepalived 架构
官方文档
https://keepalived.org/doc/http://keepalived.org/documentation.html
用户空间核心组件 vrrp stackVIP消息通告 虚拟ip checkers监测real server简单来说 就是监控后端真实服务器的服务是否存活 system call实现 vrrp 协议状态转换时调用脚本的功能 SMTP邮件组件报警邮件 IPVS wrapper生成IPVS规则直接生成ipvsadm Netlink Reflector网络接口将虚拟地址ipvip地址飘动
WatchDog监控进程整个架构是否有问题 控制组件提供keepalived.conf 的解析器完成Keepalived配置 IO复用器针对网络目的而优化的自己的线程抽象 内存管理组件为某些通用的内存管理功能例如分配重新分配发布等提供访问权限
注意keeplive可以配合ngnix等软件反向代理
2.3安装keepalive
yum install keepalived -y
2.4 Keepalived 相关文件 软件包名keepalived 主程序文件/usr/sbin/keepalived 主配置文件/etc/keepalived/keepalived.conf 配置文件示例/usr/share/doc/keepalived/ Unit File/lib/systemd/system/keepalived.service Unit File的环境配置文件 /etc/sysconfig/keepalived CentOS
2.4.1配置组成
/etc/keepalived/keepalived.conf 配置组成 GLOBAL CONFIGURATION
Global definitions全局配置定义邮件配置route_idvrrp配置组播地址 等 VRRP CONFIGURATION
VRRP instance(s)定义vrrp协议中的每个vrrp虚拟路由器的规则基本信息 LVS CONFIGURATIONlvs调度服务器的规则设置
Virtual server group(s)
Virtual server(s)LVS集群的VS和RS
2.4.2全局配置
#/etc/keepalived/keepalived.conf
global_defs {notification_email {rootlocalhost#keepalived 发生故障切换时邮件发送的目标邮箱可以按行区分写多个rootlocalhost360601212qq.com }notification_email_from keepalivedlocalhost #发邮件的地址smtp_server 127.0.0.1 #邮件服务器地址smtp_connect_timeout 30 #邮件服务器连接timeoutrouter_id R1#每个keepalived主机唯一标识建议使用当前主机名但多节点重名不影响vrrp_skip_check_adv_addr #对所有通告报文都检查会比较消耗性能启用此配置后如果收到的通告报文和上一个报文是同一个路由器则跳过检查默认值为全检查
vrrp_strict
#严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则默认导致VIP无法访问,建议不加此项配置。vrrp_garp_interval 0 #gratuitous ARP messages 免费ARP报文发送延迟0表示不延迟vrrp_gna_interval 0 #unsolicited NA messages 不请自来消息发送延迟vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围224.0.0.0到239.255.255.255,默认值224.0.0.18 vrrp_iptables #此项和vrrp_strict同时开启时则不会添加防火墙规则,如果无配置vrrp_strict项,则无需启用此项配置
}
地址分类
自定义组播一般都有规划不能瞎配
主和备要一样
A类1-126
B 128-191
C 192-223
D 224-239
E 240-#修改组播
默认keepalived主机之间利用多播相互通告消息会造成网络拥塞可以替换成单播减少网络流量
注意启用 vrrp_strict 时不能启用单播
#在所有节点vrrp_instance语句块中设置对方主机的IP建议设置为专用于对应心跳线网络的地址而非使用业务网络 第二种官网http://keepalived.org/ 五 实际操作LVS Keepalived 高可用群集
主11-4备11-7
后端服务器11-411-11
①关闭防火墙防护 用户空间核心组件: 1.vrrp stack:VIP消息通告虚拟ip 2.checkers:监测real server (简单来说就是监控后端真实服务器的服务)是否存活3.system call:实现vrrp 协议状态转换时调用脚本的功能 4.SMTP:邮件组件(报警邮件) 5.IPVS wrapper: 生成IPVS规则 (直接生成ipvsadm)
②[rootmcb-11-4 keepalived]# vim keepalived.conf [rootmcb-11-7 keepalived]# vim keepalived.conf ③ 对后端服务器进行配置 ④两台真机开启长连接 ⑤去浏览器访问一下 非抢占模式 抢迟抢占 [rootmcb-11-4 keepalived]# vim keepalived.conf 延迟抢占 六 实操单播多播地址
修改多播: 单播 通知脚本
前言主备切换肯定有大的事故 #!/bin/bash
#
contact1839088509qq.com
notify() {mailsubject$(hostname) to be $1, vip floatingmailbody$(date %F %T): vrrp transition, $(hostname) changed to be $1echo $mailbody | mail -s $mailsubject $contact
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo Usage: $(basename $0) {master|backup|fault}exit 1;;
esac去邮箱看结果 日志功能
开启单独日志功能 [rootmcb-11-4 opt]# vim /etc/rsyslog.conf [rootmcb-11-4 opt]# ls /data/ ls: 无法访问/data/: 没有那个文件或目录 [rootmcb-11-4 opt]# mkdir /data [rootmcb-11-4 opt]# ls /data/ 脑裂解释 什么是脑裂
在高可用HA系统中当联系2个节点的“心跳线”断开时本来为一整体、动作协调的HA系统
就分裂成为2个独立的个体。
由于相互失去了联系都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样争抢“共享
资源”、争起“应用服务”就会发生严重后果。共享资源被瓜分、两边“服务”都起不来了或者两边
“服务”都起来了但同时读写“共享存储”导致数据损坏都有哪些原因导致脑裂
高可用服务器对之间心跳线链路发生故障导致无法正常通信。
因心跳线坏了包括断了老化。
因网卡及相关驱动坏了ip配置及冲突问题网卡直连
因心跳线间连接的设备故障网卡及交换机
高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
高可用服务器上心跳网卡地址等信息配置不正确导致发送心跳失败
其他服务配置不当等原因如心跳方式不同心跳广插冲突、软件Bug等。
多组keepalive服务器造成 组播冲突 1.换组播地址 2.改成单播
默认
单播
组播
广播
A 1 -127
B 128-191
C 192-223
D 224-239 224.0.0.18 20. 如何解决keepalived脑裂问题
在实际生产环境中我们从以下方面防止脑裂
#同时使用串行电缆和以太网电缆连接、同时使用两条心跳线路这样一条线路断了另外一条还是好的依然能传送心跳消息
#当检查脑裂时强行关闭一个心跳节点这个功能需要特殊设备支持如stonith、fence相当于备节点接收不到心跳消息通过单独的线路发送关机命令关闭主节点的电源rsyslog 分割日志#做好对脑裂的监控报警解决常见方案
如果开启防火墙一定要让心跳消息通过一般通过允许IP段的形式解决
可以拉一条以太网网线或者串口线作为主被节点心跳线路的冗余
开发检测程序通过监控软件检测脑裂keepalived lvs 负载均衡 反向代理
lvs 高可用
后端服务器的 健康性检查问题正向代理作用 加快访问速度 可以绕过防火墙
代理的客户端
我要访问 google 正向代理服务器 google 服务器反向代理 负载均衡 优化资源
代理的服务端的客户端 不需要知道服务端到底是什么样子的只要能访问就行keepalived 脑裂
vrrp 协议 心跳线收不到 脑裂项目只能停留在实验室里很难进入企业
七 keepalived解决nginx的高可用
利用脚本解决VRRP Script 是否启用nginx
keepalived利用 VRRP Script 技术可以调用外部的辅助脚本进行资源监控并根据监控的结果实现优先动态调整从而实现其它应用的高可用性功能
参考配置文件
/usr/share/doc/keepalived/keepalived.conf.vrrp.localcheck VRRP Script 配置
分两步实现 定义脚本
vrrp_script自定义资源监控脚本vrrp实例根据脚本返回值公共定义可被多个实例调用定义在vrrp实例之外的独立配置块一般放在global_defs设置块之后。通常此脚本用于监控指定应用的状态。一旦发现应用的状态异常则触发对MASTER节点的权重减至低于SLAVE节点从而实现 VIP 切换到 SLAVE 节点
vrrp_script SCRIPT_NAME {script STRING|QUOTED-STRING #此脚本返回值为非0时会触发下面OPTIONS执行OPTIONS
}
调用脚本
track_script调用vrrp_script定义的脚本去监控资源定义在VRRP实例之内调用事先定义的vrrp_scripttrack_script {SCRIPT_NAME_1SCRIPT_NAME_2
} 此时同样能检测11-5 11-4文本信息 把主机负载均衡脚本烤到备机去 编辑文本 把主机文件再烤到备机 浏览器检测一下 若主机nginx关掉备用就是主机了 此时两台真机就无法显示了 去备用机检测192.168.11.188又回来了
两台真机仍能检测出来文本内容