반응형
    
    
    
  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
EOFConsul 설정 파일 작성
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-reloadConsul 서비스 재시작
sudo systemctl restart consulConsul 서비스 상태 확인
sudo systemctl status consul --no-pager -lConsul 클러스터의 모든 노드의 목록을 확인
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 commitsConsul 웹 UI 접속
웹 브라우저에서 http://<서버_IP>:8500으로 접속하여 Consul 웹 UI에 접속할 수 있습니다.
http://192.168.10.111:8500Consul 클라이언트를 Consul 서버 클러스터에 조인(join)
1. Consul 클라이언트 설치
필요한 패키지 설치
sudo apt-get install -y unzipConsul 사용자 및 디렉토리 생성
sudo useradd --system --home /etc/consul.d --shell /bin/false consulsudo mkdir -p /etc/consul.d /opt/consulsudo chown -R consul:consul /etc/consul.dsudo chown -R consul:consul /opt/consulConsul 바이너리 파일 다운로드 및 설치
cd /usr/local/srclatest_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.zipunzip consul.zipsudo mv consul /usr/local/bin/sudo chmod +x /usr/local/bin/consul다운로드된 파일 제거
rm consul.zipConsul 버전 정보 확인
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
EOFConsul 클라이언트 서비스 시작 및 활성화
sudo systemctl daemon-reloadsudo systemctl --now enable consul2. Consul 클라이언트 설정 파일
Consul 클라이언트를 설정하기 위해 /etc/consul.d/consul.hcl 파일을 작성합니다.
vim /etc/consul.d/consul.hclsudo 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.hclsudo chmod 640 /etc/consul.d/consul.hclConsul 설정 파일 유효성 검사
sudo consul validate /etc/consul.d/Consul 서비스 재시작
systemctl restart consul.serviceConsul 서비스 상태 확인
systemctl status consul --no-pagerConsul 클러스터의 모든 노드의 목록을 확인
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 | 
 
                  
                 
                  
                 
                  
                