集群搭建系列教程3:CentOs7虚拟机环境搭建高可用反向代理平台
原创教程,未经允许,禁止转载
集群搭建系列教程3
在上一次的教程中,我们成功的在单台虚拟机上搭建一台nginx实现反向代理多台服务器项目的小集群平台
通过测试,我们可以直接访问nginx的ip,然后通过nginx反向代理给我们要访问的资源。
集群中即使有一台项目服务器宕机也不会影响整个集群使用。
但是假如nginx挂掉的话,我们就会无法通过反向代理的方式访问项目。
为了让系统的容灾性更高,我们需要对nginx再次进主从配置,实现系统的高可用性。
搭建准备:
Centos7,nginx-1.12.2,
因为我们上次已经搭建过但nginx的集群,所以可以直接使用镜像文件,所以克隆一份有nginx的虚拟机,然后改名为nginx2,ip为:192.168.229.136
第一部分:配置keepalived
第一步:下载安装
在两台nginx服务器上分别运行如下命令
yum install keepalive
第二步:在两台nginx服务器上分别配置keepalived
服务器:192.168.229.128(主)
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id nginx_server_1 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight 20 #weight为正数 #如果脚本执行结果为0,,Master:weight+priority>Backup:weight+priority(不切换) #如果脚本执行结果不为0,Master:priority<Backup:priority+weight(切换) #weight为负数 #如果脚本执行结果为0,,Master:priority>Backup:priority(不切换) #如果脚本执行结果不为0,Master:priority+weight<Backup:priority(切换) #一般来说,weight的绝对值要大于Master和Backup的priority之差 } vrrp_instance VI_1 { state MASTER interface eno16777984 virtual_router_id 51 mcast_src_ip 192.168.229.128 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.229.222 } }
服务器:192.168.229.136(从)
state 和主不一样,是BACKUP
route_id 和主不一样
priority 小于主机
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id nginx_server_2 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight 20 #weight为正数 #如果脚本执行结果为0,,Master:weight+priority>Backup:weight+priority(不切换) #如果脚本执行结果不为0,Master:priority<Backup:priority+weight(切换) #weight为负数 #如果脚本执行结果为0,,Master:priority>Backup:priority(不切换) #如果脚本执行结果不为0,Master:priority+weight<Backup:priority(切换) #一般来说,weight的绝对值要大于Master和Backup的priority之差 } vrrp_instance VI_1 { state BACKUP interface eno16777984 virtual_router_id 51 mcast_src_ip 192.168.229.136 priority 90 nopreempt advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.229.222 } }
第三步:创建脚本文件
分别在两台nginx服务器上运行如下命令
[root@localhost sbin]# cd /etc/keepalived/
[root@localhost keepalived]# touch nginx_check.sh
[root@localhost keepalived]# vim nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
第四步:更改可执行文件
分别在两台nginx服务器上执行如下命令
chmod +xxx /etc/keepalived/nginx_check.sh
第五步:配置虚拟ip
虚拟ip是提供给外部的一个IP地址,当访问项目时,所有外部请求都可以直接访问这个ip
分别在两台nginx服务器的虚拟机上配置虚拟ip(配置第二台虚拟机时,如果第一台还在启动,这是配置好以后启动会报错提示:job for network.service failed because。。。这是因为同一个网段里只能有一个ip)
执行如下命令:
[root@localhost local]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-ens33
增加一个新的IPADDR=192.168.229.222
[root@localhost sbin]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:59:68:e0 brd ff:ff:ff:ff:ff:ff inet 192.168.229.136/24 brd 192.168.229.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.229.222/24 brd 192.168.229.255 scope global secondary ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe59:68e0/64 scope link valid_lft forever preferred_lft forever
保存退出以后,重新启动网络服务
systemctl restart network
运行命令查看,
[root@localhost ~]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:d8:75:66 brd ff:ff:ff:ff:ff:ff inet 192.168.229.135/24 brd 192.168.229.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.229.222/24 brd 192.168.229.255 scope global secondary ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fed8:7566/64 scope link valid_lft forever preferred_lft forever
该服务器已经设置了虚拟ip
第六步:启动keepalived
分别在两台nginx服务器上运行如下命令
[root@localhost sbin]# systemctl start keepalived
[root@localhost sbin]# systemctl enable keeplived
第七步:校验
访问第一台ngin服务器:128




访问第二台服务器:136




访问虚拟ip:222




然后让136这个nginx服务器宕机:
再次访问虚拟ip,仍然能够访问到项目,实现了ip漂移
第八步:优化域名访问
在windos的host文件中奖192.168.229.222 映射到www.magicabcweb.com
192.168.229.222 www.magicabcweb.com
直接访问这个域名,发现也是可以访问

浙公网安备 33010602011771号