资讯专栏INFORMATION COLUMN

Ucloud配置haproxy+keepalived(利用ucloud-API实现外网浮动IP切换)

nodejh / 2799人阅读

摘要:背景先交代下事情发生的背景,公司在使用的负载均衡产品的过程中由于某种特殊的需求必须要自建外网负载均衡器,由于的云主机使用地址转化技术,外网的数据包被转发到了内网,而且外网是与云主机绑定的,所以就不能用传统的方式实现外网服务的高可用了,但是实

背景

先交代下事情发生的背景,公司在使用ucloud的负载均衡产品的过程中由于某种特殊的需求必须要自建外网负载均衡器,由于ucloud的云主机使用nat地址转化技术,外网IP的数据包被转发到了内网IP,而且外网IP是与云主机绑定的,所以就不能用传统的方式实现外网haproxy服务的高可用了,但是ucloud实现了切换公网IP的api,我们让keepalived在另一台机器挂掉的时候调用api来将该机器的外网浮动IP解除绑定,然后绑定到自己身上,api切换的时间极短保证了线上负载均衡器故障能够迅速切换。

安装keepalived
sudo apt update 
sudo apt install keepalived -y
准备脚本 下载ucloud sdk
git clone https://github.com/ucloud/ucloud-sdk-python.git /etc/keepalived/script #下载ucloud python sdk 到 /etc/keepalived/script目录
cd /etc/keepalived/script  # 进入 script 目录 
cp config.simple.py config.py   # 复制config.simple.py模板文件
编写脚本

修改 config.py 文件,

#配置公私钥"""
public_key  = "" #你的公钥
private_key = "" #你的私钥
project_id = "" # 项目ID 请在Dashbord 上获取

"""
#添加以下内容
EIPID="eip-lb011e"  #你需要浮动的EIP的ID
MYUHOSTID="uhost-33eitwa"  #脚本部署在这台机器的ID,可在控制台上查看 注意,你脚本部署在哪台机器这个ID就是哪台机器的ID
PEERUHOSTID="uhost-333xvs" # 另一台机器的ID 
REGION="hk"  #地区 Region 可在ucloud官网查阅

接下来修改 bind_eip.py 将Parameters段参照以下内容修改

Parameters={
    "Action":"BindEIP",
    "EIPId":EIPID,
    "ResourceId":MYUHOSTID,
    "ResourceType":"uhost",
    "Region":REGION
}

修改 unbind_eip.py 将Parameters段参照以下内容修改

Parameters={
    "Action":"UnBindEIP",
    "EIPId":EIPID,
    "ResourceId":PEERUHOSTID,
     "ResourceType":"uhost",
    "Region":REGION
}

新建脚本 slave2master.sh

#!/bin/bash
python  /etc/keepalived/script/unbind_eip.py  #先把IP从故障的那台机器解绑
python /etc/keepalived/script/bind_eip.py     # 再绑定到本机上

编写一个故障检查脚本 check_haproxy.sh

#!/bin/bash
GREP_OPTIONS=""
Count1=`netstat -antp |grep -v grep |grep haproxy |wc -l`

if [ $Count1 -eq 0  ]; then
exit 1  #keepalived 调用这个脚本,当退出值不为0就认为本机故障
fi
exit 0


编写 keepalived的配置文件 slave的配置文件参考
! Configuration File for keepalived

global_defs {
          router_id xxx-lb-test
}

vrrp_script chk_haproxy {
        script "/etc/keepalived/check_haproxy.sh" 
        interval 2 

}

vrrp_instance VI_1 {

    unicast_peer {
        10.8.100.13    !另一台机器(master)的IP                  
    }
        state BACKUP   !默认进入backup模式
        interface eth0
        virtual_router_id 194
        priority 10
        weight 5
        !    nopreempt
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass e8qvAwPTWgCEepUKCQ4tN
        }
        track_script {
                   chk_haproxy                   
        }
            notify_master /etc/keepalived/script/slave2master.sh   #一旦master出现故障该脚本就会被执行

}

master的配置文件 参考
! Configuration File for keepalived

global_defs {
    router_id xxx-lb-test
}

vrrp_script chk_haproxy {
    script "/etc/keepalived/check_haproxy.sh" 
    interval 2 
}



vrrp_instance VI_1 {

    unicast_peer {
        10.8.126.62  # Slave 的IP            
    }
    state MASTER #默认为 MASTER
    interface eth0
    virtual_router_id 194
    priority 100
    !    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass e8qvAwPTWgCEepUKCQ4tN
        }
    track_script {
           chk_haproxy
    }
    notify_master /etc/keepalived/script/slave2master.sh #一旦slave出现故障该脚本就会被执行
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44601.html

相关文章

  • LNMP+HAProxy+Keepalived负载均衡(三)- 配置文件汇总

    摘要:的操作命令将端口由修改为,修改内容如下具体配置可参考下面的配置文件重启,并查看其状态的配置文件服务器需要修改的配置,仅用参考端口根据自己的情况修改站点根目录可以加载自己的配置文件,这里我把配置文件中的内容直接替换了原本的节 Nginx的操作命令 vim /usr/local/nginx/conf/nginx.conf # 将端口由80修改为10001,修改内容如下: listen ...

    894974231 评论0 收藏0
  • Kubernetes Master High Availability 高级实践

    摘要:才云科技云开源高级工程师唐继元受邀社群,在线分享高级实践,介绍如何构建环境。除命令外的停止都是异常停止。 才云科技云开源高级工程师唐继元受邀DBAplus社群,在线分享《Kubernetes Master High Availability 高级实践》,介绍如何构建Kubernetes Master High Availability环境。 以下是分享实录: 大家好,我是才云科技的唐继...

    JiaXinYi 评论0 收藏0
  • 【负载均衡 ULB】技术架构:内网ULB4,外网ULB4,内网ULB7,外网ULB7以及模式比对

    摘要:单台服务器可以提供超过万并发连接,万,线速转发能力。外网负载均衡转发示意图如下与内网不同的是,外网流量是从公网进来的。这样上联交换机会根据算法,将流量负载均衡到集群中的各台服务器上。技术架构ULB (UCloud Load Balancer)提供流量分发的能力,保证业务可扩展和高可用。支持内网和外网两种场景,支持请求代理和报文转发两种转发模式。下文将分别介绍ULB的的请求代理(下简称ULB7...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<