国产色婷婷国产综合在线理论片a_欧美性受xxxx黑人xyx_国产精品成人在线观看_影音先锋欧美在线资源_国产91在线播放_久久久久亚洲精品成人网小说_成人444kkkk在线观看_天堂va蜜桃一区二区三区漫画版_欧美大片在线观看_美女网站视频久久

每日觀點: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

標簽:

推薦

財富更多》

動態更多》

熱點

国产色婷婷国产综合在线理论片a_欧美性受xxxx黑人xyx_国产精品成人在线观看_影音先锋欧美在线资源_国产91在线播放_久久久久亚洲精品成人网小说_成人444kkkk在线观看_天堂va蜜桃一区二区三区漫画版_欧美大片在线观看_美女网站视频久久
欧美日韩在线观看一区二区| 亚洲一区二区偷拍精品| 亚洲一区影音先锋| 91美女蜜桃在线| 亚洲免费在线视频一区 二区| 91伊人久久大香线蕉| 日韩伦理av电影| 欧美日韩在线综合| 激情欧美一区二区三区在线观看| 国产欧美日韩亚州综合| 色综合av在线| 亚洲成人av中文| 久久午夜色播影院免费高清| 99国产一区二区三精品乱码| 亚洲不卡av一区二区三区| 精品国产一区二区三区久久影院| va亚洲va日韩不卡在线观看| 水野朝阳av一区二区三区| www一区二区| 欧美做爰猛烈大尺度电影无法无天| 丝袜美腿亚洲一区二区图片| 久久综合一区二区| 欧美日韩国产一二三| 国产毛片精品视频| 亚洲一区二区三区免费视频| 国产欧美在线观看一区| 欧美日韩在线直播| 麻豆精品在线看| 国产河南妇女毛片精品久久久| 日韩欧美亚洲国产精品字幕久久久| 岛国精品在线播放| 午夜精品123| 欧美激情在线观看视频免费| 欧美美女一区二区三区| 丁香激情综合国产| 亚洲午夜电影在线观看| 国产色91在线| 91精品欧美综合在线观看最新| 亚洲一区二区四区蜜桃| 欧美一区二区二区| 91偷拍与自偷拍精品| 精品一区二区av| 婷婷激情综合网| 一二三区精品视频| 日韩一区日韩二区| 国产性色一区二区| 欧美成人三级电影在线| 欧美电影在哪看比较好| 在线视频综合导航| 激情亚洲综合在线| 五月婷婷久久综合| 亚洲与欧洲av电影| 亚洲一区二区不卡免费| 中文字幕日韩欧美一区二区三区| 精品国产凹凸成av人导航| 在线成人午夜影院| 欧美高清性hdvideosex| 欧美四级电影网| 欧美三级一区二区| 欧美视频三区在线播放| 在线观看亚洲成人| 欧美日韩和欧美的一区二区| 欧美日韩mp4| 91精品国产丝袜白色高跟鞋| 欧美绝品在线观看成人午夜影视| 91黄色小视频| 欧美人妖巨大在线| 日韩欧美国产一区在线观看| 欧美一区二区福利视频| 337p日本欧洲亚洲大胆精品| 国产日本欧洲亚洲| 中文字幕av一区二区三区高| 国产精品美女一区二区| 亚洲精品乱码久久久久久久久| 一区二区三区中文字幕| 天堂午夜影视日韩欧美一区二区| 奇米色一区二区| 国产成人免费在线观看不卡| 91视频xxxx| 欧美一区二区三区在线电影| 久久久久久久精| 亚洲一区影音先锋| 国内精品久久久久影院一蜜桃| 懂色av一区二区三区免费观看 | 欧美一区二区三区免费大片 | 国产精品久久午夜夜伦鲁鲁| 亚洲欧美色一区| 视频一区二区三区中文字幕| 精品在线免费视频| 色婷婷综合久久久久中文一区二区 | 欧美激情综合五月色丁香小说| 亚洲欧洲精品天堂一级| 同产精品九九九| 国产aⅴ综合色| 在线观看www91| 国产日韩欧美不卡| 性做久久久久久免费观看| 高清beeg欧美| 777午夜精品免费视频| 国产精品伦理在线| 日韩av午夜在线观看| www.色精品| 久久综合一区二区| 日韩福利电影在线| 在线视频综合导航| 国产精品天美传媒沈樵| 免费久久99精品国产| 色丁香久综合在线久综合在线观看| 日韩欧美中文字幕公布| 亚洲一区免费在线观看| 不卡的av网站| 国产午夜精品福利| 精品在线免费观看| 欧美欧美欧美欧美首页| 亚洲精品国产精华液| 懂色av中文字幕一区二区三区| 欧美成人r级一区二区三区| 亚洲小少妇裸体bbw| 91极品美女在线| 亚洲欧美日韩电影| 不卡影院免费观看| 国产精品无人区| 国产激情视频一区二区三区欧美| 精品盗摄一区二区三区| 麻豆久久一区二区| 欧美白人最猛性xxxxx69交| 日本va欧美va瓶| 欧美一区二区三区视频免费| 日韩av二区在线播放| 91麻豆精品国产91久久久更新时间| 天堂va蜜桃一区二区三区漫画版 | 欧美精品v日韩精品v韩国精品v| 亚洲一区二区三区国产| 色噜噜狠狠成人中文综合| 国产精品九色蝌蚪自拍| 成人国产一区二区三区精品| 国产农村妇女精品| 丁香一区二区三区| 日本一二三不卡| 成人午夜av电影| 中文字幕佐山爱一区二区免费| a亚洲天堂av| 亚洲美女在线国产| 亚洲成人精品影院| 亚洲一级二级在线| 99精品久久久久久| 午夜精品免费在线观看| 日韩欧美一区二区三区在线| 精久久久久久久久久久| 精品国产成人系列| 菠萝蜜视频在线观看一区| 亚洲日本va午夜在线电影| 91小视频在线免费看| 亚洲国产精品久久久久婷婷884| 欧美一级黄色大片| voyeur盗摄精品| 免费精品视频最新在线| 国产精品天美传媒| 在线电影国产精品| 成人午夜视频在线观看| 亚洲国产另类av| 国产亚洲欧美一级| 欧美久久久影院| 高清在线成人网| 五月婷婷激情综合| 国产精品久久久久久久久久久免费看| 欧美亚洲一区三区| 国产成人亚洲综合a∨婷婷图片| 亚洲精品v日韩精品| 欧美大肚乱孕交hd孕妇| 色域天天综合网| 久久国产精品区| 亚洲一区二区三区在线看| 久久综合久久99| 在线电影一区二区三区| 99这里只有久久精品视频| 免费在线成人网| 亚洲自拍偷拍网站| 国产亚洲欧美中文| 制服丝袜中文字幕亚洲| 99免费精品视频| 精品一区二区三区视频| 亚洲va欧美va国产va天堂影院| 中文字幕av在线一区二区三区| 欧美成人综合网站| 欧美日韩成人综合在线一区二区| 成人精品国产免费网站| 国产在线精品国自产拍免费| 日韩有码一区二区三区| 一区二区三区中文字幕精品精品| 国产午夜亚洲精品不卡| 精品国产免费久久 | 成人午夜激情片| 美女www一区二区| 亚洲国产精品自拍| 亚洲黄色免费网站| 综合中文字幕亚洲| 国产精品久久久久久久久免费相片| 精品国产一区二区亚洲人成毛片 | 免费成人深夜小野草|