先说下通过keepalived实现高可用的原理:
我们通过对主机和备用机绑定一个虚拟的ip 我们这里叫做vip,访问vip就等于访问ip,
然后让他们可以间接的挂钩。(这里做的就是把两张网卡都绑定上一个虚拟的vip)
但是我们对外公布的不在是nginx主机ip了 而是我们的虚拟vip了。让用户通过虚拟的vip访问我们的网站。因为我们是把vip和我们的nginx主机ip绑定的,而nginx主机又是和我们两台网站服务器绑定的。
所以就可以形成这么一个回路
nginx搭建(高并发)问题解决了。但是我们高可用还没有解决,如果我们的nginx挂了那就也完蛋了。
下面我们就来搭建keepalived来应对nginx服务起宕机的问题也就是高可用
系统环境问题没有变化,还是上文的系统环境。
我们只需要安装keepalived-1.2.13-5.el6_6.i686.rpm 就可以了
rpm -ivh keepalived-1.2.13-5.el6_6.i686.rpm 自动安装完成
然后配置keepalived的配置文件 /etc/keepalived/keepalived.conf 把文件清空通过快捷命令
“> /etc/keepalived/keepalived.conf “此命令是初始化此文件
然后把这段文字拷贝进去
//---------------------------------------
global_defs {
notification_email {
XXX@XXX.com
}
notification_email_from XXX@XXX.com
#smtp_server XXX.smtp.com
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth2
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 8888
}
virtual_ipaddress {
192.168.200.201
}
}
//--------------------------------------
notification_email 这个代码块头的意思是当服务器挂掉了 给那个邮箱发邮件,这里我们不需要所以不用写了
vrrp_instance VI_1 这个代码块的在初始化的时候执行的
-----priority 100 这个是优先级越高月有限访问他(主机是100 备机 小于100即可)
--- interface eth2他的意思是给那个网卡绑定。(通过ifconfig看看自己的机器网卡名字)
virtual_ipaddress 这个就是要绑定的虚拟vip 也就是用户要访问的vip
搭建好了以后我们启动 通过ip add show eth2 命令就可以开到我们已经为这个网卡绑了两个ip
我们通过访问201已可以达到访问133的目的。
备用机同理如此配置 但是priority要改的小一点 。
这时候当主机keepalived挂掉就会用备用机的keepalived,
有个问题是需要注意的。keepalived挂掉会热切,但是nginx挂掉keepalived是不会热切,导致还是无妨访问网站,所以还要解决这个小问题(这里的热切是指,把这个vip挂到网卡上面。这样访问vip就等于访问的备机)
我们需要写一个小脚本
这个脚本就是当nginx挂掉的时候,让keepalived也挂掉(注意修改check_nginx.sh的权限 改成7--即可,或者更高777)这时候就不会出现上面的热切问题了。
自创脚本名为check_nginx.sh 放在keepalived.conf同目录中
脚本内容
//--------------------------
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
service keepalived stop
fi
//---------------------------
有了这个脚本后,但是还差一步就是有人去执行他,现在是没人执行的状态,需要在keepalived.conf中添加如下注意红色部分为新添加(文档格式要注意)
自始至终我们都是在和keep.conf配置文件打交道 外加一个脚本
这个脚本只需要在主机中配置。因为主机的优先级高,如果主机存在就不会去访问备机。当访问备机的时候,主机是肯定挂了。这时候我们就需要去处理主机,当我们重新启动主机后,备机还会恢复以前的待命状态。把责任全权的交给主机。所以不用配备机。