Consul 클러스터 설정하기 (1)

Linux에서 Consul 클러스터를 설정하는 방법에 대한 소개.

2018. 10. 31.

Consul 설치

Consul은 패키지 설치를 지원하지 않습니다. Download Consul 페이지에서 자신의 OS 환경에 맞는 버전을 고른 후, 아래와 같은 과정으로 설치를 진행합니다.

# 바이너리를 내려받습니다.
$ wget https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip

# 압축을 풀고, 바이너리를 옮깁니다.
$ unzip consul_1.3.0_linux_amd64.zip
$ sudo mv consul /usr/bin

# 설치가 잘 되었는지 확인합니다.
$ consul version

Cluster 구성

서버 노드에서

마스터 노드를 실행하는 명령어는 다음과 같습니다.

$ sudo mkdir /etc/consul.d
$ nohup consul agent -server -bootstrap-expect=1 \
    -datacenter=dc1 -node=master -bind=<ip_address_1> -recursor 1.1.1.1 \
    -data-dir=/tmp/consul -config-dir=/etc/consul.d -ui >> /var/log/consul.log &

현재 클러스터에는 마스터 노드만 존재합니다. 이는 다음 명령어로 확인할 수 있습니다.

$ consul members
Node    Address               Status  Type    Build  Protocol  DC   Segment
master  <ip_address_1>:8301   alive   server  1.3.0  2         dc1  <all>

클라이언트 노드에서

이번에는 다른 서버에서 노드를 추가한 후, 앞서 띄운 서버와 연결하여 클러스터를 구성합니다.

# 에이전트를 실행합니다.
$ sudo mkdir /etc/consul.d
$ consul agent -datacenter=dc1 -node=client01 -bind=<ip_address_2> -recursor 1.1.1.1 \
    -data-dir=/tmp/consul -config-dir=/etc/consul.d >> /var/log/consul.log &

# 서버 에이전트와 연결합니다.
$ consul join ip_address_1
Successfully joined cluster by contacting 1 nodes.

# 연결이 잘 되었는지 확인합니다.
$ consul members
Node      Address               Status  Type    Build  Protocol  DC   Segment
master    <ip_address_1>:8301   alive   server  1.3.0  2         dc1  <all>
client01  <ip_address_2>:8301   alive   client  1.3.0  2         dc1  <default>

다음 포스트 : DNS 포워딩

Consul은 자체 DNS를 이용한 각 노드, 또는 서비스 간의 접속을 지원합니다. 예를 들어 모든 consul 노드에서는 master.node.consul 도메인으로 마스터 노드에 접근할 수 있습니다.

Consul의 DNS Resolver는 8600번 포트로 실행됩니다.

$ dig @127.0.0.1 -p 8600 master.node.consul

...
;; QUESTION SECTION:
;master.node.consul.        IN    A

;; ANSWER SECTION:
master.node.consul.    0    IN    A    ip_address_1
...

그러나 대부분의 서비스는 53번 포트를 이용해 DNS를 쿼리합니다. 따라서 아래와 같이 기본 설정으로 DNS를 쿼리하면 IP 주소를 찾지 못합니다.

$ dig master.node.consul

...
;; QUESTION SECTION:
;master.node.consul.        IN    A

;; AUTHORITY SECTION:
.            60    IN    SOA      ...
...

다음 포스트에서는 DNS 포워딩 기능을 이용하여, 로컬호스트의 8600번 포트를 기본 DNS Resovler로 설정하는 방법에 대해 소개하겠습니다.

크리에이티브 커먼즈 라이선스

이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

© 2011 - 2020 Do Hoerin, LYnLab