keepalived+nginx高可用环境搭建
Posted zhulinu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived+nginx高可用环境搭建相关的知识,希望对你有一定的参考价值。
高可用方案其实很多,而且有很多成本是非常低和简单的。比如你如果有一个网站,高可用最简单的就是nds+nginx+两台机器。
我们由于是客户的一个项目,dns申请是非常麻烦的,所以才考虑用keepalived+nginx做高可用方案。
从网上整理了HA常用组合。
heartbeat v2+crm
heartbeat v3+pacemaker
corosync+pacemaker
cman + rgmanager
keepalived+lvs。
这里我们没有用lvs,而是直接用了nginx,感觉就两台机器,所以也没有必要搞的太复杂。而且也能满足要求。
安装前的规划,这个我认为还是比较重要的,我们就是之前没有好好规划,现在感觉比较乱,而且客户升级也很麻烦。一堆的流程。
我们系统是java开发的,所以用了tomcat进行后台的解析。
首先是目录规划,比如tomcat放在什么地方,静态文件放在什么地方。一般来说有nginx后静态文件由nginx去解析,可以分担tomcat的很多压力。
nginx安装前准备,因为nginx安装还是比较简单的,但是有个问题就是nginx有很多插件,这些插件是否需要安装需要研究一下。由于nginx对回话处理不是太好,所以我们这边需要添加一个会话保持的插件,其他插件建议不要安装太多,毕竟稳定和效率是第一的,非官方的插件就怕有问题,到时候找都不好找。
依赖yum -y install gcc pcre-devel kernel-devel
yum install openssl-* -y 剩下的就看提示,没有就安装一下。
下面就是安装:
tar -zxvf nginx-1.7.9.tar.gz
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-stick
make
make install
这里里面用了一个stick回话保持的插件,下载地址为,这个有时候不太好找,基本上都是google服务器上的,没有办法下载。
https://github.com/ezbake/nginx-sticky-module
这里有个问题就是当nginx挂了的时候,keepalived并不知道服务不可用,所以还回继续提供服务,但这个时候已经不起作用了。
所以需要添加一个守护进程,当nginx挂的时候把keepalived也观杀掉,当进程启动的时候也启动keepalived。
可以在crontab里面设置30秒检测一次,也就是当nginx挂的时候最长时间会延迟三十秒切换。
*:30 * * * * /opt/nginx_pid.sh
#!/bin/bash
# varsion 1.0
A=`ps -C nginx --no-header |wc -l`
B=`ps -C keepalived --no-header |wc -l`
if [ $A -eq 0 ];then
# /usr/local/nginx/sbin/nginx
sleep 1
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
elif [ $B -eq 0 ];then
/etc/rc.d/init.d/keepalived start
fi
最后别忘了脚本要加上可执行的权限,不然不会执行。
vrrp_script weight 脚本执行的逻辑:失败的标志位,当返回值为0时候表示成功,其他都是失败。
为正时,脚本检测成功时此weight会加到priority上,检测失败时不加。
主失败
主 priority < 从 priority + weight 时会切换。
主成功:
主 priority + weight > 从 priority + weight 时,主依然为主
weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight)
主失败:
主 priority – abs(weight) < 从priority 时会切换主从
主成功:
主 priority > 从priority 主依然为主。
以上是关于keepalived+nginx高可用环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
Keepalived+Nginx搭建主从高可用并带nginx检测
搭建Nginx+keepalived负载高可用,实现动静分离
Linux下Nginx + Keepalived搭建负载均衡与高可用服务