Nginx+keepalived配置实现nginx服务器高可用
前一篇帖子里,把nginx在linux里的安装部署搞完了,现在接着安装配置keepalived。
1、keepalived主要用来防止服务器单点故障。简单来说,需要在两台nginx服务器上都安装上keepalived,设置为一主一备(或者多台备份服务器),主服务器工作,备份服务器不工作;当主服务器故障时,备份服务器根据预设规则选举出一台新的主服务器顶上,直到原来的主服务器活过来。对于客户端来说,直接访问的ip地址并不是主服务器或者备份服务器的ip,而是一个虚拟ip,这样不管哪台服务器出现故障,只要还有一台服务器可用,客户端是感知不到的。keepalived是通过实现VRRP协议来达到这个效果的,具体可自行百度。
2、nginx服务器两台:172.16.170.41(主)、172.16.170.42(备份),通过keepalived虚拟对外的服务地址172.16.170.43
3、安装keepalived:网上帖子一大把,参考这个照做即可:https://www.cnblogs.com/yaboya/p/9107442.html。不过我的配置更简单,暂时没有涉及到检测nginx服务的死活、以及发生故障时邮件发送设置等内容。
4、安装完了修改配置文件:vi /etc/keepalived/keepalived.conf
参数说明:
router_id:服务器的路由标识,每台机器不同不要重复;
state:路由状态,主服务器为MASTER,备份服务器为BACKUP;
interface:服务器绑定的网卡;
mcast_src_ip:广播源ip,就是服务器的实际ip地址;
virtual_router_id:虚拟路由标识,两台服务器必须一样,而且得是0~255之间的数字;
priority:优先级,数字越大优先级越高,应该就是根据这个在N个备份服务器里选举谁来临时当主服务器;
advert_int:集群监控时间,单位为秒,默认是1秒,我们测试没必要这么高要求。意思是超过这个时间如果收不到MASTER还活着的消息,那么就要选举一个新的MSATER;
auth_type、auth_pass:集群间通信用来验证身份的,配置成一样即可;
virtual_ipaddress:统一对外提供的虚拟地址。
5、配置完毕后两台机器分别重启服务,访问一下虚拟地址试试:
OK了。再试一试关闭主服务器的keepalived服务(或者是直接关闭或重启centos服务器),看看备份服务器能不能顶上。
关闭MASTER服务器服务: service keepalived stop 再看看:
43还是OK的,说明配置起效了。再把备份服务器服务也关了再看看:
说明刚才BACKUP确实起效了。OK,重启主备,服务恢复: