Nginx+keepalived实现服务器一主一备(高可用)

1.上一篇讲解了如何在服务器搭建Nginx服务器,这里不做过多描述。

首先把压缩包拷贝到Linux的/usr/local目录下(主Nginx:192.168.0.111)

2.安装keepalived(主Nginx:192.168.0.111)

进入/usr/local目录下:

tar -zxvf keepalived-1.2.18.tar.gz

yum install -y openssl openssl-devel(需要安装一个软件包)

cd keepalived-1.2.18/  && ./configure --prefix=/usr/local/keepalived

make && make install

3.将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:(主Nginx:192.168.0.111)

① 首先创建文件夹,将keepalived配置文件进行复制:

mkdir /etc/keepalived

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

② 然后复制keepalived脚本文件:

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

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

可以设置开机启动:chkconfig keepalived on,到此我们安装完毕!

4.替换默认的keepalived.conf配置文件(本人已配置好,直接用SecureFX工具将下图本地两个文件上传,并替换)

5.进入/etc/keepalived目录(主Nginx:192.168.0.111)

查看一下当前linux虚拟机网卡,可以看出是eth0

打开keepalived配置文件,注意以下五处:

master:192.168.0.111我们设置为主Nginx

eth0:上图中ip a得出的网卡名

192.168.0.111:虚拟机IP

121:多个Nginx配keepalived时,这个值必须一致

192.168.110.110:虚拟ip,可在windows浏览器下直接访问

上述配置好后,wq保存退出。此时我们再次键入ip a,可以发现多了一个eth0,即我们配置的虚拟IP

6.此时,启动keepalived:service keepalived start

在Windows浏览器下访问我们配置的虚拟IP:192.168.110.110,会调到主Nginx首页(nginx/html/index.html)

7.我们再配一个备机Nginx(备Nginx:192.168.0.108)

重复上述安装步骤,ip a发现网卡为eth1

打开keepalived配置文件

此Nginx改为备机:BACKUP

网卡改为:eth1

虚拟路由ID号与主机保持一致,都为121

IP地址改为备机IP

虚拟IP也配为192.168.110.110

wq退出

启动备机192.168.0.108的keepalived:service keepalived start

此时我们再次键入ip a,发现还是只有一个eth1,主Nginx(192.168.0.111)配完keepalived后有两个eth0

原因:现在虚拟IP192.168.110.110在走主机,没走备机

8.此时,我们把主Nignx的keepalived停掉

在192.168.0.111服务器下执行命令:service keepalived stop

再次在浏览器键入虚拟IP:192.168.110.110,可以发现进入备机Nginx

并且,此时主Nginx变为一个eth0,备Nginx变为两个eth1:

 

下面做个试验:

① 把两台服务器服务器的keepalived和nginx都停掉

注意:都停掉(如果只停keepalived,访问192.169.0.111和192.168.0.108都可以访问得到Nginx首页)

    

可以发现,现在虚拟IP:192.168.110.110访问不了了,因为这个IP地址是keepalived虚拟出来的,现在keekalived都停了

访问192.169.0.111和192.168.0.108也访问不到Nginx首页了

② 此时把192.168.0.108的keepalived启动起来

依旧访问不到192.168.110.110

原因:没有权限

 

解决方法:先把刚才启动的keepalived停掉,进入/etc/keepalived,给上述sh赋予权限

此时启动192.168.0.108的keepalived,浏览器访问虚拟IP:192.168.110.110,会访问得到108Nginx首页

并且此时,强制把nginx宕机掉,会秒起,只要keepalived不挂,会一直自动重启

③ 把 主Nginx(192.168.0.111)的/etc/keepalived下的nginx_check.sh赋予权限

启动192.168.0.111的keepalived

浏览器访问虚拟IP:192.168.110.110,会访问得到111Nginx首页

 

总结:不同于Redis的哨兵机制一样,keepalived当主机挂了,再重启后,之前主机还是主机

 

猜你喜欢

转载自blog.csdn.net/AkiraNicky/article/details/82889821