keepalived+nginx实现高可用(二)

Keepalived的所有功能是配置keepalived.conf文件来实现的,下面我们来配置keepalived.conf


一。 Master节点(192.168.43.129)配置 vi  /usr/local/program/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived
#全局部分
global_defs {
   notification_email {
    admin@jstudio.org   #设置报警邮件单个或多个地址
    service@jstudio.org 
    manager@jstudio.org 
   }
   notification_email_from monitor@jstudio.org  #邮件的发送地址
   smtp_server 192.168.200.1	#smtp 地址
   smtp_connect_timeout 30		#连接smtp服务器的超时时间
   router_id NODE_A				#本节点的标识
}

## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。
## 如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。
## 其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。

## 检测 nginx 状态的脚本
vrrp_script chk_nginx { 
    script "/usr/local/program/keepalived/sbin/nginx_check.sh"		        # 检测 nginx 状态的脚本路径 
    interval 2 									# 检测时间间隔 
    weight -20 									# 如果条件成立,权重-20  
}

## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
    state MASTER				# 指定A节点为主节点 备用节点上设置为BACKUP即可 
    interface eno16777736		# 绑定的网卡,我机器上是eno16777736,用ifconfig查看
    virtual_router_id 51		# VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
	mcast_src_ip 192.168.43.129 # 本机 IP 地址
    priority 100				# 主节点的优先级(1-254之间),备用节点必须比主节点优先级低
	nopreempt 					# 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1				# 设定主备之间检查时间(组播信息发送间隔),两个节点设置必须一样
    authentication {			# 设置验证信息,两个节点必须一致
        auth_type PASS			# 设定验证类型
        auth_pass 1111			# 设定密码
    }
	## 虚拟IP池, 两个节点设置必须一样
    virtual_ipaddress {			# 虚拟 ip,可以定义多个
        192.168.43.120
    }
	
	## 将 track_script 块加入 instance 配置块 
    track_script { 
        chk_nginx ## 执行 Nginx 监控的服务 
	} 
}	

email通知(notification_email、smtp_server、smtp_connect_timeout):用于服务有故障时发送邮件报警,可选项,不建议用。需要系统开启sendmail服务,建议用第三独立监控服务,如用nagios全面监控代替。 

二。 Slave节点(192.168.43.130)配置 vi  /usr/local/program/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived
#全局部分
global_defs {
   notification_email {
    admin@jstudio.org   #设置报警邮件单个或多个地址
    service@jstudio.org 
    manager@jstudio.org 
   }
   notification_email_from monitor@jstudio.org  #邮件的发送地址
   smtp_server 192.168.200.1	#smtp 地址
   smtp_connect_timeout 30		#连接smtp服务器的超时时间
   router_id NODE_B				#本节点的标识
}

## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。
## 如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。
## 其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。

## 检测 nginx 状态的脚本
vrrp_script chk_nginx { 
    script "/usr/local/program/keepalived/sbin/nginx_check.sh"		        # 检测 nginx 状态的脚本路径 
    interval 2 									# 检测时间间隔 
    weight -20 									# 如果条件成立,权重-20  
}

## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
    state BACKUP				# 指定B节点为备用节点 主节点上设置为MASTER即可 
    interface eno16777736		# 绑定的网卡,我机器上是eno16777736,用ifconfig查看
    virtual_router_id 51		# VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
	mcast_src_ip 192.168.43.130 # 本机 IP 地址
    priority 80					# 主节点的优先级(1-254之间),备用节点必须比主节点优先级低
	nopreempt 					# 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1				# 设定主备之间检查时间(组播信息发送间隔),两个节点设置必须一样
    authentication {			# 设置验证信息,两个节点必须一致
        auth_type PASS			# 设定验证类型
        auth_pass 1111			# 设定密码
    }
	## 虚拟IP池, 两个节点设置必须一样
    virtual_ipaddress {			# 虚拟 ip,可以定义多个
        192.168.43.120
    }
	
	## 将 track_script 块加入 instance 配置块 
    track_script { 
        chk_nginx ## 执行 Nginx 监控的服务 
	} 
}

三。 编写 Nginx 状态检测脚本 /usr/local/program/keepalived/sbin/nginx_check.sh ( 在keepalived.conf配置中被keepalived调用) 

#!/bin/bash
nginx_state=`ps -C nginx --no-header | wc -l`
if [ $nginx_state == 0 ];then
    /home/zsg/program/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` == 0 ];then
        killall keepalived
    fi
fi


四。启动 Keepalived 

# service keepalived start 
Starting keepalived: [  OK  ] 
[root@zk-02 conf]# ps -ef|grep keepalived
root       7901      1  0 17:13 ?        00:00:00 /usr/local/program/keepalived/sbin/keepalived -D -f /usr/local/program/keepalived/etc/keepalived/keepalived.conf
root       7902   7901  0 17:13 ?        00:00:00 /usr/local/program/keepalived/sbin/keepalived -D -f /usr/local/program/keepalived/etc/keepalived/keepalived.conf
root       7903   7901  0 17:13 ?        00:00:00 /usr/local/program/keepalived/sbin/keepalived -D -f /usr/local/program/keepalived/etc/keepalived/keepalived.conf
root       7911   3035  0 17:14 pts/0    00:00:00 grep --color=auto keepalived

我们在master节点(192.168.43.129)上输入命令 

# ip add


可以看到网卡绑定了虚拟ip  192.168.43.120


五。Keepalived 服务管理命令: 


停止:service keepalived stop 
启动:service keepalived start 
重启:service keepalived restart 
查看状态:service keepalived status 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值