工作站做网站使用oss做静态网站
news/
2025/9/30 23:30:57/
文章来源:
工作站做网站,使用oss做静态网站,商品房交易网,网站无收录的原因0. 引言
在生产中我们要尽可能避免单点故障#xff0c;nginx也不例外#xff0c;因此搭建主备节点必不可少#xff0c;今天我们来学习下如何利用keepalived实现主备
1. keepalived简介
keepalived 是一个LINUX系统中开源的负载均衡和故障转移软件#xff0c;它主要用于高…0. 引言
在生产中我们要尽可能避免单点故障nginx也不例外因此搭建主备节点必不可少今天我们来学习下如何利用keepalived实现主备
1. keepalived简介
keepalived 是一个LINUX系统中开源的负载均衡和故障转移软件它主要用于高可用性HA环境中的服务监控和冗余其核心含义就是“保活”。
keepalived 最初是为 Linux Virtual ServerLVS设计的但随着时间的推移它已经发展成为一个更为通用的工具可以用于各种类型的服务监控和负载均衡任务。
keepalived 的工作原理是通过所谓的“虚拟路由冗余协议”VRRP来实现的。在 VRRP 中多个服务实例被配置为提供相同的虚拟 IP 地址VIP但只有一个实例在任何给定时间点是活跃的即它是“主”实例。如果主实例失败其他实例可以接管 VIP成为新的主实例从而实现故障转移。
keepalived 提供了几种不同的冗余模式包括
主备模式Master-Slave 在这种模式下只有一个主实例负责处理请求而其他备用实例处于待命状态。如果主实例失败最优先的备用实例将接管成为新的主实例。 负载均衡模式Load Balancing 在这种模式下所有的实例都参与处理请求keepalived 负责将客户端请求分发到不同的实例。这可以通过各种算法来实现如轮询Round Robin、最少连接Least Connections等。 主备负载均衡模式Master-Slave Load Balancing 这种模式结合了主备模式和负载均衡模式的特点允许在主实例失败时进行故障转移同时所有实例都参与处理请求。 keepalived 还提供了一些高级功能如健康检查用于监控服务实例的健康状态、故障恢复用于在服务实例失败后自动重启它们等。它可以通过简单的配置文件进行配置并且可以通过命令行工具进行管理和监控。
如下为nginx搭建高可用架构的流程示意图 keepalived实现主备切换的原理 keepalived主要有3个核心模块core、check和VRRP。 Core模块负责启动和维护Keepalived的主进程以及加载解析全局配置文件。 Check模块负责健康检查Health Checking用于监控网络服务如HTTP、MySQL等的状态。 VRRP模块负责实现VRRP协议管理主备之间的状态和切换。
而VRRP协议就是实现主备切换的关键VRRP可以将两台或多台物理路由器设备虚拟成一个虚拟路由器这个虚拟路由器通过虚拟IP一个或多个对外提供服务当其中一个设备故障就会将路由切换到另一个设备上但对外提供的虚拟ip不变从而保证服务一直可用。
2. keepalived安装与配置
0、首先准备两台服务器安装nginx
yum install nginx -y1、两台服务上都安装keepalived
yum install keepalived -y2、查看服务器网卡名
ifconfig -a3、修改主节点keeplived配置文件
vim /etc/keepalived/keepalived.conf配置内容
global_defs {notification_email { # 发生故障时的邮件通知邮箱acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from xxxqq.com # 邮件发送邮箱smtp_server smtp.qq.com # 邮箱发送服务器这个配置成你公司的或者使用其他第三方的可以配置第三方的比如腾讯的smtp.qq.comsmtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
# 配置心跳检测脚本
vrrp_script nginx_check {script /etc/keepalived/nginx_check.shinterval 1 #每1秒钟检测一次脚本
}
vrrp_instance VI_1 {state MASTERinterface ens160 # 网卡名virtual_router_id 51 # 主备服务器的virtual_router_id要相同priority 100 # 优先级一般主节点更大备节点更小advert_int 1 # 每隔1s发送心跳检测authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.244.100 # 虚拟ip, 可以配置多个与你服务局域网的网段保持一致}track_script {nginx_check}
}3、修改从节点keepalived配置文件注意修改对应的网卡名
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from xxxqq.comsmtp_server smtp.qq.comsmtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_script nginx_check {script /etc/keepalived/nginx_check.shinterval 1 #每1秒钟检测一次脚本
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.244.100 # 与你服务局域网的网段保持一致}track_script {nginx_check}
}4、书写上述脚本存放到两个服务器上
vim /etc/keepalived/nginx_check.sh脚本内容
#!/bin/bash
resultpidof nginx
if [ ! -z ${result} ];
thenexit 0
elseexit 1
fi5、给脚本赋权
chmod x /etc/keepalived/nginx_check.sh6、如果没有安装ipvsadm工具需要先安装
yum install ipvsadm -y
# 启动ipvsadm
ipvsadm7、主备节点上都启动keepalived
# 启动
systemctl start keepalived
# 重启
systemctl restart keepalived
# 停止
systemctl stop keepalived8、如果发现访问不了虚拟ip可以检查下keepalived启动日志根据启动日志报错来进行排查
tail -500f /var/log/messages正常启动日志如下 备用节点启动日志
9、用虚拟ip访问测试发现能够正常转发到nginx则设置成功 10、我们将主节点nginx关闭观察看虚拟ip会不会漂移到备用节点
nginx -s stop11、再次访问nginx可以正常访问说明已经转移到备用节点 通过ip a指令也可以看到备用节点虚拟ip主节点因为宕机已经没有虚拟ip了
3. 常见报错
1、Cant find interface eth0 for vrrp_instance VI_1 !!! 解决 一般是由于网卡名错误导致的使用ifconfig -a 查询网卡名然后修改keepalived.conf中的interface参数即可 2、IPVS: Can’t initialize ipvs: Protocol not available 解决 这是因为没有安装ipvsadm工具导致的安装即可 yum install ipvsadm -y
# 启动ipvsadm
ipvsadm4. 总结
综上我们就实现了nginx主备节点的搭建通过keepalived组件实现了健康检测为转发服务实现高可用保驾护航
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923357.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!