nginx的keepalived使用

介绍:

        由于nginx集群下,每台nginx相对独立无法交流,因此不知道何时何地那一台的nginx会突然宕机,导致整个服务无法使用。为解决这个问题,使用keepalived能解决该问题。原理:通过设置虚拟ip,在同一组内监听keepalived进程当某个nginx宕机执行脚本将keepalivedkill掉,此时会将虚拟ip转移至备用机上。

安装(在linux下):

        

1.yum install keepalived –y
2.安装之后,使用命令rpm -q -a keepalived查看是否安装成功

配置:

        主设备(修改/etc/keepalived/keepalivec.conf配置文件):

              

global_defs {
#设置 keepalived 在发生事件(比如切换)的时候,需要发送到的email地址,可以设置多个,每行一个。
	notification_email {
		[email protected]
		[email protected]
		[email protected]
	}
	notification_email_from [email protected]
	smtp_server 192.168.17.129  #指定发送邮件的smtp服务器。(key加#注释不使用)
	smtp_connect_timeout 30  #设置smtp连接超时时间,单位为秒。
	router_id LVS_DEVEL #是运行keepalived的一个表示,多个集群设置不同。
} #(非关键配置,可以注释,不使用)

vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"  #nginx宕机时执行的脚本,存放的路径和名称
	interval 2 #(检测脚本执行的间隔)
	weight 2
}

vrrp_instance VI_1 {
	state MASTER # 备份服务器上将 MASTER 改为 BACKUP (关键配置)
	interface ens33 #网卡名称(用ifconfig命令查看) (关键配置) 
	virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 (关键配置)
	priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 (关键配置)
	advert_int 1  #检查的时间间隔,默认1s (关键配置)
	authentication {
		auth_type PASS  #认证方式,支持PASS和AH,官方建议使用PASS
		auth_pass 1111 #认证的密码
	}
	virtual_ipaddress {
		192.168.17.50 # 设置虚拟地址  (关键配置)
	}
}

          从设备(修改/etc/keepalived/keepalivec.conf配置文件):

global_defs {
#设置 keepalived 在发生事件(比如切换)的时候,需要发送到的email地址,可以设置多个,每行一个。
	notification_email {
		[email protected]
		[email protected]
		[email protected]
	}
	notification_email_from [email protected]
	smtp_server 192.168.17.129  #指定发送邮件的smtp服务器。(key加#注释不使用)
	smtp_connect_timeout 30  #设置smtp连接超时时间,单位为秒。
	router_id LVS_DEVEL #是运行keepalived的一个表示,多个集群设置不同。
} #(非关键配置,可以注释,不使用)

vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"  #nginx宕机时执行的脚本,存放的路径和名称
	interval 2 #(检测脚本执行的间隔)
	weight 2
}

vrrp_instance VI_1 {
	state BACKUP# 备份服务器上将 MASTER 改为 BACKUP (关键配置)
	interface ens33 #网卡名称(用ifconfig命令查看) (关键配置) 
	virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 (关键配置)
	priority 80 # 主、备机取不同的优先级,主机值较大,备份机值较小 (关键配置)
	advert_int 1  #检查的时间间隔,默认1s (关键配置)
	authentication {
		auth_type PASS  #认证方式,支持PASS和AH,官方建议使用PASS
		auth_pass 1111 #认证的密码
	}
	virtual_ipaddress {
		192.168.17.50 # 设置虚拟地址  (关键配置)
	}
}

脚本(在/usr/local/src/下创建nginx_check.sh):

#!/bin/bash
A=`ps -C nginx – no-header |wc -l`
if [ $A -eq 0 ];then
	/usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		killall keepalived
	fi
fi

启用nginx和keepalived:

启动 Nginx: ./nginx
启动 keepalived: systemctl start keepalived.service

你可能感兴趣的:(nginx,服务器)