网站开发需要掌握的知识,Wordpress上传文件权限,花都网站设计都,表白网址链接制作keepalived
Keepalived及其工作原理
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案#xff0c;可以解决静态路由出现的单点故障问题
在一个LVS服务集群中通常有主服务器#xff08;MASTER#xff09;和备份服务器#xff08;BACKUP#xff09;两种角色的服务…keepalived
Keepalived及其工作原理
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案可以解决静态路由出现的单点故障问题
在一个LVS服务集群中通常有主服务器MASTER和备份服务器BACKUP两种角色的服务器但是对外表现为一个虚拟IP主服务器会发送
VRRP通告信息给备份服务器当备份服务器收不到VRRP消息的时候即主服务器异常的时候备份服务器就会接管虚拟IP继续提供服务从而
保证了高可用性底层就是基于VRRP协议通过优先级判断主备服务器主服务器间隔时间发送VRRP报文发送到备服务器证明自己还存活当主
挂掉备在一定时间里未接收到VRRP报文备服务器就会抢占主服务接管数据继续进行主的工作。 Keepalived体系主要模块及其作用
keepalived三个模块分别是core、check和vrrp core模块核心模块负责主进程的启动、维护及全局配置文件的加载和解析 vrrp模块实现VRRP协议的 check模块负责健康检查常见的方式有端口检查及URL检查 keepalived的配置相关解释 cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak vim keepalived.conf ...... global_defs { #定义全局参数 --10行--修改邮件服务指向本地 smtp_server 127.0.0.1 --12行--修改指定服务器路由器的名称主备服务器名称须不同主为LVS_01备为LVS_02 router_id LVS_01 --14行--注释掉取消严格遵守VRRP协议功能否则VIP无法被连接 #vrrp_strict } vrrp_instance VI_1 { #定义VRRP热备实例参数 --20行--修改指定热备状态主为MASTER备为BACKUP state MASTER --21行--修改指定承载vip地址的物理接口 interface ens33 --22行--修改指定虚拟路由器的ID号每个热备组保持一致 virtual_router_id 10 #nopreempt #如果设置非抢占模式两个节点state必须为bakcup并加上配置 nopreempt --23行--修改指定优先级数值越大优先级越高这里设置主为100备为90 priority 100 advert_int 1 #通告间隔秒数(心跳频率) authentication { #定义认证信息,每个热备组保持一致 auth_type PASS #认证类型 --27行--修改指定验证密码主备服务器保持一致 auth_pass abc123 } virtual_ipaddress { #指定群集vip地址 192.168.80.188 } } --36行--修改指定虚拟服务器地址(VIP)、端口定义虚拟服务器和Web服务器池参数 virtual_server 192.168.80.188 80 { delay_loop 6 #健康检查的间隔时间(秒) lb_algo rr #指定调度算法轮询(rr) --39行--修改指定群集工作模式直接路由(DR) lb_kind DR persistence_timeout 0 #连接保持时间(秒) protocol TCP #应用服务采用的是 TCP协议 --43行--修改指定第一个Web节点的地址、端口 real_server 192.168.80.12 80 { weight 1 #节点的权重 --45行--删除添加以下健康检查方式 TCP_CHECK { connect_port 80 #添加检查的目标端口 connect_timeout 3 #添加连接超时(秒) nb_get_retry 3 #添加重试次数 delay_before_retry 3 #添加重试间隔 } } real_server 192.168.80.13 80 { #添加第二个 Web节点的地址、端口 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } ##删除后面多余的配置## } systemctl start keepalived ip addr #查看虚拟网卡vip keepalived脑裂
脑裂现象产生的原因
Master一直发送心跳消息给backup主机如果中间的链路突然断掉backup主机将无法收到master主机发送过来的心跳消息也就是vrrp报文
backup这时候会立即抢占master的工作但其实这时候的master是正常工作的此时就会出现脑裂的现象
怎么预防脑裂现象
1.使用shell脚本对这两个主机之间的连通性进行监测如果发现有问题就会立即关闭keepalived服务来防止脑裂的产生
2.增加一条链路作为备用链路即使主链路挂掉了备用链路也会顶上来master主机可以继续给backup主机发送心跳消息
3.监控软件的方法这边主要是采用的zabbix来监控的主要就是创建监控项创建触发器来测试关闭keepalived服务
部署LVSKeepalived集群 主服务器ens33(20.0.0.50) ipvsadm 、keepalived(热备) 虚拟IP20.0.0.126 网卡 ens33:0 备服务器ens33(20.0.0.80) ipvsadm 、keepalived 虚拟IP20.0.0.126 网卡 ens33:0 Web 服务器1ens33 20.0.0.60 lo:0(VIP)20.0.0.126 Web 服务器2ens33 20.0.0.70 lo:0(VIP)20.0.0.126 部署主备服务器
1.配置负载调度器主备都需要进行配置
systemctl stop firewalld.service
setenforce 0
yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs1配置keeplived主、备DR 服务器上都要设置
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs { #定义全局参数
--10行--修改邮件服务指向本地smtp_server 127.0.0.1
--12行--修改指定服务器路由器的名称主备服务器名称须不同主为LVS_01备为LVS_02router_id LVS_01
--14行--注释掉取消严格遵守VRRP协议功能否则VIP无法被连接#vrrp_strict
}vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改指定热备状态主为MASTER备为BACKUPstate MASTER--21行--修改指定承载vip地址的物理接口interface ens33--22行--修改指定虚拟路由器的ID号每个热备组保持一致 virtual_router_id 10#nopreempt #如果设置非抢占模式两个节点state必须为bakcup并加上配置 nopreempt--23行--修改指定优先级数值越大优先级越高这里设置主为100备为90priority 100advert_int 1 #通告间隔秒数(心跳频率)authentication { #定义认证信息,每个热备组保持一致auth_type PASS #认证类型--27行--修改指定验证密码主备服务器保持一致auth_pass 1111}virtual_ipaddress { #指定群集vip地址20.0.0.126}
}--36行--修改指定虚拟服务器地址(VIP)、端口定义虚拟服务器和Web服务器池参数
virtual_server 20.0.0.126 80 {delay_loop 6 #健康检查的间隔时间(秒)lb_algo rr #指定调度算法轮询(rr)--39行--修改指定群集工作模式直接路由(DR)lb_kind DRpersistence_timeout 50 #连接保持时间(秒)protocol TCP #应用服务采用的是 TCP协议--43行--修改指定第一个Web节点的地址、端口real_server 20.0.0.60 80 {weight 1 #节点的权重
--45行--删除原本的添加以下健康检查方式 TCP_CHECK {connect_port 80 #添加检查的目标端口connect_timeout 3 #添加连接超时(秒)nb_get_retry 3 #添加重试次数delay_before_retry 3 #添加重试间隔}}real_server 20.0.0.70 80 { #添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
##删除后面多余的配置##
}
20.0.0.50和80都需要配置vip(虚拟IP)
1vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICEens33:0
ONBOOTyes
IPADDR20.0.0.126
NETMASK255.255.255.255systemctl restart network
ifup ens33:0 systemctl start keepalived
ip addr #查看虚拟网卡vip2启动 ipvsadm 服务
--20.0.0.50---ipvsadm-save /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 20.0.0.126:80 -s rr
ipvsadm -a -t 20.0.0.126:80 -r 20.0.0.60:80 -g
ipvsadm -a -t 20.0.0.126:80 -r 20.0.0.70:80 -gipvsadm -ln #如没有VIP 的分发策略则重启 systemctl restart keepalived--20.0.0.80---
ipvsadm-save /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 20.0.0.126:80 -s rr
ipvsadm -a -t 20.0.0.126:80 -r 20.0.0.60:80 -g
ipvsadm -a -t 20.0.0.126:80 -r 20.0.0.70:80 -gipvsadm -ln3主备调整 proc 响应参数关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects 0
net.ipv4.conf.default.send_redirects 0
net.ipv4.conf.ens33.send_redirects 0sysctl -p配置节点服务器
systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd --20.0.0.60---
echo this is kgc web! /var/www/html/index.html--20.0.0.70---
echo this is benet web! /var/www/html/index.html1配置虚拟 IP 地址20.0.0.60 20.0.0.70VIP20.0.0.126
#此地址仅用作发送 Web响应数据包的源地址并不需要监听客户机的访问请求改由调度器监听并分发。因此使用虚接口 lo∶0 来承载 VIP 地址并为本机添加一条路由记录将访问 VIP 的数据限制在本地以避免通信紊乱。
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICElo:0
ONBOOTyes
IPADDR20.0.0.126
NETMASK255.255.255.255 #注意子网掩码必须全为 1service network restart 或 systemctl restart networkifup lo:0
ifconfig lo:0
route add -host 20.0.0.126 dev lo:0#永久写入方法
vim /etc/rc.local
/sbin/route add -host 20.0.0.126 dev lo:0
chmod x /etc/rc.d/rc.local2调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址避免发生冲突
vim /etc/sysctl.conf
......
net.ipv4.conf.lo.arp_ignore 1 #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce 2 #系统不使用IP包的源地址来设置ARP请求的源地址而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore 1
net.ipv4.conf.all.arp_announce 2sysctl -p
验证20.0.0.126页面