Consuul의 리더 노드에서만 명령 실행
3265 단어 consul
컨suul의 요구와 같지는 않지만, 특정 노드(이번엔 리더)를 어디서든 명령만 점화시키고 싶어 그걸 실현하기 위한 노트다.
지도자의 노드명을 알고 싶다
특정 노드에서 특정 명령을 실행하려면
consul exec
의 노드 옵션을 지정하는 것이 좋습니다.그러나 지도자의 노드명을 한꺼번에 얻지 못하기 때문에 다음과 같은 절차를 통해 얻어야 할 수도 있다.
1. 리더 IP 획득
status API에서 얻다.1
$ curl https://consul.rocks/v1/status/leader
"10.10.10.1:8300"
2. 리더 노드 이름 가져오기Agent Members API에서 리더를 뽑는 멤버를 얻습니다Name2
$ curl https://consul.rocks/v1/agent/members
[
{
"Name": "foobar",
"Addr": "10.10.10.1",
"Port": 8301,
"Tags": {
"bootstrap": "1",
"dc": "dc1",
"port": "8300",
"role": "consul"
},
"Status": 1,
"ProtocolMin": 1,
"ProtocolMax": 2,
"ProtocolCur": 2,
"DelegateMin": 1,
"DelegateMax": 3,
"DelegateCur": 3
}
]
jq로 한번 얻으려면 이런 느낌인가요?$ curl -s localhost:8500/v1/agent/members | jq -r '.[] | if .Addr == "<リーダーIP>" then .Name else empty end
이렇게 하면 지도자의 노드명을 얻을 수 있다.특정 노드에서 특정 명령 실행하기
이것은 consul exec에서
-node
옵션을 지정하면 됩니다.consul exec -node="<リーダーのノード名>" "<お好きなコマンド>"
덤이번 경우
consul exec
서버 노드 전체(ex.consull-server-*)를 와일드카드 문자로 필터링해'수행하는 지령 내에서 자신이 리더인지 아닌지','자신이 리더일 때만 실행'등의 수법이 컨sul에 비교된다.또 다른 좋은 방법이 있으면 알려주세요
왜 노드 이름을 붙이지 않았을까... ↩
왜 필터가 안 되지... ↩
Reference
이 문제에 관하여(Consuul의 리더 노드에서만 명령 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toritori0318/items/fd10abf1199f4d3c1abb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)