摘要:背景先交代下事情發生的背景,公司在使用的負載均衡產品的過程中由于某種特殊的需求必須要自建外網負載均衡器,由于的云主機使用地址轉化技術,外網的數據包被轉發到了內網,而且外網是與云主機綁定的,所以就不能用傳統的方式實現外網服務的高可用了,但是實
背景
先交代下事情發生的背景,公司在使用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出現故障該腳本就會被執行 }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/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...
閱讀 2650·2021-11-11 16:55
閱讀 1285·2021-09-22 15:25
閱讀 1804·2019-08-29 16:26
閱讀 984·2019-08-29 13:21
閱讀 2313·2019-08-23 16:19
閱讀 2802·2019-08-23 15:10
閱讀 773·2019-08-23 14:24
閱讀 1857·2019-08-23 13:48