每日觀點:Shell腳本實戰:Consul 服務注冊和注銷的最佳實踐
業務爸爸需求: 寫一個腳本用于向 Consul 注冊或注銷服務。
(資料圖片)
Consul API 實現服務的注冊和注銷功能
拿到這個需求,我第一時間想到是用 curl 調用 Consul API 實現服務的注冊和注銷功能。 如下:
#!/bin/bashCONSUL_TOKEN="<your_token_here>"CONSUL_URL="http://localhost:8500"function?register_service?{??curl?\????--request?PUT?\????--header?"Content-Type:?application/json"?\????--header?"X-Consul-Token:?${CONSUL_TOKEN}"?\????--data?"@-?${CONSUL_URL}/v1/agent/service/register"?<<EOF{??"ID":?"${1}",??"Name":?"${2}",??"Address":?"${3}",??"Port":?${4}}EOF}function?deregister_service?{??curl?\????--request?PUT?\????--header?"X-Consul-Token:?${CONSUL_TOKEN}"?\????"${CONSUL_URL}/v1/agent/service/deregister/${1}"}#?example?usageregister_service?"my-service"?"My?Service"?"localhost"?8080deregister_service?"my-service"
在這個實現中,我們將認證token存儲在CONSUL_TOKEN變量中,并在curl請求中使用--header "X-Consul-Token: ${CONSUL_TOKEN}"來添加它。
這個是可以實現業務爸爸的需求, 但是,這種實現有以下幾個問題:
1.?不能批量添加相同的類型的指標。
2.?唯一ID需要手動維護。
3.?沒有配置文件留底,雖然三節點的consul集群很小概率同時出問題, 但是有留底還是一個很好習慣。
基于這個幾個點, 寫入下面實現腳本。
register 和 deregister實現
#!/bin/bash#?author?小毛驢#?SHELL_DIR=$(cd?$(dirname?$0);pwd)BACKUP_DIR=${SHELL_DIR}"/consulbackup"SOURCEFILE=${SHELL_DIR}"/origin.json"LOGFILE=${SHELL_DIR}"/add.log"BASESVCRIR=/data/consul/config/TOKENFILE=/data/consul/consul_token.yaml?OPTION=${OPTION:="1"}ENV=${ENV:="prod"}PROJECT=${PROJECT:="fb"}MODULE=${MODULE:="api"}SERVICENAME=${SERVICENAME:="node-exporter"}NAME=${NAME:="core"}TAG=${TAG:="node-exporter"}IPADDRS=""IPADDR=""PORT=${PORT:="9520"}LEGAL_IP="^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$"if?[?!?-e?"${BACKUP_DIR}"?];then????mkdir?-p?${BACKUP_DIR}fifunction?usage(){????????echo?-e?"\nUsage:?$0?<option>?<value>"????????echo?-e?"\n?option:"????????echo?-e?"\n?-o,--option????option?name,?default?1:add?,?2:delete"????????echo?-e?"\n?-e,--env???????env?name,?default?prod"????????echo?-e?"\n?-p,--project???project?name,?default?fb"????????echo?-e?"\n?-m,--module????module?name,?default?api"????????echo?-e?"\n?-n,--name??????api?name,?default?core"????????echo?-e?"\n?-s,--svcname???serviceName?name,?default?node-exporter"????????echo?-e?"\n?-t,--tag???????tag?name,?default?node-exporter"????????echo?-e?"\n?-a,--address???ip?address,?eg?1.1.1.1|2.2.2.2?default?''?[Require]"????????echo?-e?"\n?-i,--interface?interface?num?default?9520"????????echo?-e?"\n?-h,--help??????help"}function?checkIp(){????#正則表達式檢驗?ip?地址????[[??$1?=~?$LEGAL_IP?]]????if?[?$??-gt?0?];?then????????echo?"$1?is?an?error?ip?fromat"????????exit?10????fi}function?svcDeregister()?{????if?[?!?-e?"$1"?];then????????echo?"$1?not?exit,?please?check!"????else????????/bin/consul?services?deregister??-token-file=${TOKENFILE}??$1????fi}function?svcRegister()?{????if?[?!?-e?"$1"?];then????????echo?"$1?not?exit,?please?check!"????else????????/bin/consul?services?register??-token-file=${TOKENFILE}?$1????fi}function?genJson()?{cat?>?"${SERVICENAME}-${ENV}-${PROJECT}-${MODULE}-${NAME}-${IPADDR}.json"?<<EOF{??"service":?{????"id":?"${SERVICENAME}-${ENV}-${PROJECT}-${MODULE}-${NAME}-${IPADDR}",????"name":?"${SERVICENAME}",????"tags":?[???????"${TAG}"????],????"address":?"${IPADDR}",????"port":?${PORT},????"meta":?{??????"name":?"${NAME}-${IPADDR}",??????"module":?"${MODULE}",??????"project":?"${PROJECT}",??????"env":?"${ENV}"????},????"check":?{??????"http":?"http://${IPADDR}:${PORT}/metrics",??????"interval":?"10s"????},????"weights":?{??????"passing":?10,??????"warning":?1????}??}}EOF}function?removeJson()?{????mv?"${SERVICENAME}-${ENV}-${PROJECT}-${MODULE}-${NAME}-${IPADDR}.json"??${BACKUP_DIR}}function?main()?{????if?(($#?==?0));then????????usage????????exit????fi????cd?${SHELL_DIR}????while?[?-n?"$1"?];do????????case?$1?in?????????-o|--option?)????????????OPTION=$2????????????shift????????????;;????????-e|--env?)????????????ENV=$2????????????shift????????????;;????????-p|--project?)????????????PROJECT=$2????????????shift????????????;;????????-m|--module??)????????????MODULE=$2????????????shift????????????;;????????-n|--name?)????????????NAME=$2????????????shift????????????;;????????-s|--svcname?)????????????SERVICENAME=$2????????????shift????????????;;????????-t|--tag?)????????????TAG=$2????????????shift????????????;;????????-a|--address?)????????????IPADDRS=$2????????????shift????????????;;????????-i|--interface?)????????????PORT=$2????????????shift????????????;;????????-h|--help?)????????????usage????????????exit????????????;;????????*)????????????echo?-e?"\n$1?unknow?an?option"????????????usage????????????exit????????esac????????shift?????done????if?[?"${IPADDRS}"x?==?""x?];then????????echo?-e?"\n-a|--address?option?is?Require"????????usage????????exit????fi????SVCRIR="${BASESVCRIR}/${SERVICENAME}"????if?[?!?-e?"${SVCRIR}"?];then????????mkdir?-p?${SVCRIR}????fi????cd?${SVCRIR}????hosts=($(echo?${IPADDRS}?|?sed?'s/|/?/g'))????for((?i=0;i<${#hosts[@]};i++))?????do????????echo?${hosts[$i]}????????checkIp?${hosts[$i]}????????IPADDR="${hosts[$i]}"????????if?[[?"${OPTION}"x?==?"1"x??]];?then????????????genJson????????????#statements????????????svcRegister?"${SERVICENAME}-${ENV}-${PROJECT}-${MODULE}-${NAME}-${IPADDR}.json"?????????fi????????if?[[?"${OPTION}"x?==?"2"x??]];?then????????????#statements????????????svcDeregister?"${SERVICENAME}-${ENV}-${PROJECT}-${MODULE}-${NAME}-${IPADDR}.json"?????????????removeJson????????fi????done?}main?$@
這個腳本首先定義了BACKUP_DIR,BASESVCRIR 和TOKENFILE 等路徑。
用法
./register-service.sh?[OPTIONS]
參數-h,?--help:?顯示幫助信息并退出。-o,?-option:?1?register?;?2?deregister-e,--env???????環境標識,?default?prod-p,--project??項目名字,?default?fb-m,--module???業務模塊名,?default?api-n,--name??????模塊下面的應用名,?default?core-s,--svcname???service?名字,?default?node-exporter-t,--tag???????tag?名字,?default?node-exporter-a,--address???需要注冊到該服務的地址,多個以“|”分開,,?eg?1.1.1.1|2.2.2.2?default?''?[Require],必須提供-i,--interface??需要注冊的端口?9520
./register-service.sh -o 1 -e prod -p fb -m ops -n consul-ops -s consul_exporter-t consul_exporter -a "10.2.0.6|10.2.0.10|10.2.0.41" -i 9107
標簽:
推薦
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ST天龍(300029.SZ)2022年度共計提各類資產減值準備204.31萬元_環球快看點
智通財經APP訊,ST天龍發布公告,為真實反映公司的財務狀況、資產價值及經營情況,根據《企業會計準則》以
來源: -
-
-
-
世界即時:吳通控股(300292.SZ)發布2022年業績 凈利潤2024.51萬元 同比下降66.66%
智通財經APP訊,吳通控股披露2022年年度報告,該公司年度實現營業收入36 07億元,同比下降14 77%。歸屬于上
來源: -
特發服務(300917.SZ)發布2022年度業績,凈利潤1.14億元,增長1.46%,擬10股派2元
公司全年新拓展項目82個,新簽約合同金額約9 67億元。報告期內,公司持續鞏固高新園區類物業市場優勢,通過
來源: -
-
教育部長江學者,蘇州大學傳媒學院執行院長陳龍:挖掘文化內核,加強數字化城市宣傳 動態
4月23日,在學院派傳媒大咖鄭州行“四地建設”座談會上,教育部長江學者,蘇州大學傳媒學院執行院長陳龍...
來源: -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
工信部等八部門:到2025年底初步形成以IPv6演進技術為核心的產業生態體系
工信部等八部門:到2025年底初步形成以IPv6演進技術為核心的產業生態體系---人民網北京4月23日電(記者申佳
來源:
財富更多》
-
重慶北碚:“金融活水”助力民營經濟發展
重慶北碚:“金融活水”助力民營經濟發...
-
工信部等八部門:到2025年底初步形成以IPv6演進技術為核心的產業生態體系
工信部等八部門:到2025年底初步形成以I...
-
“西安造”搭上長安號 中歐班列吉利汽車出口專列首發 天天新消息
“西安造”搭上長安號中歐班列吉利汽車...
-
世界新資訊:海南舉辦自貿港產業園區投資合作大會 協議投資額超400億元
海南舉辦自貿港產業園區投資合作大會協...
-
全球熱點評!發揮央企綠色發展引領作用 助力新能源產業發展
發揮央企綠色發展引領作用助力新能源產...
動態更多》
熱點
- realme10系列正式宣布 采用雙曲面屏正面頂部居中挖孔
- 五菱全新微型電動車內飾官圖發布 座椅采用星際形打孔工藝
- 努比亞Z40星空典藏版正式開售 采用微米級油畫筆觸紋理技術
- iQOO11系列正式官宣 首批搭載驍龍8Gen2機型之一
- 海信34英寸帶魚屏顯示器發布 支持165Hz刷新率
- OPPO明年將商用240W超級閃充 新一代電芯支持更高倍率充電
- 第一款Android手機渲染圖曝光 橫向滑蓋設計和全尺寸鍵盤
- 吉利首款純電皮卡11月9日上市 車輛續航里程超過610公里
- 努比亞Z40SPro星空典藏版正式公布 堪稱窄邊框天花板
- vivo無線運動耳機2今日正式上市 首銷只要119元
- Mysteel周報:各品種出口價格全面回落 價格差距增加成交水平不一 世界觀焦點
- 暑假計劃手抄報模板_暑假計劃手抄報-環球百事通
- 世界新資訊:海南舉辦自貿港產業園區投資合作大會 協議投資額超400億元
- 世界微頭條丨pdf excel相互轉換_PDF EXCEL
- 用九個鍵打92464是什么意思?-當前視訊
- 航母福建艦傳來好消息!盤點A股中的航母概念股
- 拼多多怎么刪除好友的_拼多多貓好友怎么刪除 速看料
- 千元機卷王?OPPO A1不僅有素皮機身,系統功能也很實用 天天熱聞
- 今日熱訊:城投債“小作文”傳播沸沸揚揚,涉城投債產品“一刀切”暫停備案?期貨資管躺槍
- 孕媽媽40周護理全程指導_世界看點
- 75英寸電視不到3K 該漲價了?液晶面板價格觸底反彈
- 全球熱點評!發揮央企綠色發展引領作用 助力新能源產業發展
- 截至3月底中國累計發電裝機容量約26.2億千瓦 同比增9.1%
- 天天微資訊!谷歌CEO年薪高達15億,是其員工收入中位數800多倍
- 王煒:正在研究擴大碳市場排放在行業的覆蓋范圍_環球時快訊
- 近期,印度迎來婚禮旺季,不少人都會提前選購一些黃金飾品,各大珠寶店里也常常是人頭攢動_快播
- 美國多個州要求召回韓國汽車:缺乏基本的防盜裝置 危及公共安全 環球百事通
- 蘇州轉轉卡景點需要預約嗎|世界頭條
- 和平區民營企業招聘會今天舉行 環球資訊
- 記者調查:廢棄汽車專項治理工作為何延誤? 環球聚看點
- “青春正是讀書時”網絡主題活動正式啟動!期待你的參與
- 焦點簡訊:小小冰淇淋背后 上海車展的“中外汽車大戰”財聯社記者實探
- 日日月月_日日草在線
- 環球視點!大名鼎鼎的意思解釋_大名鼎鼎的意思
- “金融支持前海30條”落地成效初顯,深港跨境金融服務提質升級|環球聚焦
- 日喀則海拔高度_日喀則海拔
- 第三屆自然資源好書薦讀活動在京舉辦
- 從1-0到1-3,拜仁慘遭逆轉,讓出爭冠主動權!拜仁高層后悔嗎?_環球快報
- 華北油田首個分布式智能電網正式運行-報道
- 淄博燒烤熱的啟示 焦點訊息
- 天天日報丨皇馬勝、負場最多的西甲對手:巴薩勢均力敵,西班牙人成送分童子
- 第四屆聯合國世界數據論壇大事記
- 今日熱聞!說啥了?跟隊:不敵美因茨后,卡恩、薩利和海納進了拜仁更衣室
- 【時快訊】海南一季度離島免稅購物“郵寄送達”包裹同比增長一倍
- 攻殼機動隊:崛起|天天微頭條
- 工業軟件迎來高速發展階段,全國有近1670家相關企業-每日時訊
- 消息稱迪士尼計劃下周裁員數千人 全球快看
- 環球視點!研報速遞|市場結構的再平衡如期進行中 中期科技依舊占優
- 多位經濟學家熱議通脹數據回落:低通脹不等于通貨緊縮 中國經濟仍在穩步復蘇中
- 全球觀速訊丨研報速遞|A股當前市場機會大于風險 二季度將進入盈利上行周期
- 經濟穩步回升得到進一步驗證 多位首席亮觀點:多個因素支撐繼續向好
- 韋德的logo_韋德的身高
- 陜西省寶雞市市場監管局抽檢食品85批次 2批次不合格
- 華碩無畏15i 2023到手價5699元 世界焦點
- 數字王國獲1.43億港元投資,將探索生成式人工智能商業化-全球熱頭條
- 四川省廣元市市場監督管理局“鐵拳”行動2023典型案例 第一期-當前要聞
- 全球熱訊:廣東省河源市市場監督管理局公布第三批反餐飲食品浪費典型案例
- 芯片成汽車發展關鍵 全國有集成電路相關企業48萬家 每日焦點
- 焦點關注:“身價上億,守身如玉”
- 環球快報:比亞迪在南京再成立汽車銷售公司 經營范圍含二手車經紀
- 天天速讀:Distalmotion獲得1.5億美元戰略投資
- 環球新消息丨什么樣的蟲子攻擊垂柳樹?
- 焦點短訊!讀書之美|品味紅色經典,王雷與你共讀《可愛的中國》
- 印第安納州印第安納波利斯長勢良好的果樹
- 全球速訊:被指搶占平臨高速公司成立僅2個月 揭秘被指搶占平臨高速河南越秀公司
- “義新歐”中歐班列(浙江義烏—中亞五國)開行十周年-焦點簡訊
- 迷組詞有哪些_米組詞有哪些
- 焦點速讀:債市機構行為最新異動,券商保險全面增配,基金大幅減持存單4000多億
- 經濟穩步回升得到進一步驗證 美限制對中國影響微乎其微
- 天天速遞!一秒一光年的速度_一秒
- 溫州市甌海經濟開發區建設投資集團及下屬子公司招聘報名時間
- 涂鴉之作不足當先生一曬如蒙賜正小子不勝感激_A 涂鴉之作 不足當先生一哂 如蒙賜正 小子不勝感激 B_世界今頭條
- 環球觀點:小米13至尊紀念版公布:最好的安卓拍照手機?
- 百事通!三星Exynos 2400帶來GPU性能大幅提升
- 2023年寧波鄞州數字人民幣紅包可以在哪些地方使用
- 焦點日報:佳木斯美食特色飯店排行_佳木斯美食
- 2023蒼南衛生健康系統提前招聘醫學類畢業生公告(第二輪) 全球速遞
- 樂視體育與中興通訊的合伙公司注銷
- Holiday Swap獲得1500萬美元戰略投資|環球最新
- 諾安基金陳衍鵬:2023年看好科技股投資機會
- 美國國土安全部成立工作組 用AI保障國家安全
- 信澳匯鑫兩年封閉式債券增聘基金經理楊彬 世界球精選
- 斗羅大陸2絕世唐門同人小說_有沒有斗羅大陸的同人小說 字越多越好 后宮
- 起底蕭縣立亭合作社 蕭縣立亭合作社2022年參保人數為0|世界熱門
- 世界今頭條!青海:提升海西地區新能源外送能力20萬千瓦
- 全球看點:dnf單機60版本免虛擬機_dnf單機60版本
- 我愛你中國汪峰合唱_我愛你中國歌詞汪峰_世界今亮點
- 天天資訊:中秋節成語故事大全_中秋節成語故事
- 數字綠土獲數千萬元戰略融資-世界訊息
- 資訊:西藏東財中證滬港深創新藥ETF增聘基金經理莫志剛
- 當前焦點!張玲任華宸未來基金財務負責人
- 國家公園建設為青海高原生物多樣性保護提供更多契機
- 狀態有所起伏?凱爾特人的超級藍領中鋒竟然被老鷹打爆了?|環球快看點
- 國會山“股神”再現?美國銀行業動蕩中至少9名議員拋售銀行股
- 王思聰塑料表_chiphell王思聰帖子 天天微速訊
- 男子守號擒雙色球859萬:媳婦領進門修行在個人
- 每日播報!植田擔任行長的首次會議不會調整政策
- 讓居民感受溫度和情懷,李滄這個社區啟動“春日計劃”_每日速訊
- vivo Y78+配置及外觀曝光,搭載驍龍695處理器
- 山東泰山隊鋒無力靠誰解決?兩大新援或是答案|當前熱點
- 中消協發布“五一”假期消費提示:安全為先 綠色消費
- 降低平臺過高抽成,要通過協商找到最大公約數 全球快報
- 美股周評:周五股市收盤變化不大 道瓊斯指數連續4周上漲 全球時快訊
- 阿里云與深圳數據交易所簽署戰略合作 共同探索大模型
- 許芬芬卸任游齊網絡公司法定代表人 許芬芬卸任游族網絡旗下公司職務
- 寶潔2023財年第三季度凈利潤為33.97億美元,同比增長1%_環球快資訊
- 男子攬體彩500萬給家人治病:希望好運傳遞給親人_天天亮點
- 加快數字化轉型升級 “新電商”帶來新體驗
- 李好在支付寶開直播首秀,價值50萬畢加索陶瓷畫一分鐘拍出
- 第十八屆文津圖書獎揭曉 共19種圖書獲獎(附名單)
- 元誠裕隆完成首輪千萬級天使輪融資
- 世界熱點評!鐵路部門五一假期增開旅客列車1500多列其中夜間高鐵102列
- 每日頭條!03月09日安慶前往雙鴨山出行防疫政策查詢-從安慶出發到雙鴨山的防疫政策
- 魯商置業尋求轉型的背后是其不得不面臨的資金困境
- 國家稅務總局青島市稅務局稅稅通_青島國稅局稅稅通-今熱點
- 有色金屬行業周報:議息會議臨近導致金屬短期承壓,長期仍看多有色資源標的,重點關注黃金、鋁和錫-全球最資訊
- 離譜!五角大樓泄密何時開始:俄烏沖突爆發后48小時內
- “貴商易”上線新平臺 大數據助力人才與企業“雙向奔赴” 環球快播
- 大自然的語言運用了哪些說明方法 大自然的語言運用了哪些說明方法及作用_全球熱點
- 小米電視大師86英寸miniled今日開售|今日聚焦
- 怎么養好櫻桃樹 怎么養櫻桃樹苗 當前快報
- 法先生3家公司被強制執行27萬 法先生關聯公司成被執行人
- 2023年白羽雞行業研究 白羽肉雞與黃羽肉雞價格間相關性顯著
- 全球今日訊!絲綢怎么清洗 蠶絲被如何清洗
- baupal獲得1940萬歐元A輪融資
- You.com ceo稱:ChatGPT驅動搜索引擎挑戰谷歌霸主地位
- 熱頭條丨重慶蘇寧易購被執行超千萬
- 大停電兩年后,美國得州提升電力可靠性標準|環球微資訊
- TenneT授予價值320億美元的北海電網開發合同
- 當前關注:泰國天絲已注冊多個紅牛商標 盤點中國紅牛華彬集團商業版圖
- 蘋果手機自拍鏡像怎么設置在哪里?蘋果手機自拍鏡像翻轉怎么弄?
- 魅族16T怎么打開游戲模式?魅族16t換電池需要激活嗎?
- airpodspro支持主動降噪嗎?airpodspro怎么恢復出廠設置?
- 榮耀20青春版有呼吸燈嗎?榮耀20青春版的語音助手怎么喊出來?
- ipad護眼模式怎么開?ipad護眼模式真的防藍光嗎?