Py学习  »  NGINX

【Linux】CentOS系统Nginx+Keepalive主从自动切换高可用

十五期李欢 • 4 年前 • 269 次点击  

导读:关于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

  • 1
  • 2
(假如没有wget命令,安装即可:yum install wget)
  • 1

2、 解压keepalived到home目录下:

 tar -zxvf keepalived-1.4.5.tar.gz
  • 1

更改路径,进入到keepalived文件夹:

 cd keepalived-1.4.5
  • 1

查看信息:

ln -s /usr/src/kernels/2.6.9-78.EL-i686/usr/src//linux
  • 1

预编译后出现下图表示编译成功:

  ./configure 
  • 1

在这里插入图片描述
3、编译安装

make && make install
  • 1

4、修改配置文件路径,将keepalived添加到系统服务中

将初始化脚本拷贝到系统初始化目录下

 cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
  • 1

将keepalived配置文件拷贝到etc下

 cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
  • 1

创建keepalived文件夹

mkdir /etc/keepalived
  • 1

将keepalived配置文件拷贝到etc下




    
 cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/      
  • 1

拷贝文件到sbin下

cp /usr/local/sbin/keepalived /usr/sbin/
  • 1

5、设置服务开机启动:

vi /etc/rc.local 
  • 1

在最后一行加上:

/etc/init.d/keepalived start
  • 1

6、配置 主:

vi /etc/keepalived/keepalived.conf 
  • 1

配置文件内容修改如下:(根据自己情况设置)
在这里插入图片描述
7、配置 备:

vi /etc/keepalived/keepalived.conf
  • 1

在这里插入图片描述
8、启动服务:
在这里插入图片描述

五、验证测试:

1、创建监控双机nginx状态的脚本:

vi /opt/check_nginx.sh
  • 1

写入以下代码

#!/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2、安装psmisc:
因为脚本用到了killall命令,最小化安装的centos没有,所以要安装一下:

yum -y install psmisc
  • 1

3、再次编辑keepalived配置文件

vi /etc/keepalived/keepalived.conf
  • 1

插入第一段

vrrp_script check_nginx {
   script "/root/check_nginx.sh"
   interval 2
   weight 2
}
  • 1
  • 2
  • 3
  • 4
  • 5

再插入第二段

track_script { 
        check_nginx
}
  • 1
  • 2
  • 3

插入位置如图:
在这里插入图片描述
4、备用机与此一样,重复步骤。
5、启动keepalived服务,并开机自启。




    
systemctl start keepalived.service
systemctl enable keepalived.service
  • 1
  • 2

6、测试:
修改一下主机nginx的欢迎界面,以和备用机区分:添加单词Master(主)
在这里插入图片描述
在浏览器输入“虚拟IP:端口”端口是nginxd 监听端口,在本例中,虚拟ip端口为:83
会出现如下欢迎界面:
在这里插入图片描述
停掉主机服务器的nginx:

systemctl stop nginx.service
  • 1

刷新页面会发现没有变化,这是因为keepalived检测到nginx挂了,会通过check_nginx.sh脚本自动启动nginx

当手动停止主机的keepalived:

systemctl stop keepalived.service
  • 1

会发现页面标题的Master没有了,就变成了备用机
在这里插入图片描述

测试完成…成功!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52162
 
269 次点击