云计算Tengine学习-keepalived的高可用问题解决

关于云计算的keepalived的高可用问题解决
场景主要是后端服务器有多台,但是前端服务器(nginx)只有一台,这样的可用性就不高,也不可靠。
因为如果前端服务器宕机了,这样会导致所以后端服务器无法工作即整个系统都无法工作,为了保证系统能够正常工作,
keepalived是应用是一个很好的解决方法,就是配置两台以上包括两台前端服务器,这里前端服务器指的是物理服务器。
以两台为例,让其中一台前端服务器为主要服务器,另一台为备用服务器,这样当主服务器宕机了,至少还有备用服务器保证系统正常工作,如下是配置的过程
首先两台服务器安装keepalived,安装过程会让你输入Yes/No,输入Yes就行了

yum install keepalived

在其中一台服务器配置/etc/keepalived/keepalived.conf
主从配置:
主nginx
修改主nginx下/etc/keepalived/keepalived.conf文件

! Configuration File for keepalived

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     [email protected]
   }
   notification_email_from [email protected]  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 { 
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.17.100       #可以多个虚拟IP,换行即可
    }
}

备nginx
修改备nginx下/etc/keepalived/keepalived.conf文件
配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id的值一致

! Configuration File for keepalived

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
    [email protected]
   }
   notification_email_from [email protected]  				#指定发件人
   #smtp_server XXX.smtp.com                             	#指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 { 
    state BACKUP           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 99            #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.17.100      #可以多个虚拟IP,换行即可
    }
}

解释一下一些参数,在主从配置中,主要注意是设置vip,这个是虚拟ip网段要和你的服务器网段一样,即198.168.17是网段,最后一位随意。(上面配置还可以用scp方法,因为两次的配置只是一些参数需要修改,可以使用scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/ 指令,将配置文件复制到备用服务器上,然后修改某些参数即可

下一步就是访问192.168.17.100IP,为了明显看到效果,让主备两台服务器反向代理到两台tomcat后端服务器上,然后显示tomcat首页(为了区分两台tomcat服务器,修改了他们的主页面),所以下图是修改
/opt/sxt/soft/tengine2.1.0/conf/nginx.conf配置文件(反向代理可以参考我前面的博客),主备服务器都是一样的修改

可以看出,反向代理到两台tomcat服务器(server 192.168.17.3:8080,server 192.168.17.4:8080
现在配置已经完成,接下来就是启动Tnginx、keepalive、tomcat和关闭防火墙
启动服务Tengine命令:service nginx start
启动服务器keepalive:service keepalive start
启动tomca:/opt/apache-tomcat-7.0.61/bin/startup.sh (路径是根据自己安装的路径,我是安装在opt下面的)
关闭防火墙:service iptables stop

用命令行ip addr 查看IP地址


node1是主服务器,node2是备用服务器,从node1虚拟IP可以到192.168.17.100,说明现在访问192.168.17.100的话,将是node1服务器在工作,node2为备用,现在访问192.168.17.100如图:


可以看出,它已经转发到两台tomcat服务器上去了,现在测试如果主服务器宕机了,会不会启动备用服务器node2来工作,
在node1关闭keepalive和nginx


先查看node1和node2的IP,看现在192.168.17.100IP有没分配给node2备用服务器

从上图的确看到192.168.17.100IP分配到备用服务器node2说明当我们访问192.168.17.100IP时,这时候就是备用服务器node2在工作

为了明显看到node1主服务器宕机,我们在node2备用服务器的反向代理upstream中加入一条server192.168.17.3(主服务器IP)

加上红线那行

健康状况检查不懂的也可以看我前面的博客
从上图看出,主服务器的确宕机了,但从访问后端服务器显示的界面说明后端服务器是正常工作的,说明我们的备用前端服务器已经起作用,保证系统的正常工作。
不对之处还请各位不吝赐教

猜你喜欢

转载自blog.csdn.net/weixin_42404323/article/details/89637065
今日推荐