반응형
Consul 클러스터를 구성하는 방법
테스트 환경
호스트 이름 | 서버 아이피 | Type | 비고 |
node111 | 192.168.10.111 | server | |
node112 | 192.168.10.112 | server | |
node113 | 192.168.10.113 | server | |
haproxy100 | 192.168.10.110 | client |
1. 각 서버 노드에 Consul 설치
- consul 설치 : https://scbyun.com/1490
2. Consul 클러스터를 구성
호스트 파일 설정
sudo tee -a /etc/hosts > /dev/null <<EOF
# Consul Cluster
192.168.10.111 node111
192.168.10.112 node112
192.168.10.113 node113
EOF
Consul 설정 파일 작성
consul.hcl 설정(/etc/consul.d/consul.hcl)
- 각 서버 노드에 대해 설정 파일을 작성합니다.
vim /etc/consul.d/consul.hcl
- node111
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.10.111"
bootstrap_expect=3
retry_join = ["node111", "node112", "node113"]
EOF
- node112
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.10.112"
bootstrap_expect=3
retry_join = ["node111", "node112", "node113"]
EOF
- node113
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.10.113"
bootstrap_expect=3
retry_join = ["node111", "node112", "node113"]
EOF
시스템 데몬 리로드
sudo systemctl daemon-reload
Consul 서비스 재시작
sudo systemctl restart consul
Consul 서비스 상태 확인
sudo systemctl status consul --no-pager -l
Consul 클러스터의 모든 노드의 목록을 확인
consul members
$ consul members
Node Address Status Type Build Protocol DC Partition Segment
node111 192.168.10.111:8301 alive server 1.19.1 2 my-dc-1 default <all>
node112 192.168.10.112:8301 alive server 1.19.1 2 my-dc-1 default <all>
node113 192.168.10.113: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
node111 ac6915fb-fa1c-3dc9-961f-286d234bd49e 192.168.10.111:8300 leader true 3 30 -
node112 f994b473-29a1-5458-386b-2b1aa932717e 192.168.10.112:8300 follower true 3 30 0 commits
node113 91cce854-64eb-3540-3774-bf3ffebe003e 192.168.10.113:8300 follower true 3 30 0 commits
Consul 웹 UI 접속
웹 브라우저에서 http://<서버_IP>:8500으로 접속하여 Consul 웹 UI에 접속할 수 있습니다.
http://192.168.10.111: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
$ consul -v
Consul v1.19.1
Revision 9f62fb41
Build Date 2024-07-11T14:47:27Z
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
시스템 서비스 파일 작성
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 = "192.168.10.110"
retry_join = ["node111", "node112", "node113"]
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
node111 192.168.10.111:8301 alive server 1.19.1 2 my-dc-1 default <all>
node112 192.168.10.112:8301 alive server 1.19.1 2 my-dc-1 default <all>
node113 192.168.10.113:8301 alive server 1.19.1 2 my-dc-1 default <all>
haproxy100 192.168.10.110:8301 alive client 1.19.1 2 my-dc-1 default <default>
Consul 웹 UI 접속
http://192.168.10.111:8500
dns 질의 테스트
도메인 : {Node}.node.consul
dig @127.0.0.1 -p 8600 haproxy100.node.consul
$ dig @127.0.0.1 -p 8600 haproxy100.node.consul
; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> @127.0.0.1 -p 8600 haproxy100.node.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47732
;; 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:
;haproxy100.node.consul. IN A
;; ANSWER SECTION:
haproxy100.node.consul. 0 IN A 192.168.10.110
;; ADDITIONAL SECTION:
haproxy100.node.consul. 0 IN TXT "consul-version=1.19.1"
haproxy100.node.consul. 0 IN TXT "consul-network-segment="
;; Query time: 4 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1) (UDP)
;; WHEN: Thu Jul 25 20:07:33 KST 2024
;; MSG SIZE rcvd: 137
참고URL
- Vault HA Cluster with Integrated Storage : https://developer.hashicorp.com/vault/tutorials/raft/raft-storage
728x90
반응형
'리눅스' 카테고리의 다른 글
[리눅스] consul 서비스 등록 (0) | 2023.01.27 |
---|---|
systemctl status 명령어 (0) | 2023.01.27 |
우분투에 Consul을 설치하고 설정하는 방법 (0) | 2023.01.26 |
docker nettools (0) | 2023.01.25 |
SSH 인증을 위한 SSH 인증서를 구성하고 설정하는 방법 (0) | 2023.01.20 |