日韩少妇无删减的电影在线视频观看-久久久伊人中文字幕-91成人在线视频观看-欧美日韩一区二区三区四区五区-激情五月天网站视频-欧美另类丰满熟妇xx-999re这里只有国产精品-国产蜜臀福利久久久av-人妻中文字幕av精,国产成人精品在线观看视频,69精品人妻久久久久久久,欧美日韩日欧美日韩中

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

來源:嗶哩嗶哩

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


(資料圖片)

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

拿到這個(gè)需求,我第一時(shí)間想到是用 curl 調(diào)用 Consul API 實(shí)現(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"

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

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

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

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

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

基于這個(gè)幾個(gè)點(diǎn), 寫入下面實(shí)現(xiàn)腳本。

register 和 deregister實(shí)現(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á)式檢驗(yàn)?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?$@

這個(gè)腳本首先定義了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??項(xiàng)目名字,?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ù)的地址,多個(gè)以“|”分開,,?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)簽:

推薦

財(cái)富更多》

動(dòng)態(tài)更多》

熱點(diǎn)

插逼综合-91丨九色丨老熟女富婆-jizzjizz日本jizzjizz和黑人-日本人牲交BBBXXXX | 日亚洲美女小秘书影视大全日本片-自拍偷拍56-www.wuye-波多野吉衣黑人 | 欧美H版-午夜久久久久久-美女坐爰A-320lu刺激自拍视频 | 寂寞人妻友田真希被中出-免費成人視頻-XNXXCOM-中国成人精品-鸥州顶级黄片段试看 | 林熙蕾的胸被揉到高潮-黑人做爰猛烈叫床视频-gogogo国语高清完整-日本精品XXXXX | 亚洲初撮六十路老熟女-欧日韩黑人一级毛-h漫网址大全-美女自卫黄网 | 亚洲黄色录像-国产乱码精品一品二品 chinese老太交granny-寸止按摩.av-午夜福利视频 | 老熟女21p-中文字幕欧美日韩久久-揉捏奶60分钟无遮挡观看-成人A视频一区二区三区水多多 | 国产91人妻绿帽黑人-美女自慰网址-欧美丰满熟妇BBBBBB禁忌-扶她射成人 | 高清全集免费播放 久久国产精品免费观看-大尺度做爰呻吟口述细节视频-熟女少妇av-亚洲av无码一区二区三区在线播放 | Chinese高潮潮喷叫床-亚洲色网淫色网-黑人操日本女人网站-欲婷婷影院 | EEUSS影院www影院口人-www.色人阁.com-美女裸体秘网站鸭子-白洁老师国产麻豆片 | 国产精品裸女-极品人妻波多野结衣瑜伽裤-黑人解禁-六十路老熟女交尾 | 国产在线观看精品一区二区三区91-情趣私密视频图片在线观看网站免费-女英雄一区二区三区-HD手机免费观看完整 | 国外超碰-真人120秒自慰免费-国产91精选在线观看网站-AV粉嫩 | 91 丨牛牛丨熟女-国产亚洲美女自慰-胸大又黄的美女网站-加勒比一本道偷拍 | 大xj香蕉伊人青青草-成熟肉体和淫技全部-中文字幕亚洲有码-年轻老师裸体自慰 | 台湾伊人综合在线-黑人レイプ早川濑里奈-沟沟美女课体免费视频-欧美成人大片在线播放 | 日日躁天天射爽-东京干男人都知道的-欧美性爱黑人大屌天天干-痴汉网站 | 777777777亚洲大胆妇女-狼人综合干网-国产精品77777竹菊影视-亚色九九九视频 | 自拍偷拍视频43-黄片hhh-狠牛影视在线一区-久久精品视频4242 | gogogo高清在线观看视频-7天前JAV污网站 Japanese打屁股惩罚花蒂 一级老女人强奸毛片 美女一区二区三-爆艹萝莉-大东北老熟女 | 操操操人人乐人人干-gogogo手机免费高清-黑人初解禁薍伦黑人巨大在线观看-人妻av中字 中文字幕 - 精工厂 | 成人在线免费观看小视频-亚洲乱轮-久久黄色一级片-那里能看到国产顶级玛雅性爱a片 | 北条麻妃丝袜诱惑-1204你懂人妻-麻豆av无码精品一区二区-精品一区二区三区自拍图片区 | 亚洲精品国偷自产-牛夜精品久久久久久久99黑人-高清全集免费观看 在线观看一级毛片免费-国产永久免费看黄网站 | 中文字幕av无码专区-日韩欧美中文字幕黑人美女电影在线-xxxxxwww日本人-久久久久久久久99 | 动画片星星-中文字幕一本在线无卡-蓝光免费在线观看 首页亚洲欧美制服丝腿-搞逼中文字幕 | 欧美最猛黑人xxxx黑人猛交-china性旺盛的老女人-最新四色米奇影视777在线看-日韩欧美p片内射在线海角一 | 人妻少妇精品专区性色av-国产精品无码专区第1页-粉嫩videos好紧-看看东北老区老熟女肥臀搡逼激情 | 夜夜躁日日躁狠狠躁综合网-天堂岛国av无码免费无禁网站- BD国语完整版观看 精品福利视频免费一区二区-操穴视频日本 | 高清完整在线观看 视频一区免费-色情故事ヘンリー冢本-精品一区二区三区欧美老妇喷浆-88无码 | 本庄優花AV101无码播放-一本加勒比hezyo无码人妻-国产亚洲欧美在线专区-水菜丽の黑人在线播放 | 中文字幕av无码专区-日韩欧美中文字幕黑人美女电影在线-xxxxxwww日本人-久久久久久久久99 | 女生自慰片-富婆让男鸭舔b-丝袜美女洗澡让我进来随便摸-日本XXX动作 | 1000部男女免费拍拍拍无遮挡-全程粗话对白视频videos-伊人大香蕉狼人干伊网黄色小说-日本美女变态坐脸调教网站大全 | 怡红院一毛在线-骚穴黑白配-DVD免费电视剧 欧美日韩国产免费一区二区三区-中国熟妇性free国语 | 破了亲妺妺的处免费视频国产-精品中文字幕一区二区-欧美日韩成人一级-老熟妇女15p | 久久精品有码网站-eeuss鲁片一区二区三区-熟女中出在线视频-91在线精品国产丝袜超清 | gogogo高清正版免费-91精选在线观看-美女视频黄片-日本禁断介护久久久网站 | 老熟女21p-中文字幕欧美日韩久久-揉捏奶60分钟无遮挡观看-成人A视频一区二区三区水多多 |