企业快速建站免费模板,依兰县建设局网站,那个公司搭建网站,湘西网站建设目录 高可用HAkeepalived实现高可用VRRP协议单VIP架构VIP飘移脑裂双VIP架构#xff08;互为主从#xff09;keepalived监控 、执行脚本notify 高可用HA
单点故障#xff1a;某个重要的功能只有一份#xff0c;如果他出现问题#xff0c;会导致全局不能使用
“高可用性”… 目录 高可用HAkeepalived实现高可用VRRP协议单VIP架构VIP飘移脑裂双VIP架构互为主从keepalived监控 、执行脚本notify 高可用HA
单点故障某个重要的功能只有一份如果他出现问题会导致全局不能使用
“高可用性”High Availability缩写为HA用于描述系统或服务在面临故障、硬件或软件问题时能够继续正常运行的能力。高可用性的目标是最大程度地减少系统中断或停机时间确保用户可以随时访问服务或应用程序。
三个经典的高可用软件hearbeat、keepalived、HAproxy
keepalived实现高可用
keepalived两大核心功能 1、loadbalance 负载均衡ipvs - LVS软件在Linux内核里已经安装 2、high-avaliability 高可用vrrp协议虚拟路由冗余协议
keepalived启动之后会有三个进程 父进程 内存管理子进程管理等 子进程 VRRP子进程 子进程 healthchecker子进程查看各自服务器的健康状况 出错了可以看日志/var/log/messages 两台负载均衡器上都需要安装nginx使用nginx做七层负载均衡
VRRP协议
virtual router redundancy protocol 虚拟路由冗余协议 一组路由器协同工作担任不同工作担任不同角色有master角色也有backup角色 master角色的路由器的接口承担实际的数量流量转发任务 backup路由器监听master路由器的状态并在master路由器发生故障时接替其工作从而保证业务流量的平滑切换
vrrp协议工作在网络层 vrrp协议使用固定的组播地址224.0.0.18进行发送 帧的组播地址目的地址 - 01:00:5E:00:00:12 第8位为1代表这个mac地址是一个广播地址
vrrp协议的工作原理
所有的路由器或服务器发生vrrp宣告报文进行选举必须是相同vrid和认证密码优先级高的服务器或路由器会被选举为mastermaster定时发生vrrp通告报文以便向backup路由器告知自己的存活情况默认时间间隔是1秒接收master设备发送的vrrp通告报文判断master设备的状态是否正常。如果超过1秒没有收到vrrp报文就认为master挂了开始重新选举新的mastervip会飘移到新的master上
单VIP架构
LB2192.168.232.165 在两台LB上安装keepalived yum install keepalived -y修改主LB的配置文件 cd /etc/keepalived/
vim keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strict # 注释这一行vrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER # 主LBinterface ens33virtual_router_id 58 # 虚拟路由器idpriority 120 # 优先级0~255advert_int 1 # 宣告消息的间隔事件为1秒authentication { # 认证auth_type PASSauth_pass 1111}virtual_ipaddress { # VIP192.168.232.111}
}修改从LB的配置文件 cd /etc/keepalived/
vim keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUP # 从LBinterface ens33virtual_router_id 58priority 100 # 优先级要比主LB小advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.232.111}
} 配置完成之后刷新服务 service keepalived restart 这个时候就可以在主LB服务器上看到VIP而从LB服务器上没有这个VIP。VIP在哪一个服务器上就由哪一个服务器对外提供服务
VIP飘移
master挂了或keepalived服务关闭VIP就会飘移到slave上这个时候就可以在从LB上看到这个VIP。如果master恢复VIP就会飘会主LB上优先级更高
脑裂
多台机器出现同一个VIP
脑裂出现的原因 1、vrid虚拟路由id不一样 2、网络通信有问题防火墙组织了vrrp报文的通信 3、认证密码不一样
双VIP架构互为主从
双VIP的架构可以实现负载均衡
只要将以下代码加入主LB的配置文件作为第二个VIP的从服务器
vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 59priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.232.112}
}将以下代码加入从LB的配置文件作为第二个VIP的主服务器
vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 59priority 120advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.232.112}
}这个时候就可以在主LB上看到192.168.232.111这个VIP在从LB上看到192.168.232.112 完成高可用之后就可以在DNS服务器里添加这两个IP的记录了 keepalived监控 、执行脚本
Keepalived 可以通过检查状态来了解当前主服务器和备用服务器的状态
keepalived的基础是nginx服务nginx服务停止了就会检测为状态异常
实例监控本机的nginx进程是否运行如果nginx进程不运行就立马将优先级降低30
如何判断nginx是否运行 1、pidof nginx 2、查看kiilall -0 nginx这条命令的返回值 编写监控nginx脚本授予可执行权限也可以直接写在keepalived里 mkdir /nginx
cd /nginx
vim check_nginx.sh#!/bin/bash
if /usr/sbin/pidof nginx /dev/null ;thenexit 0
elseexit 1
fichmod x check_nginx.sh在keepalived里定义并调用监控脚本 # 在global_defts部分后面加
# 定义监控脚本chk_nginx
# 当脚本执行返回值为1时才会执行下面权重值-30的操作
vrrp_script chk_nginx {script /nginx/check_nginx.shinterval 1 # 每隔一秒执行weight -30 # 返回值为0时就把优先级-30
}#主LB在vrrp_instance VI_1中添加从在VI_2中添加
# 调用监控脚本
track_script {chk_nginx
}是master的那个vrrp实例调用vrrp监控脚本
notify
notify脚本是当本节点服务器成为某个角色的时候就会去执行某个脚本
# 状态改变为master后执行的脚本
notify_master /mail/master.sh# 状态改变为backup后执行的脚本
notify_backup /mail/backup.sh# vrrp停止后执行的脚本
notify_stop /mail/stop.sh