요즘 인프라 등 환경은 정말 빠르게 변경되고 있음 그 대표적인 예가 마이크로 서비스인데, 마이크로 서비스는 운영 효율 향상, 민첩성 향상, 간편한 개별 서비스 테스트 등의 장점이 있음.
마이크로 서비스 고려사항
이런 마이크로 서비스에는 다양한 고려사항이 있음
우선 인프라가 영구적이지 않기 때문에(컨테이너 기반으로 수정사항 발생 시 컨테이너가 내려가고 새로운 컨테이너가 다시 뜨는 등 의 이유로) IP가 고정되지 않고 동적으로 변경된다는 점
단위가 마이크로해지기 때문에 통신 설정이 복잡해지고 필연적으로 네트워크 토폴로지가 복잡해진다는 점 등의 문제점들이 있음
Consul의 지향점
Consul은 다양한 서비스 검색과 등록을 위한 통일된 메커니즘을 제공함
뿐만아니라 Health Checks와 서비스 검색 연동 기능도 제공
#!/bin/sh
echo "Starting HashiCorp Consul in Server Mode..."
sleep 1
echo "CMD: nohup consul agent -config-dir=/consul/config > /consul.out &"
nohup consul agent -config-dir=/consul/config > /consul.out &
echo "Log output will appear in consul.out..."
sleep 1
echo "Consul server startup complete."
$ consul members
Node Address Status Type Build Protocol DC Partition Segment
ConsulServer0 10.2.59.207:8301 alive server 1.15.2 2 dc1 default <all>
ConsulServer1 10.2.4.127:8301 alive server 1.15.2 2 dc1 default <all>
ConsulServer2 10.2.49.119:8301 alive server 1.15.2 2 dc1 default <all>
#누가 리더인지 확인하기
$ consul operator raft list-peers
Node ID Address State Voter RaftProtocol
ConsulServer2 046ae78b-31d0-6760-7a79-5747bf9d400b 10.2.49.119:8300 follower true 3
ConsulServer0 16a6edcc-68bb-ab1c-ca53-8a807d8642f9 10.2.59.207:8300 leader true 3
ConsulServer1 98bf55ed-ca07-163d-8542-06998104843a 10.2.4.127:8300 follower true 3
consul monitor 명령어 사용하면
동일 내용 UI에서 확인 가능
NODE > Agent 가설치된 오브젝트
리더에는 별이 있음
curl 명령어로
curl -s http://127.0.0.1:8500/v1/agent/self | jq