摘要:背景先交代下事情发生的背景,公司在使用的负载均衡产品的过程中由于某种特殊的需求必须要自建外网负载均衡器,由于的云主机使用地址转化技术,外网的数据包被转发到了内网,而且外网是与云主机绑定的,所以就不能用传统的方式实现外网服务的高可用了,但是实
背景
先交代下事情发生的背景,公司在使用ucloud的负载均衡产品的过程中由于某种特殊的需求必须要自建外网负载均衡器,由于ucloud的云主机使用nat地址转化技术,外网IP的数据包被转发到了内网IP,而且外网IP是与云主机绑定的,所以就不能用传统的方式实现外网haproxy服务的高可用了,但是ucloud实现了切换公网IP的api,我们让keepalived在另一台机器挂掉的时候调用api来将该机器的外网浮动IP解除绑定,然后绑定到自己身上,api切换的时间极短保证了线上负载均衡器故障能够迅速切换。
安装keepalivedsudo 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
摘要:的操作命令将端口由修改为,修改内容如下具体配置可参考下面的配置文件重启,并查看其状态的配置文件服务器需要修改的配置,仅用参考端口根据自己的情况修改站点根目录可以加载自己的配置文件,这里我把配置文件中的内容直接替换了原本的节 Nginx的操作命令 vim /usr/local/nginx/conf/nginx.conf # 将端口由80修改为10001,修改内容如下: listen ...
摘要:才云科技云开源高级工程师唐继元受邀社群,在线分享高级实践,介绍如何构建环境。除命令外的停止都是异常停止。 才云科技云开源高级工程师唐继元受邀DBAplus社群,在线分享《Kubernetes Master High Availability 高级实践》,介绍如何构建Kubernetes Master High Availability环境。 以下是分享实录: 大家好,我是才云科技的唐继...
摘要:单台服务器可以提供超过万并发连接,万,线速转发能力。外网负载均衡转发示意图如下与内网不同的是,外网流量是从公网进来的。这样上联交换机会根据算法,将流量负载均衡到集群中的各台服务器上。技术架构ULB (UCloud Load Balancer)提供流量分发的能力,保证业务可扩展和高可用。支持内网和外网两种场景,支持请求代理和报文转发两种转发模式。下文将分别介绍ULB的的请求代理(下简称ULB7...
阅读 2595·2021-11-11 16:55
阅读 1259·2021-09-22 15:25
阅读 1766·2019-08-29 16:26
阅读 865·2019-08-29 13:21
阅读 2286·2019-08-23 16:19
阅读 2781·2019-08-23 15:10
阅读 741·2019-08-23 14:24
阅读 1829·2019-08-23 13:48