keepalived+nginx+tomcat实现高可靠集群

工具及软件

      1. centos 7.x    (安装在 vm 中)   不会可以百度

       2. nginx -1.6.2    不会 请看这里

      3. tomcat7      不会请看这里

      4. jdk 1.7    不会请看这里

      5.工作目录  /mytest   

      6. keepalived -1.2.1

在进行本章前,请先完成  nginx+tomcat实现应用服务器负载均衡

 

热备:(MASTER)-(BACKUP )模式,备份机平常就是个摆设,浪费资源

互备:(MASTER、BACKUP)-(BACKUP、MASTER)模式,备份机也是主机,主机也是备份机,资源利用率高


热备又分为两种情况:

第一种情况:服务器层的热备(比如服务器宕机、keepalived宕、网络不同,这个主要针对ip及keepalived)

第二种情况:应用层(web)的热备(比如web应用端口不同,nginx进程被意外kill,这个主要针对端口)

网络拓扑

       3台虚拟机

  finder02  (192.168.1.202):  安装 2个 tomcat  端口 8081 8082

  finder220 (192.168.1.220) :安装 2个 tomcat 端口  8081 8082 , 1个 nginx 端口 80    1个 keepalived (master)

  finder221 (192.168.1.221): 安装 2个 tomcat  端口 8081 8082 ,1个  nginx 端口 80    1个 keepalived (slave)

 高可靠性配置

    我们现在接着 章节《nginx+tomcat实现应用服务器负载均衡》来配置 HA 。所以我们已经在 finder220 上配置了 nginx 集群

   接下来 我们 在 finder02 上 安装 2个 tomcat 具体安装这里不在赘述

    在 finder 221上 安装2个 tomcat ,nginx 具体安装这里不在赘述

    我们可以先启动所有的 tomcat  

   接下来我们配置  finder221上的nginx 

 

启动 finder221 nginx:

[root@finder221 bin]# /usr/local/webserver/nginx/sbin/nginx 
配置 keepalived

     安装keepalived , 我们使用 yum 安装,当然也可以手动安装

[root@finder220 ~]# yum install keepalived
安装完成后需要配置keepalived的配置文件,文件位于/etc/keepalived/keepalived.conf,下图中为需要修改的部分,默认的配置文件中在其后还有很多内容,本实例只是简单的DEMO,所以那些内容暂时用不上,可以全部删除,接下来说下图中这部分的配置

  • state 主服务器为MASTER,其他服务器均为BACKUP
  • interface 通信用的网卡,在之前查看IP时可以看到 我的是  ens33
  • virtual_router_id #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下的MASTER和BACKUP必须一致
  • priority 优先级,主服务器必须大于其他服务器,数值越大优先级越高
  • authentication 主从服务器必须一致
  • mcast_src_ip  #vrrp实体(本机)服务器的IP  发送多播包的地址,如果不设置默认使用绑定网卡的primary ip  
  • virtual_ipaddress 虚拟IP地址,主从服务器必须一致,此IP为客户端访问时使用的IP 可以设置多个虚拟IP地址,每行一个
  • auth_type PASS  #主从服务器验证方式  设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
master keepalived配置 

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 101
    advert_int 1
    mcast_src_ip 192.168.1.220
    authentication {
        auth_type PASS  
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.225
    }
slave keepalived 配置

vrrp_instance VI_1 {
    state SLAVE
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    mcast_src_ip 192.168.1.221
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.225
    }
启动  keepalivd

# service keepalived start
查看 网卡信息 

 

可以看到 finder220 上 虚拟IP地址

 如果在 finder221 上看不到 

  但是如果finder221上也看到 虚拟IP地址,原因是防火墙阻止了服务器之间的vrrp通信,分别执行以下命令,需要针对自己电脑进行修改的只有interface后的网卡,其他的照抄即可

224.0.0.18为组播地址
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload

至此Keepalived的配置也完成了,通过ip addr查看可发现主服务上带有192.168.1.220的虚拟IP而从服务器上没有,关闭主服务器的keepalived,虚拟IP则会转移到从服务器上来,测试服务器通过浏览器访问 http://192.168.1.225 可看到虚拟IP转移的效果,页面会从主服务器的页面转换为从服务器的页面

完成上述步骤之后keepalived已经可以实现虚拟IP转移了,但是实际应用当中我们需要的是自动进行虚拟IP的转移,所以我们还需要配置keepalived的脚本,使其能够在某一个nginx无法提供服务的时候自动将虚拟IP转移到备用服务器,以下脚本说明: 监控nginx的进程, 如果进程关闭 再次启动,等5秒后 再看nginx是否启动成功,如果没有nginx进程,那么就关闭 keepalived进程,我们在/etc/keepalived目录下创建一个名为check_status.sh的文件,然后键入以下内容

并且添加可执行权限  

# vi /etc/keepalived/check_status.sh

#!/bin/bash
while  :
do
nginxpid=`ps -C nginx --no-header | wc -l`
 if [ $nginxpid -eq 0 ];then
  /usr/local/webserver/nginx/sbin/nginx   测试的时候这个不要执行  ,正式部署的时候打开
  sleep 5
nginxpid=`ps -C nginx --no-header | wc -l`
  echo $nginxpid
    if [ $nginxpid -eq 0 ];then
        service keepalived stop
   fi
 fi
 sleep 5
done

添加可执行权限

 # chmod +x check_status.sh
配置keepalived.conf
[root@finder220 ~]# vi /etc/keepalived/keepalived.conf
vrrp_script check_status {  s和{需要空格
 script "/etc/keepalived/check_status.sh"
 interval 5
  weight -5


}
#应用层热备需要添加的内容
vrrp_script chk_http_port {  
        script "</dev/tcp/127.0.0.1/80"
        interval 1 #检测脚本执行的间隔
        weight -2 #权重
}

 virtual_ipaddress {
        192.168.1.225
    }
    track_script {  注意  t和{ 需要空格
       chk_http_port
       check_status
    }

从keepalived 中 配置

    

vrrp_instance VI_1 {
    state MASTER   注意 从服务器这里的state 不是SLAVE  需要改成 MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    mcast_src_ip 192.168.1.221
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.225
    }
   track_script {
       chk_http_port
       check_status

重启 keepalived 

# service keepalived restart


这时  我们 

关闭 finder220  nginx   =》 finder220 keepalived关闭 自动转到  finder221

这时重新开启 nginx   =》 虚拟IP 又转到了finder220上  

至此  高可靠性集群 搭建成功。 


其他命令  :

   ip addr 

   service keepalived restart

    service keepalived stop 

    service keepalived start 

   service keepalived status

  tail -f /var/log/message   => keepalived 动态默认日志

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值