摘要:背景先交代下事情發(fā)生的背景,公司在使用的負載均衡產(chǎn)品的過程中由于某種特殊的需求必須要自建外網(wǎng)負載均衡器,由于的云主機使用地址轉(zhuǎn)化技術(shù),外網(wǎng)的數(shù)據(jù)包被轉(zhuǎn)發(fā)到了內(nèi)網(wǎng),而且外網(wǎng)是與云主機綁定的,所以就不能用傳統(tǒng)的方式實現(xiàn)外網(wǎng)服務(wù)的高可用了,但是實
背景
先交代下事情發(fā)生的背景,公司在使用ucloud的負載均衡產(chǎn)品的過程中由于某種特殊的需求必須要自建外網(wǎng)負載均衡器,由于ucloud的云主機使用nat地址轉(zhuǎn)化技術(shù),外網(wǎng)IP的數(shù)據(jù)包被轉(zhuǎn)發(fā)到了內(nèi)網(wǎng)IP,而且外網(wǎng)IP是與云主機綁定的,所以就不能用傳統(tǒng)的方式實現(xiàn)外網(wǎng)haproxy服務(wù)的高可用了,但是ucloud實現(xiàn)了切換公網(wǎng)IP的api,我們讓keepalived在另一臺機器掛掉的時候調(diào)用api來將該機器的外網(wǎng)浮動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 # 復(fù)制config.simple.py模板文件編寫腳本
修改 config.py 文件,
#配置公私鑰""" public_key = "" #你的公鑰 private_key = "" #你的私鑰 project_id = "" # 項目ID 請在Dashbord 上獲取 """ #添加以下內(nèi)容 EIPID="eip-lb011e" #你需要浮動的EIP的ID MYUHOSTID="uhost-33eitwa" #腳本部署在這臺機器的ID,可在控制臺上查看 注意,你腳本部署在哪臺機器這個ID就是哪臺機器的ID PEERUHOSTID="uhost-333xvs" # 另一臺機器的ID REGION="hk" #地區(qū) Region 可在ucloud官網(wǎng)查閱
接下來修改 bind_eip.py 將Parameters段參照以下內(nèi)容修改
Parameters={ "Action":"BindEIP", "EIPId":EIPID, "ResourceId":MYUHOSTID, "ResourceType":"uhost", "Region":REGION }
修改 unbind_eip.py 將Parameters段參照以下內(nèi)容修改
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 調(diào)用這個腳本,當退出值不為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出現(xiàn)故障該腳本就會被執(zhí)行 }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出現(xiàn)故障該腳本就會被執(zhí)行 }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44601.html
摘要:的操作命令將端口由修改為,修改內(nèi)容如下具體配置可參考下面的配置文件重啟,并查看其狀態(tài)的配置文件服務(wù)器需要修改的配置,僅用參考端口根據(jù)自己的情況修改站點根目錄可以加載自己的配置文件,這里我把配置文件中的內(nèi)容直接替換了原本的節(jié) Nginx的操作命令 vim /usr/local/nginx/conf/nginx.conf # 將端口由80修改為10001,修改內(nèi)容如下: listen ...
摘要:才云科技云開源高級工程師唐繼元受邀社群,在線分享高級實踐,介紹如何構(gòu)建環(huán)境。除命令外的停止都是異常停止。 才云科技云開源高級工程師唐繼元受邀DBAplus社群,在線分享《Kubernetes Master High Availability 高級實踐》,介紹如何構(gòu)建Kubernetes Master High Availability環(huán)境。 以下是分享實錄: 大家好,我是才云科技的唐繼...
摘要:單臺服務(wù)器可以提供超過萬并發(fā)連接,萬,線速轉(zhuǎn)發(fā)能力。外網(wǎng)負載均衡轉(zhuǎn)發(fā)示意圖如下與內(nèi)網(wǎng)不同的是,外網(wǎng)流量是從公網(wǎng)進來的。這樣上聯(lián)交換機會根據(jù)算法,將流量負載均衡到集群中的各臺服務(wù)器上。技術(shù)架構(gòu)ULB (UCloud Load Balancer)提供流量分發(fā)的能力,保證業(yè)務(wù)可擴展和高可用。支持內(nèi)網(wǎng)和外網(wǎng)兩種場景,支持請求代理和報文轉(zhuǎn)發(fā)兩種轉(zhuǎn)發(fā)模式。下文將分別介紹ULB的的請求代理(下簡稱ULB7...
閱讀 2636·2021-11-11 16:55
閱讀 1279·2021-09-22 15:25
閱讀 1793·2019-08-29 16:26
閱讀 925·2019-08-29 13:21
閱讀 2306·2019-08-23 16:19
閱讀 2795·2019-08-23 15:10
閱讀 761·2019-08-23 14:24
閱讀 1850·2019-08-23 13:48