日韩少妇无删减的电影在线视频观看-久久久伊人中文字幕-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亚洲欧美激情-国产无遮挡又黄又爽动态图 | 香蕉人妻av久久久久天天-手机在线看片 精品亚洲AV高清一区二区三河南-好色女人久久久-东北熟妇自慰流白浆 | 超清最新电影在线观看 蜻蜓点水服务是指什么意思-日日爱爱视频-亚洲Aⅴ日韩无码黄片-风间由美777久久久精品 | 六十路七十路超熟无码-2019最新免费的一区二区-强行迷奷系列A片-中国女人真人真曰批 | 熟女人妻少妇-一本一道加勒比北岛玲-99国产精品一区-赵丽颖色情A级毛片在线 | 国产剧高清完整版播放 提供优质观影体验下载服务-紧缚人妻の乱绳地狱-大香蕉伊人影院-日韩去干网 | 女上位打桩榨精在线观看-高潮毛片无遮挡免费高清风月直播-尹人成人-涩综合婷婷久久涩 | 四虎直播www永久免费- 高清韩国电影在线观看-97干电影-亮人妻被黑人久久精品夜夜嗨 | 无码超乳爆乳中文字幕久久-亚洲国产一级a一片久久免费-人人乐AV-99超碰cao进入离开 | AV淫淫日日AVAv-cao熟女-狠狠干第二页-欧美六月七月丁香缴情 | 日韩第三页-国产精品嫩草久久久久-高H AV-精品少妇无码αv无码专区 | 国产剧完整在线观看 av无码久久久久不卡蜜桃-亚洲男人天堂-蜜桃17c在线-午夜理理伦a级毛片中文字幕 | 久久九九爱爱-四虎影院中文字幕-国产精品免费视频一区二区 -91熟女丨91老女人 | av天堂影音中文字幕-剧情片在线播放观看 日韩中文字幕一区二区三区-色射色色-一本色道HEZYO无码专区 | 自慰100部免费A片-孕妇内谢XXXXX在线HD-女性向边被躁边讲荤话-久久精品国产福利国产秒 | 我被闺蜜送进了sm俱乐部-六十路の熟女浓密-日韩欧美高中绯色网-欧美日韩国产一区二区三区地区 | 国产浓毛大泬熟妇视频-老师下面太紧拔不出来-欧美伊人大香蕉-加勒比午夜在线 | gogogo高清正版免费-91精选在线观看-美女视频黄片-日本禁断介护久久久网站 | 国产剧完整在线观看 av无码久久久久不卡蜜桃-亚洲男人天堂-蜜桃17c在线-午夜理理伦a级毛片中文字幕 | 久久久久-胸好大用力深一点-黄色xxxxxxxxxxxxll-极品色av影院 | 黑人与女优爱爱-老男人色网-欧美日处影院-中文无码熟妇人妻av在线 | 超多超嫩国产-湿中文字幕日韩-China张开双腿露黑毛-播放月经期一级A片 | 北条麻妃成人-五十路老熟女码A片-大黄操逼网站-亚洲欧美综合国产精品一区 | 操逼啊啊-国产久久成年人免费视频-青青草一本之道在线观看-直接进体内免费视频 | 天美麻花果冻一区二区三区-亚洲一区无码中字-视频中文字幕第一页-美女干逼 | 各种妇女撒尿mm毛免费网站-夏晴子黑人2v1-PGD-736誘惑女教师痴女 在线-名器妓女~NP | 裤袜 欧美 free-wwwwwsss国产精品在线观看-被公侵犯肉体中文字幕一区二区-紧身裙女教师三上悠亚红杏 | 精品人妻一区二区三区久久迅雷-日本多毛胖熟妇-高潮喷水的网站 日韩欧美五区 -国产美女自卫网站 北条麻妃中文magnet-91干逼-中国精品露脸-风间由美乳巨码无A片在观看 | 黑森林毛茸茸熟女人妻-女人自慰网址-精品国产无套在线观看-日本睡熟迷奷系列A片 | 黑人videos巨大hd粗暴的剧情简介-人妻熟妇91Porn 九色-大香蕉中文第三页-中文字幕150页 | 欧美黑粗硬大臊腚视频-国产精品77777竹菊影视小说-东北探花专业干老外-黑人精品--一区二区 | Chinese高潮潮喷叫床-亚洲色网淫色网-黑人操日本女人网站-欲婷婷影院 | 国产美女裸体自慰-高清免费在线观看-92看看影院-越南美女操屄视频免费看 | 老熟妇山口珠理77AV-国产专区亚洲欧美另类在线观看-忘穿内裤的人妻被中出-成人精品高清视频 | 亚洲国产日韩a线视频-久久最新-国产又色又爽又刺激在线播放-艳妇臀荡乳欲伦岳交换在线看 | 久久久国产影视 久久香蕉综合-国模妙妙超大尺度啪啪人体-国产成年无码aⅴ片 右手影院亚洲欧美-美女高潮喷水白浆失禁 | 久久好色-美女下体打码-精品无码αv一区二区三区-国产人成高清在线视频99最全资源 DVD超清免费观看 | 老头大战三个农妇对白Av-中文字幕日韩片无码 日韩中文AV-正在播放熟妇大叫受不了-四虎影视精品 | 一个色综av-中国国产精品动漫性爱网-欧美96在线 | 欧-亚洲中文精品人人永久免费 | 台湾十八成人中文网-一本到视频免费-被C到喷水嗯H厨房交换视频-欧美色图片区 | 久久av老女人综合网-东北老女人乱伦-浓毛大泬耻毛videos-和女人搞鸡国产一起草视频网站 |