LinuxCentOS系统Nginx+Keepalive主从自动切换高可用
Posted Ariel_欢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinuxCentOS系统Nginx+Keepalive主从自动切换高可用相关的知识,希望对你有一定的参考价值。
导读:关于nginx+Keepalive实现主从自动切换的简单原理可以参考小编的另一片博客,希望对亲爱的您有所帮助~~
【Linux】Nginx+Keepalive实现高可用的简单工作原理
一、环境说明:
virtualBox 软件
cenOS7系统
nginx-1.17.2.tar.gz
keepalived-1.1.20.tar.gz
二、环境配置:
主Keepalived服务器IP地址:10.0.2.4
备Keepalived服务器IP地址:10.0.2.15
虚拟Keepalived服务器IP地址:10.0.3.123
说明:这里的IP地址(10.0.2…)都是NAT模式下连接网络,设置的静态IP。
注意:如果是配置服务器,可以默认网络模式,不必设置为NAT模式。
在自己电脑上使用两个虚拟机实现主从自动切换,因为主机电脑是在局域网中动态获取IP的,即八楼的服务器是动态分配IP的,不能保证哪一台机器获取一个固定的IP,所以也不能使虚拟机获得静态的IP,关机启动就会变,所以采用NAT模式设置网络连接。
说明:主机和浏览器访问虚拟机是通过ssh协议和HTTP协议,通过主机的IP和端口,通过映射(端口转发)的原理,找到子系统(虚拟机)的IP和端口,从而连接成功。
Nginx配置文件内容:
三、下载地址: http://www.keepalived.org/software/
四、安装流程:
1、 下载安装包,可使用xshell软件连接虚拟机,将压缩包上传至/home目录。或者直接在虚拟机里执行命令:
wget https://www.keepalived.org/software/keepalived-1.4.5.tar.gz
(假如没有wget命令,安装即可:yum install wget)
2、 解压keepalived到home目录下:
tar -zxvf keepalived-1.4.5.tar.gz
更改路径,进入到keepalived文件夹:
cd keepalived-1.4.5
查看信息:
ln -s /usr/src/kernels/2.6.9-78.EL-i686/usr/src//linux
预编译后出现下图表示编译成功:
./configure
3、编译安装
make && make install
4、修改配置文件路径,将keepalived添加到系统服务中
将初始化脚本拷贝到系统初始化目录下
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
将keepalived配置文件拷贝到etc下
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
创建keepalived文件夹
mkdir /etc/keepalived
将keepalived配置文件拷贝到etc下
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
拷贝文件到sbin下
cp /usr/local/sbin/keepalived /usr/sbin/
5、设置服务开机启动:
vi /etc/rc.local
在最后一行加上:
/etc/init.d/keepalived start
6、配置 主:
vi /etc/keepalived/keepalived.conf
配置文件内容修改如下:(根据自己情况设置)
7、配置 备:
vi /etc/keepalived/keepalived.conf
8、启动服务:
五、验证测试:
1、创建监控双机nginx状态的脚本:
vi /opt/check_nginx.sh
写入以下代码
#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then #如果nginx没在运行
systemctl start nginx.service #启动nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #如果无法启动
killall keepalived #杀死keepalived进程
fi
fi
2、安装psmisc:
因为脚本用到了killall命令,最小化安装的centos没有,所以要安装一下:
yum -y install psmisc
3、再次编辑keepalived配置文件
vi /etc/keepalived/keepalived.conf
插入第一段
vrrp_script check_nginx
script "/root/check_nginx.sh"
interval 2
weight 2
再插入第二段
track_script
check_nginx
插入位置如图:
4、备用机与此一样,重复步骤。
5、启动keepalived服务,并开机自启。
systemctl start keepalived.service
systemctl enable keepalived.service
6、测试:
修改一下主机nginx的欢迎界面,以和备用机区分:添加单词Master(主)
在浏览器输入“虚拟IP:端口”端口是nginxd 监听端口,在本例中,虚拟ip端口为:83
会出现如下欢迎界面:
停掉主机服务器的nginx:
systemctl stop nginx.service
刷新页面会发现没有变化,这是因为keepalived检测到nginx挂了,会通过check_nginx.sh脚本自动启动nginx
当手动停止主机的keepalived:
systemctl stop keepalived.service
会发现页面标题的Master没有了,就变成了备用机
测试完成…成功!
以上是关于LinuxCentOS系统Nginx+Keepalive主从自动切换高可用的主要内容,如果未能解决你的问题,请参考以下文章