999精品国内在线观看视频-日韩 中文字幕 在线视频-伊人久久中文字幕在线-少妇熟女激情一区二区三区-久久精品国产亚洲av水果派-91成人在线视频网-91久久久在线免费-国产综合一区二区三区-一区,二区av在线,亚洲天堂中文字幕91,欧美偷拍亚洲变态另类,国产精品久久久久久久hd

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

來(lái)源:?jiǎn)袅▎袅?/span>

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


(資料圖片)

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

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

#!/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存儲(chǔ)在CONSUL_TOKEN變量中,并在curl請(qǐng)求中使用--header "X-Consul-Token: ${CONSUL_TOKEN}"來(lái)添加它。

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

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

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

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

基于這個(gè)幾個(gè)點(diǎn), 寫(xiě)入下面實(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)識(shí),?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???需要注冊(cè)到該服務(wù)的地址,多個(gè)以“|”分開(kāi),,?eg?1.1.1.1|2.2.2.2?default?''?[Require],必須提供-i,--interface??需要注冊(cè)的端口?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)

日韩国产欧美成人-日韩电影av手机在线观看-伊人中文字幕亚洲天堂-亚州av中文字幕 | 日韩国产毛片在线-av资源 中文字幕-欧美日韩制服丝袜在线-亚洲精品乱码久久久久久97 | 蜜臀av成人久久久-成人av国产在线观看网站-亚洲妇女一区二区三区-91免费看精美蜜臀 | 蜜臀av性久久久久av蜜-岛国人妻中文字幕-国产又大又长又粗又猛又爽又黄-久久久久久人精品免费看 久久久久久欧美精品-欧美日韩一区二区三区高清视频-日韩爱爱免费网-超碰在线成人免费人妻 | 久久人妻少妇嫩草av蜜桃-色婷婷国产精品综合网-久久久精品视频3-巨乳熟女少妇操色综合 | 欧美日韩激情伦理故事不卡一区二区-日韩欧美国产视频一区二区在线观看-国产成人精品激情视频-免费色婷婷在线视频 | 国产成人精品网站在线观看-久久精品喷水少妇-97人妻人人爱人人澡人人爽-久久亚洲国产精品五月 | 99久久生活综合精品-国产日韩欧美一区二区综合-99久久免费精品国产男女性高-日本少妇人妻一区 | 精品人妻一区二区资源-欧美激情日韩激情亚洲最大-国产日韩欧美在线播放不卡-2019久久久高清日本道 | 久久热在线观看免费视频-国产精品99久久久久久夜夜嗨-欧美精品国产白浆久久久久-777色婷婷av一区二区三99 | 婷婷日日夜夜视频-蜜臀在线看一区二区-99久久久久久综合网-中文字幕日韩女性爱 | 日韩人妻一区二区三区在线88-国产欧美精品第一页-欧美黑人性猛交xxxxx-日韩欧美片免费观看 | 欧美最猛黑人黑人猛交-久久久久久精品在线看免费看-日韩一区av福利在线-欧美日韩亚洲欧美h | 国产黄色小视频看看-久久大久久就久久精品欧美-日韩精品视频在线免费观看首页-国产麻豆精品视频网 | 91久久国产综合久久久久蜜月-91精品国产高久久久久久69-热re99久久6国精品免费地址-日韩av精品夜夜网站 | 久久国产中文字幕有码-91free香蕉久久蜜桃-不卡一区二区三区免费精品视频-九月婷婷精品综合网 | 成人精品 一区二区三区-免费在线观看中文字幕av-日韩精品国语对白欧美-麻豆精品视频在线观看 | 日本五十路熟女xx-久久99人妻免费精品一区-91精品久久久久久久亚洲国产-中文字幕av在线人妻 | 99精产国品一二三产品香蕉-日韩熟女怡红院-久久视频在线视频观看 99-精品啪啪啪啪啪啪啪 | 伊人婷婷久久国产精品-日韩激情视频123-丰满人妻av 1区二区-日韩毛片3m8u | 99精品国产综合久久久久五月天-久久久熟女熟妇-日韩免费在线观看中文字幕-69国产精品久久久久久人 | 日韩欧美一级片一区二区-极品一区二区视频在线观看-成人欧美日韩一区二区-丁香丝袜激情妞 | 亚洲人成电影免费播放-2020国内精品久久久久精免费-日韩一区二区三区乱码-99久久久精品久久久久久 | 东京热久久免费av-h视频在线观看亚洲-国产人妻熟妇一区二区-亚洲热情av中文字幕 | 中文字幕 日韩精品 人妻-日韩欧美人妻中文字幕在线-久久好看的中文字幕-亚洲国产成人精品女人久久久孕妇 | 2019年中文字幕在线-久久久久久精品91-丰满人妻一区二区三区精品av-天堂在线 中文字幕 | 国产二区视频免费在线观看-99麻豆国产精品-蜜臀久久综合一区二区三区-久久久精品爱爱 | 国产精品成人九色蝌蚪-欧美日韩无删减-精品一区二区啪啪啪-九九久久热这里只有精品 | 国产美女av一区二区三区-国产欧美一区二区在线-中文乱码欧美中文字幕2020-天天舔天天日天天搞 | 麻豆玩弄japan白嫩少妇hd-91旷世极品尤物 系列-日韩黄色中文字幕电影网站-国产成人亚洲综合亚洲 久久久熟妇色综合激情-天天爽天天操天天做天天干-91麻豆精品国产理论片在线观看-久久热这里都是精品 | 丰满年轻岳中文字幕一区二区-久久免费视频观看二-人人插人人爽人人射-91精品国产色综合久久不粉嫩 | 999久久久999久久久-国产av天堂一区二区三区-亚洲伊人第一视频一区-亚洲一区二区av手机在线观看 久久国产更新懂色蜜臀-亚洲精品国产成人精品网站-欧美一区两区三区久久-人人妻人人玩操人人 | 国产亚洲精品久久久久久无几年桃-超碰国产情侣自拍-国产精品 亚洲欧洲-91麻豆国产最新在线观看 | 国产韩国日本一区二区-亚洲激情日韩av-亚洲 制服 人妻 91-欧美性久久久久久久久久久精品 | 久久re这里只有精品99-岛国激情av一区二区三区-中文字幕熟女人妻丝袜-超碰亚洲精品91 | 国产乱码有码一区二区三区-久久国产亚洲精品av麻豆-99热精品国产在线-中文字幕乱交免费视频 | 久久久久久久久久久国产-91狠狠综合久久久久久久-巨乳人妻中文字幕视频-99精品国产99久久久久久福利 | 日韩欧美视频一区二区三区-国产一区二区三区免费在线电影-五月婷婷精品在线-青青久久精品国产免费看青青草 | 久久99九九热最新-国产av 在线视频-久久精品国产成人a∨-中文字幕乱码熟女 中 | 欧美激情区日韩一区二区三区-日韩欧美区一区二区三-久久嗯啊不要视频-欧美黑人巨大黑人猛交中文 欧美色欧美亚洲另类二区不卡-国产免费自拍色视频-日本妻子中文字幕-人妻精品久久久久中文字幕一 | 久久久极品一区二区-99精品人妻一区二区三蜜桃-亚洲av成人波多野一区二区三区-中文字幕人妻中出视频 |