成人伊人青草久久综合网_91在线视频免费观看_毛片免费视频网站_亚洲欧美日韩在线中文字幕

每日觀點:Shell腳本實戰(zhàn):Consul 服務(wù)注冊和注銷的最佳實踐

來源:嗶哩嗶哩

業(yè)務(wù)爸爸需求: 寫一個腳本用于向 Consul 注冊或注銷服務(wù)。


(資料圖片)

Consul API 實現(xiàn)服務(wù)的注冊和注銷功能

拿到這個需求,我第一時間想到是用 curl 調(diào)用 Consul API 實現(xiàn)服務(wù)的注冊和注銷功能。 如下:

#!/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"

在這個實現(xiàn)中,我們將認(rèn)證token存儲在CONSUL_TOKEN變量中,并在curl請求中使用--header "X-Consul-Token: ${CONSUL_TOKEN}"來添加它。

這個是可以實現(xiàn)業(yè)務(wù)爸爸的需求, 但是,這種實現(xiàn)有以下幾個問題:

1.?不能批量添加相同的類型的指標(biāo)。

2.?唯一ID需要手動維護(hù)。

3.?沒有配置文件留底,雖然三節(jié)點的consul集群很小概率同時出問題, 但是有留底還是一個很好習(xí)慣。

基于這個幾個點, 寫入下面實現(xiàn)腳本。

register 和 deregister實現(xiàn)

#!/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(){????#正則表達(dá)式檢驗?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]參數(shù)-h,?--help:?顯示幫助信息并退出。-o,?-option:?1?register?;?2?deregister-e,--env???????環(huán)境標(biāo)識,?default?prod-p,--project??項目名字,?default?fb-m,--module???業(yè)務(wù)模塊名,?default?api-n,--name??????模塊下面的應(yīng)用名,?default?core-s,--svcname???service?名字,?default?node-exporter-t,--tag???????tag?名字,?default?node-exporter-a,--address???需要注冊到該服務(wù)的地址,多個以“|”分開,,?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

標(biāo)簽:

推薦

財富更多》

動態(tài)更多》

熱點

成人伊人青草久久综合网_91在线视频免费观看_毛片免费视频网站_亚洲欧美日韩在线中文字幕

        日韩一级片网址| 亚洲mv在线观看| 乱中年女人伦av一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 一区二区免费看| 欧美一区二区三区四区久久| 欧美一区二区观看视频| 中文字幕欧美三区| 美日韩黄色大片| 国产日韩欧美高清| 欧美在线观看一二区| 日本一区二区三区四区在线视频| 日本不卡高清视频| 久久久久久日产精品| 一本大道av一区二区在线播放| 久久精品一级爱片| 蜜乳av一区二区| 中文字幕 久热精品 视频在线| 欧美日韩国产中文| 一区二区三区欧美日| 国产不卡视频在线播放| 亚洲主播在线播放| 久久综合九色综合97婷婷| 日韩精品亚洲专区| 国产嫩草影院久久久久| 91.com视频| 亚洲成人av电影| 久久久久国产精品厨房| 欧美日韩精品二区第二页| 一区二区三区在线看| 99天天综合性| 欧美亚洲综合久久| 亚洲欧美日韩电影| 99国产精品一区| 精品视频在线免费| 亚洲一区二区在线观看视频 | 成人爽a毛片一区二区免费| 一区二区三区四区不卡视频| 久久嫩草精品久久久久| 狂野欧美性猛交blacked| 中文字幕一区二区日韩精品绯色| 日韩免费观看高清完整版| 日本亚洲最大的色成网站www| 国产精品你懂的在线| 精品国产一区二区三区久久久蜜月| 日韩一区精品字幕| 1024成人网| 国产亚洲精品资源在线26u| 国内不卡的二区三区中文字幕| 亚洲欧美日韩国产中文在线| 久久亚洲一区二区三区明星换脸 | 精品无人区卡一卡二卡三乱码免费卡 | 午夜精品久久久久久久久| 国产精品天美传媒| 精品国产伦一区二区三区观看体验 | 日韩欧美激情一区| 美女mm1313爽爽久久久蜜臀| 亚洲精品高清视频在线观看| 中日韩免费视频中文字幕| 成人国产精品免费网站| 欧美日本免费一区二区三区| 五月天亚洲精品| 亚洲免费观看高清完整版在线观看熊| 国产亚洲综合在线| 成人免费毛片a| 欧美精品久久99| 麻豆精品在线看| 亚洲狠狠爱一区二区三区| ...中文天堂在线一区| 国产午夜亚洲精品午夜鲁丝片| 日韩精品一区二区三区视频播放| 国产一区二区影院| 欧美伊人精品成人久久综合97| 丝袜亚洲另类欧美综合| 亚洲乱码国产乱码精品精的特点| 自拍偷拍欧美精品| 中文字幕欧美日韩一区| 国产清纯白嫩初高生在线观看91| av资源网一区| 日韩精品一区二区三区在线播放 | 777a∨成人精品桃花网| 久久综合综合久久综合| 色综合久久99| 日韩一区欧美二区| 一本一道久久a久久精品| 五月天久久比比资源色| 亚洲国产美国国产综合一区二区| 亚洲综合男人的天堂| 日韩毛片在线免费观看| 亚洲蜜臀av乱码久久精品| 综合欧美一区二区三区| 亚洲精品美腿丝袜| 一区二区三区日韩在线观看| 一区二区三区中文在线观看| 亚洲日本乱码在线观看| 亚洲激情图片小说视频| 亚洲欧美偷拍卡通变态| 一区二区三区在线播放| 依依成人综合视频| 亚洲国产精品一区二区久久 | 午夜精品久久久久久久久| 亚洲国产成人高清精品| 天堂久久久久va久久久久| 色噜噜狠狠色综合中国| 另类专区欧美蜜桃臀第一页| 精品视频一区三区九区| 国产精品一区三区| 欧美mv日韩mv国产| 91女神在线视频| 国产精品家庭影院| 亚洲欧美精品午睡沙发| 亚洲成国产人片在线观看| 色哟哟一区二区在线观看| 卡一卡二国产精品| 91精品国产色综合久久| 成人动漫一区二区在线| 国产亚洲成年网址在线观看| 日本一区二区三级电影在线观看 | 亚洲国产经典视频| 中文字幕一区二区三区蜜月| 亚洲电影欧美电影有声小说| 色综合久久久网| 国产精品一区二区三区99| 精品国产亚洲一区二区三区在线观看| 久久久精品人体av艺术| 日韩美女视频一区二区| 一区二区三区四区在线免费观看| 日本不卡1234视频| 日韩一级完整毛片| 久久精品亚洲麻豆av一区二区| 亚洲精品日韩一| 91黄色免费版| 成人高清免费观看| 国产精品国产三级国产aⅴ入口 | 亚洲国产精品99久久久久久久久| 中文字幕在线一区| 一区二区三区日韩| 久久草av在线| 2020国产精品| 成人欧美一区二区三区在线播放| 亚洲一区二区三区四区五区黄| 日本精品免费观看高清观看| 国产精品一二三在| 亚洲国产成人一区二区三区| 一区二区三区波多野结衣在线观看| 蜜臀av性久久久久av蜜臀妖精| 欧美一区二区三区免费观看视频| 久久久一区二区三区| 亚洲福利视频三区| 在线不卡中文字幕播放| 国产欧美日韩精品在线| 天堂一区二区在线免费观看| 欧美一级夜夜爽| 国产精品久久久久久久蜜臀 | 色婷婷国产精品综合在线观看| 国产成人亚洲综合色影视| 中文字幕乱码日本亚洲一区二区 | 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久久久久果冻传媒| 日韩高清不卡一区二区三区| 91精品视频网| 亚洲少妇最新在线视频| 国精产品一区一区三区mba视频| 国产色一区二区| 亚洲第一av色| 99re成人在线| 天天综合天天做天天综合| 精品久久国产老人久久综合| 亚洲人成伊人成综合网小说| 国内精品在线播放| 中文字幕一区二区三区色视频| 91黄色激情网站| 久久精品人人做人人爽人人| 婷婷综合另类小说色区| 欧美精品一区二| 午夜精品123| 久久日一线二线三线suv| 视频一区二区欧美| 久久久久久一二三区| 午夜伊人狠狠久久| 久久久久国产精品麻豆ai换脸| 免费xxxx性欧美18vr| 国产三级精品三级| 欧美在线一二三| 国产精品国产精品国产专区不片 | 偷拍一区二区三区四区| 久久久一区二区三区| 亚洲一区二区三区激情| 91原创在线视频| 奇米亚洲午夜久久精品| 国产精品久久影院| 欧美乱妇一区二区三区不卡视频| 亚洲婷婷综合色高清在线| 岛国av在线一区| 丝袜脚交一区二区| 久久精品日产第一区二区三区高清版| 色综合天天在线| 国产精品国产三级国产普通话99| 国产福利精品导航| 亚洲chinese男男1069|