Keepalived 安装与配置

匿名 (未验证) 提交于 2019-12-03 00:09:02

原文大部分内容摘自 https://blog.csdn.net/yinwenjie/article/details/47130609

本文简单记录 Keepalived 软件的安装配置操作.

准备两台服务器,分别安装好 nginx web 服务器.

再分别独立安装Keepalived系统
我们的目标是“在一台工作的Nginx崩溃的情况下,系统能够检测到,并自动将请求切换到另外一台备份的Nginx服务器上”。所以,之前安装的两台Nginx,一台是Master服务器是主要的工作服务器,另一台是备份服务器,在Master服务器出现问题后,由后者接替其工作。如下图所示(外网的请求使用一个由keepalived控制的虚拟的浮动IP进行访问):

使用yum 安装好 keepalived.
下面的脚本代码为检测 nginx 服务器是否正常运行,如果没有运行则尝试启动 nginx,休眠2s后再次检测nginx运行状态,如果为运行,则退出此主机上的 keepalived,由其他 keepalived 接管.

#!/bin/sh if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then     systecmctl start nginx fi  sleep 2 if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then     systecmctl stop keepalived fi
! Configuration File for keepalived # global setting , notify email setting global_defs {    #节点id,每个节点都不同    router_id LVS_V1 }  #检测 nginx 运行状态的脚本 vrrp_script chknginx {     script "/opt/checknginx.sh"     interval 10 }  # instance setting vrrp_instance VI_1 {     # 节点角色,MASTER(一个) 和 BACKUP(多个),按角色选中填写     state BACKUP     interface eth1     # 这里一定是一样的     virtual_router_id 52     # 这里的优先级比Master节点低     priority 99     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }  # 虚拟ip,对外提供,客户端访问此ip即为访问 keepalived 中MASTER 所在主机     virtual_ipaddress {         192.168.1.100     }      track_script {         chknginx     } }

keepalived的切换可以是自动的,但是却做不到毫秒级别,他怎么都需要几秒钟的时间进行切换
这就有一个问题,虽然在主节点出现问题我们转向备份节点时,这个延时无可避免,但是在我们修复主节点后,实际上并没有必要再马上做一次切换,所以Keepalived提供了一种非抢占模式,来满足这个要求
此模式下keepalived 的配置

! Configuration File for keepalived # global setting , notify email setting global_defs {    router_id LVS_V1 }  vrrp_script chknginx {     script "/opt/checknginx.sh"     interval 10     # 一旦节点失效,节点的优先级就减少2     # 有多少个keepalived节点,就填写多少数量。     # 这样保证这个节点的优先级比其他节点都低     weight -2     # fall 表示多少次检查失败,就算节点失效。默认1     #fall 1 }  vrrp_instance VI_1 {     #state状态都是BACKUP表示是主要工作节点。     state BACKUP     interface eth1     virtual_router_id 52     # 这个关键配置项,设置为“非抢占”模式     nopreempt     # 每个节点的优先级一定要不一样     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     #虚拟地址和绑定的端口,如果有多个,就绑定多个     #dev 是指定浮动IP要绑定的网卡设备号     virtual_ipaddress {         192.168.61.100     }      #设置的检查脚本     #关联上方的“vrrp_script chknginx”     track_script {         chknginx     } }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!