nginx 高可用keepalived 配置 Lvs

tomcat 的高可用的思路,是在 tomcat 集群前面加一层负载服务 nginx 。如下图
这种做法,解决了 tomcat 的高可用问题。但是引入了前面的负载机器的高可用问题( Nginx
如果挂了,玩完)
如果 nginx 沿用此思路,总会有一个最前端是单机的,存在宕机玩完的风险(鸡生蛋蛋生鸡
无穷尽)
lvs 思想解决高可用问题
如上图,由服务器集群虚拟出来一台 虚拟网关 vip (不真实存在,自
然不存在宕机问题),
vip 由两台机器共同协商生成。当有一台机器宕机时,另一台机器
一样能维持 vip 。这保证了,只要两台机器不同时宕机, vip 就存在
keepalived 配置 LVS 过程
前提
1. 关闭 selinux ,打开 /etc/sysconfig/selinux 设置其中值 SELINUX=disabled
vim /etc/sysconfig/selinux
SELINUX=disabled
 
2. 安装必须的依赖包
yum -y install libnl libnl-devel libnfnetlink-devel
keepalived 安装
下载源码包 -- 不能使用 yum 方式安装(有 bug
--wget
https://www.keepalived.org/software/keepalived-1.3.4.tar.gz
配置 ( 指定安装目录和配置目录,否则文件太散乱 ) --./configure --prefix=/usr/local/keepalived
--sysconf=/etc
make && make install
./configure --prefix=/usr/local/test可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。
上面分开3句进行执行

wget https://www.keepalived.org/software/keepalived-1.3.4.tar.gz 

tar zvxf keepalived-1.3.4.tar.gz 

cd keepalived-1.3.4

./configure --prefix=/usr/local/keepalived --sysconf=/etc

make && make install



/etc/目录下自动生成keepalived目录

 

/usr/local/目录下自动生成keepalived目录

 

keepalived 主机配置
打开 /etc/keepalived/keepalived.conf ,只需要配置如下一段。(其它是多余配置,删除)


! Configuration File for keepalived

global_defs {
   router_id LVS_1	##唯一标识
}
vrrp_script chk_http_port {
    script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本,目录不在就创建
    interval 2                       #(检测脚本执行的间隔,单位是秒)
    weight 2
}

vrrp_instance VI_1 {
    state one 
    interface ens33   #系统网卡
    virtual_router_id 51 #主备两机器一致
    priority 100   #值大的机器,胜出 ##唯一标识
    advert_int 1	##每1s检测一次心跳
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress { #可虚拟多个ip
        192.168.244.200
    }
}

chk_nginx.sh

chmod +x chk_nginx.sh  给上执行权限,才能被.conf程序调用

chmod -R 777 chk_nginx.sh  注意要有执行权限
 

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`      ##统计nginx进程数,若为0,表明nginx被杀
if [ $A -eq 0 ];then
        /usr/local/openresty/nginx/sbin/nginx                #重启nginx
        #nginx重启失败,则停掉keepalived服务,进行VIP转移
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
              killall keepalived    #杀掉,vip就漫游到另一台机器
        fi
fi
 

效果如下:成为不死鸟了



启动 keepalived ,查看机器 ip 地址,可发现多出一个 42.200 ip
/usr/local/keepalived/sbin/keepalived 
ip addr
./keepalived  & 启动或者退出

 

 

此时,使用原 ip 地址 42.101  能打开的页面,使用 42 .200 也能打开
keepalived 从机配置 对比如下:
 priority 100 主机要大于从机

! Configuration File for keepalived
global_defs {
   router_id LVS_1              ####keepalived的唯一标识
}
vrrp_script chk_http_port {
    script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2
}

vrrp_instance VI_1 {
    state one
    interface ens33 ##系统网上名,可以使用ip addr命令查看
    virtual_router_id 51        ##组名,参与此虚拟ip的机器配置一样的值
    priority 100        ##优先级,数值大的优先级高,组内最高的胜出
    advert_int 1        ##心跳检测1s一次
    authentication {    ##心跳检测1s一次
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port   #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.42.200  ##虚拟的ip
    }
}
 


keepalived 校验 LVS 效果
1 、此时,杀掉主机上的 keepalived 42.200  ip 将从主机上消失。而出现的从机的 ip
2 、再次启动主机的 keepalived 42.200  ip 将被主机重新夺回
3 、此效果是单主单备方式。备机资源有一定的浪费。可以重复前面的动作,虚拟出第二个
ip ,将主从机优先级颠倒,从而利用起备机服务
关掉主节点的 101的keepalived时,漫游到102的keepalived
2 、再次启动主机的 keepalived 42.200  ip 将被主机重新夺回,又回到101


keepalived 校验 LVS 效果
1 、此时,杀掉主机上的 keepalived 42.200  ip 将从主机上消失。而出现的从机的 ip
2 、再次启动主机的 keepalived 42.200  ip 将被主机重新夺回
3 、此效果是单主单备方式。备机资源有一定的浪费。可以重复前面的动作,虚拟出第二个
ip ,将主从机优先级颠倒,从而利用起备机服务
虚拟出第二个 ip 实现互为主从方式:
配置一:

! Configuration File for keepalived
global_defs {
   router_id LVS_1              ####keepalived的唯一标识
}
vrrp_script chk_http_port {
    script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2
}

vrrp_instance VI_1 {
    state one
    interface ens33 ##系统网上名,可以使用ip addr命令查看
    virtual_router_id 51        ##组名,参与此虚拟ip的机器配置一样的值
    priority 100        ##优先级,数值大的优先级高,组内最高的胜出
    advert_int 1        ##心跳检测1s一次
    authentication {    ##心跳检测1s一次
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port   #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.42.200  ##虚拟的ip
    } 
}         
vrrp_instance VI_2 {
    state MASTER
    interface ens33 ##系统网上名,可以使用ip addr命令查看
    virtual_router_id 52        ##组名,参与此虚拟ip的机器配置一样的值
    priority 200        ##优先级,数值大的优先级高,组内最高的胜出
    advert_int 1        ##心跳检测1s一次
    authentication {    ##心跳检测1s一次
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port   #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.42.203  ##虚拟的ip
    }
}
 


配置二

! Configuration File for keepalived

global_defs {
  router_id LVS_DEVEL
}
vrrp_script chk_http_port {
    script "/etc/nginx/chk_nginx.sh" #心跳执行的脚本
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33 ##系统网上名,可以使用ip addr命令查看
    virtual_router_id 51        ##组名,参与此虚拟ip的机器配置一样的值
    priority 200        ##优先级,数值大的优先级高,组内最高的胜出
    advert_int 1        ##心跳检测1s一次
    authentication {    ##心跳检测1s一次
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port   #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.42.200  ##虚拟的ip
    } 
}         
         
vrrp_instance VI_2 {
    state slave
    interface ens33 ##系统网上名,可以使用ip addr命令查看
    virtual_router_id 52        ##组名,参与此虚拟ip的机器配置一样的值
    priority 200        ##优先级,数值大的优先级高,组内最高的胜出
    advert_int 1        ##心跳检测1s一次
    authentication {    ##心跳检测1s一次
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port   #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.42.203  ##虚拟的ip
    }
}    
 


效果如下:
kill掉一台时的,漫游过去另一台了
结果如下,就不会浪费资源了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值