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主从自动切换高可用的主要内容,如果未能解决你的问题,请参考以下文章

LinuxCentos之安装Nginx及注意事项

LinuxCentos之安装Nginx及注意事项

Linuxcentos8 安装nginx详细步骤

linuxcentos6/7 + nginx 利用certbot 申请https证书

nginx+keepalived

CentOS安装Nginx