编程技术分享平台

网站首页 > 技术教程 正文

nginx+keepalive高可用详细配置(nginx keepalived配置)

xnh888 2024-10-02 03:20:15 技术教程 26 ℃ 0 评论

简介:


Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合Nginx可以实现web前端服务的高可用。

keepalived 以 VRRP(Virtual Router Redundancy Protocol虚拟路由冗余协议) 协议为实现基础,Keepalived就是巧用VRRP协议来实现高可用性(HA)的.

VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),而在路由器组内部,如果实际拥有这个对外IP的路由器如果工作正常的话就是MASTER,或者是通过算法选举产生,MASTER实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,以及数据的转发等;其他设备不拥有该IP,状态是BACKUP,除了接收MASTER的VRRP状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP将接管原先MASTER的网络功能。

VRRP协议使用多播数据来传输VRRP数据,VRRP数据使用特殊的虚拟源MAC地址发送数据而不是自身网卡的MAC地址,VRRP运行时只有MASTER路由器定时发送VRRP通告信息,表示MASTER工作正常以及虚拟路由器IP(组),BACKUP只接收VRRP数据,不发送数据,如果一定时间内没有接收到MASTER的通告信息,各BACKUP将宣告自己成为MASTER,发送通告信息,重新进行MASTER选举状态。

实验环境:

系统版本:Centos-7.2

VIP

192.168.0.66

主机IP

192.168.1.100

192.168.1.110

1, 配置本地yum源,方便安装依赖包

挂载光盘

mount /dev/cdrom /mnt/cdrom

2,编辑yum配置文件

vi /etc/yum.repos.d/cdrom.repo 

写入:

[cdrom]
name=cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

3,刷新yum缓存

yum makecache 

4,安装nginx依赖包

yum –y install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel 

5,nginx官网下载源包

http://nginx.org/download/nginx-1.15.9.tar.gz

6,安装nginx

在两台机器上都安装,执行如下命令

mv nginx-1.15.9.tar.gz /usr/local/src/ 
tar –zxvf nginx-1.15.9.tar.gz 
cd nginx-1.15.9
./configure –prefix=/usr/loal/nginx 

7,配置nginx

 vi /usr/local/nginx/html/index.html

如下图:

8,关闭防火墙,两台都做

9,设置环境变量

PATH=$PATH:/usr/local/nginx/sbin/

10,测试nginx是否安装配置正确

11.启动nginx

12,分别访问两台nginx

13,下载安装keepalived

	http://www.keepalived.org/software/keepalived-2.0.13.tar.gz

安装过程:

	mv keepalived-2.0.13.tar.gz /usr/local/src/
	tar –zxvf keepalived-2.0.13.tar.gz
	cd keepalived-2.0.13
	./configure –prefix=/usr/local/keepalived
	make && make install

14,keepalived设置为开机自启动

mv /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
mv /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
vi /etc/keepalived/keepalived.conf 

字段解释:

vrrp_script check_nginx //检查nginx状态脚本
{ //这个“{”要换行写,不然脚本不生效(踩过的坑)
 script "/scripts/check_nginx.sh" //脚本位置
 interval 5 //执行脚本时间间隔,单位秒
}
vrrp_instance VI_1 { //实例名
 state MASTER //标记该节点是主节点还是备节点
 interface eth1 //配置VIP绑定的网卡
 virtual_router_id 66 //取1-255之间的数值,主备需要相同
priority 100 //权重,数值高的是Master,这是主备的关键参数 
 advert_int 1 //主备之间通信的间隔
 authentication {
 auth_type PASS //主备之间进行安全验证的方式,主备需一致
 auth_pass 6666
 }
 virtual_ipaddress { //VIP,可以写多个
 192.168.1.66
	 }
	 track_script { //调用脚本
	 check_nginx
	 }
	}

脚本参考

	vi /scripts/check_nginx.sh
	#!/bin/bash
	A=`ps -C nginx --no-headers | wc -l`
	if [ $A -eq 0 ];then
	 /usr/local/nginx/sbin/nginx
	 sleep 5
	 B=`ps -C nginx --no-headers | wc -l`
	 if [ $B -eq 0 ];then
	 killall keepalived
	 fi
	fi

15,实验结果

为了能触发VIP飘到备机上,我把脚本注释掉一部分

在node_1上

访问192.168.1.66,此时访问的是node_1

手动kill掉nginx进程

在节点2上,可以看到VIP已经飘过来了

访问192.168.1.66,此时访问的是node_2

希望大家一起批评指正,或者分享工作中遇到的一些坑,互相学习。

附keepalived官方文档和参考资料

http://www.keepalived.org/manpage.html

http://www.linuxe.cn/post-266.html

https://blog.csdn.net/death_kada/article/details/49635729

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表