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当主机挂了,再重启后,之前主机还是主机