nginx高可用配置之Keepalived解决方案
Posted JAVA葵花宝典
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx高可用配置之Keepalived解决方案相关的知识,希望对你有一定的参考价值。
前言:在企业级系统上,服务器一般都是采用高可用高并发配置的,那么客户端服务搞了这么多集群,但是在nginx这端挂了,将会导致所有请求都转发不出去,那么怎么解决这么问题呢,本文介绍的是Keepalived解决方案,依托虚拟IP(VIP)在主备机挂载的原理,实现Nginx高可用方案
原理图:
(图片来源网络)
Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合
Keepalived实现的基础是VRRP协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的.
VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),而在路由器组内部,如果实际拥有这个对外IP的路由器如果工作正常的话就是MASTER,或者是通过算法选举产生,MASTER实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,以及数据的转发等;其他设备不拥有该IP,状态是BACKUP,除了接收MASTER的VRRP状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP将接管原先MASTER的网络功能。
实战准备:
1. 安装Keeplived依赖
安装keepalived之前,也要安装一些依赖库
安装 openssl
yum install openssl*
安装popt
yum install popt*
安装ipvsadm
yum isntall ipvsadm
安装libnl-dev
yum install libnl-dev*
2. 安装Keepalived
http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
下载解压后编译配置
./configure --prefix=/usr/local/keepalived
编译配置需要确保一下几项为Yes状态:
Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes
然后就可以编译安装了:
make && make install
因为没有使用keepalived的默认路径安装(默认是/usr/local),安装完成之后,需要做一些工作
接下来就是配置了,很简单,直接上配置文件
先是主服务器配置:
接下来是从服务器
上面的设置是最基础的设置,实现的功能是如果主服务器的Keepalived停止服务(一般情况下服务器宕机),则将虚拟IP切换至从服务器,主服务器恢复后从新切换回主服务器。
但是很多情况下我们面临的处境是
我们在修改上面配置的主服务器的配置文件,在中间添加脚本实现
修改完配置文件我们写我们的上面配置的
上面的脚本简单的查看
接下来我们对上面的哦脚本修改一下,当脚本检测到
chmod +x
nginx .sh
3. 运行Keepalived
配置完成后就可以运行看下效果了,分别在主从服务器上启动
service keepalived start
启动之后通过·ip a·命令查看主服务器的网络信息,可以看到在eth0网卡下生成了192.168.1.206这个虚拟ip,并可通过这个ip访问到
然后我们关闭
这样就实现了基本双击主从热备功能了。
这里注意下防火墙的问题,就是这问题困扰了我很久。找了一些资料才将问题解决
1.如果用的是默认防火墙,只需要添加:
iptables -I RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT
2.如果是自己用脚本设置的防火墙,需要添加如下规则
iptables -A OUTPUT -o eth0 -d 224.0.0.18 -j ACCEPT iptables -A OUTPUT -o eth0 -s 224.0.0.18 -j ACCEPT iptables -A INPUT -i eth0 -d 224.0.0.18 -j ACCEPT iptables -A INPUT -i eth0 -s 224.0.0.18 -j ACCEPT
5. 总结
keepalived通过虚拟路由实现双机热备,相比其他方案具有一定的优越性
因为是固定主从热备,该方案比较适合两个互备服务器性能有差异的情况
Keepalived同样可以实现双主互备,通过设置互为主备,然后通过DNS负载均衡到不同vip就可以实现
❶ 搜索同名小程序JAVA葵花宝典助你成JAVA大神,超2万大神 在上面免费领资料
❸ 帖子都有交流群,如果你想进圈子,菜单点圈子,撩我拉你入圈
以上是关于nginx高可用配置之Keepalived解决方案的主要内容,如果未能解决你的问题,请参考以下文章