728x90
Consul 클러스터를 구성하는 방법
테스트 환경
호스트 이름 | 서버 아이피 | Type | 비고 |
node211 | 192.168.0.211 | server | |
node212 | 192.168.0.212 | server | |
node213 | 192.168.0.213 | server | |
node214 | 192.168.0.214 | client |
1. 각 서버 노드에 Consul 설치
- consul 설치 : https://sangchul.kr/632
2. Consul 클러스터를 구성
호스트 파일 설정
sudo tee -a /etc/hosts > /dev/null <<EOF
# Consul Cluster
192.168.0.211 node211
192.168.0.212 node212
192.168.0.213 node213
EOF
Consul 설정 파일 작성
consul.hcl 설정(/etc/consul.d/consul.hcl)
- 각 서버 노드에 대해 설정 파일을 작성합니다.
vim /etc/consul.d/consul.hcl
- node211
sudo tee /etc/consul.d/consul.hcl > /dev/null <<EOF
datacenter = "my-dc-1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
ui_config{
enabled = true
}
server = true
bind_addr = "0.0.0.0"
advertise_addr = "192.168.0.211"
bootstrap_expect=3
retry_join = ["node211", "node212", "node213"]
EOF
- node212
sudo tee /etc/consul.d/consul.hcl > /dev/null <<EOF
datacenter = "my-dc-1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
ui_config{
enabled = true
}
server = true
bind_addr = "0.0.0.0"
advertise_addr = "192.168.0.212"
bootstrap_expect=3
retry_join = ["node211", "node212", "node213"]
EOF
- node213
sudo tee /etc/consul.d/consul.hcl > /dev/null <<EOF
datacenter = "my-dc-1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
ui_config{
enabled = true
}
server = true
bind_addr = "0.0.0.0"
advertise_addr = "192.168.0.213"
bootstrap_expect=3
retry_join = ["node211", "node212", "node213"]
EOF
시스템 데몬 리로드
sudo systemctl daemon-reload
Consul 서비스 재시작
sudo systemctl restart consul
Consul 서비스 상태 확인
sudo systemctl status consul --no-pager
Consul 클러스터의 모든 노드의 목록을 확인
consul members
$ consul members
Node Address Status Type Build Protocol DC Partition Segment
node211 192.168.0.211:8301 alive server 1.19.1 2 my-dc-1 default <all>
node212 192.168.0.212:8301 alive server 1.19.1 2 my-dc-1 default <all>
node213 192.168.0.213:8301 alive server 1.19.1 2 my-dc-1 default <all>
Consul 서버 클러스터의 Raft 피어 목록을 확인
consul operator raft list-peers
$ consul operator raft list-peers
Node ID Address State Voter RaftProtocol Commit Index Trails Leader By
node212 3567b6c0-2626-a6c2-f469-45590bcdc505 192.168.0.212:8300 leader true 3 896 -
node211 c806c762-67ef-a229-d369-d970520e7f01 192.168.0.211:8300 follower true 3 896 0 commits
node213 e07dea70-aca9-0821-14f0-6b5725526044 192.168.0.213:8300 follower true 3 896 0 commits
Consul 웹 UI 접속
웹 브라우저에서 http://<서버_IP>:8500으로 접속하여 Consul 웹 UI에 접속할 수 있습니다.
http://192.168.0.211:8500
728x90
Consul 클라이언트를 Consul 서버 클러스터에 조인(join)
1. Consul 클라이언트 설치
필요한 패키지 설치
sudo apt-get install -y unzip
Consul 사용자 및 디렉토리 생성
sudo useradd --system --home /etc/consul.d --shell /bin/false consul
sudo mkdir -p /etc/consul.d /opt/consul
sudo chown -R consul:consul /etc/consul.d
sudo chown -R consul:consul /opt/consul
Consul 바이너리 파일 다운로드 및 설치
cd /usr/local/src
latest_version=$(curl -fsSL https://api.releases.hashicorp.com/v1/releases/consul/latest | grep -oP '"version":\s*"\K[^"]+')
curl -fsSL https://releases.hashicorp.com/consul/${latest_version}/consul_${latest_version}_linux_amd64.zip -o consul.zip
unzip consul.zip
sudo mv consul /usr/local/bin/
sudo chmod +x /usr/local/bin/consul
다운로드된 파일 제거
rm consul.zip
Consul 버전 정보 확인
consul -v
시스템 서비스 파일 작성
sudo tee /usr/lib/systemd/system/consul.service > /dev/null <<EOF
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
Type=notify
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
Consul 클라이언트 서비스 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl --now enable consul
2. Consul 클라이언트 설정 파일
Consul 클라이언트를 설정하기 위해 /etc/consul.d/consul.hcl 파일을 작성합니다.
vim /etc/consul.d/consul.hcl
sudo tee /etc/consul.d/consul.hcl > /dev/null <<EOF
datacenter = "my-dc-1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
bind_addr = "0.0.0.0"
retry_join = ["node211", "node212", "node213"]
EOF
설정 파일 권한 설정
sudo chown consul:consul /etc/consul.d/consul.hcl
sudo chmod 640 /etc/consul.d/consul.hcl
Consul 설정 파일 유효성 검사
sudo consul validate /etc/consul.d/
Consul 서비스 재시작
systemctl restart consul.service
Consul 서비스 상태 확인
systemctl status consul --no-pager
Consul 클러스터의 모든 노드의 목록을 확인
consul members
$ consul members
Node Address Status Type Build Protocol DC Partition Segment
node211 192.168.0.211:8301 alive server 1.19.1 2 my-dc-1 default <all>
node212 192.168.0.212:8301 alive server 1.19.1 2 my-dc-1 default <all>
node213 192.168.0.213:8301 alive server 1.19.1 2 my-dc-1 default <all>
node214 192.168.0.214:8301 alive client 1.19.1 2 my-dc-1 default <default>
Consul 웹 UI 접속
http://192.168.0.211:8500
dns 질의 테스트
도메인 : {Node}.node.consul
dig @127.0.0.1 -p 8600 node214.node.consul
$ dig @127.0.0.1 -p 8600 node214.node.consul
; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> @127.0.0.1 -p 8600 node214.node.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63301
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;node214.node.consul. IN A
;; ANSWER SECTION:
node214.node.consul. 0 IN A 192.168.0.214
;; ADDITIONAL SECTION:
node214.node.consul. 0 IN TXT "consul-version=1.19.1"
node214.node.consul. 0 IN TXT "consul-network-segment="
;; Query time: 3 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1) (UDP)
;; WHEN: Thu Jul 25 13:18:26 KST 2024
;; MSG SIZE rcvd: 134
참고URL
- Vault HA Cluster with Integrated Storage : https://developer.hashicorp.com/vault/tutorials/raft/raft-storage
728x90
'리눅스' 카테고리의 다른 글
[리눅스] td-agent-bit 설치 (0) | 2023.01.27 |
---|---|
[draft] systemctl status 명령어 (0) | 2023.01.27 |
[draft] 우분투에 Consul을 설치하고 설정하는 방법 (0) | 2023.01.26 |
[draft] Vault를 사용하여 SSH 인증을 관리하는 방법 (0) | 2023.01.26 |
[draft] 리눅스에서 파일 디스크립터를 확인하고 설정하는 방법 (0) | 2023.01.25 |