728x90
etcd 클러스터를 구성하는 방법
etcd 클러스터를 구성하는 것은 여러 대의 etcd 인스턴스를 설정하여 고가용성 및 데이터 일관성을 확보하는 중요한 작업입니다. 이 과정에서는 각 etcd 노드가 서로 통신할 수 있도록 설정하고 클러스터를 구성하는 모든 노드가 올바르게 상호작용하도록 해야 합니다.
전제 조건
- 3개 이상의 서버 준비 : etcd 클러스터는 홀수 개의 노드로 구성하는 것이 좋습니다. 일반적으로 3개 이상의 서버에서 etcd 인스턴스를 실행합니다.
- 서버 간 네트워크 통신 : 모든 etcd 노드가 서로 통신할 수 있어야 합니다.
- 서버에 etcd 설치 : 각 노드에 etcd가 설치되어 있어야 합니다.
기본 설정
각 etcd 노드는 설정 파일 또는 명령줄 인자를 통해 클러스터 구성을 지정합니다. 설정 파일을 사용하거나 명령줄에서 직접 인자를 제공할 수 있습니다.
설정 파일 예제
vim /etc/etcd/etcd.conf
ETCD_NAME=<NODE_NAME>
ETCD_DATA_DIR=/var/lib/etcd
ETCD_LISTEN_PEER_URLS=https://<NODE_IP>:2380
ETCD_LISTEN_CLIENT_URLS=https://<NODE_IP>:2379
ETCD_INITIAL_ADVERTISE_PEER_URLS=https://<NODE_IP>:2380
ETCD_ADVERTISE_CLIENT_URLS=https://<NODE_IP>:2379
ETCD_INITIAL_CLUSTER=<NODE_NAME>=https://<NODE_IP>:2380,<ANOTHER_NODE_NAME>=https://<ANOTHER_NODE_IP>:2380,<ETC>
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_CORS=""
ETCD_CERT_FILE=/path/to/etcd-server.crt
ETCD_KEY_FILE=/path/to/etcd-server.key
ETCD_TRUSTED_CA_FILE=/path/to/ca.crt
변수 역할
- ETCD_NAME : 노드의 이름 (고유하게 설정)
- ETCD_LISTEN_PEER_URLS : 다른 etcd 노드와 통신할 URL
- ETCD_LISTEN_CLIENT_URLS : 클라이언트가 접속할 URL
- ETCD_INITIAL_ADVERTISE_PEER_URLS : 이 노드의 광고 URL
- ETCD_ADVERTISE_CLIENT_URLS : 클라이언트에게 광고할 URL
- ETCD_INITIAL_CLUSTER : 클러스터의 모든 노드 정보 (각 노드의 이름과 URL)
- ETCD_INITIAL_CLUSTER_STATE : 클러스터의 초기 상태 (새 클러스터의 경우 new)
- ETCD_INITIAL_CLUSTER_TOKEN : 클러스터의 고유 토큰 (모든 노드에서 동일해야 함)
- ETCD_CERT_FILE, ETCD_KEY_FILE, ETCD_TRUSTED_CA_FILE : TLS/SSL 인증서 및 키 파일
etcd 클러스터 구성
3개의 노드로 구성된 etcd 클러스터의 예제
Hostname | IP Address | 비고 |
node211 | 192.168.0.211 | |
node212 | 192.168.0.212 | |
node213 | 192.168.0.213 |
더보기
---
etcd 사용자 및 그룹 생성
sudo useradd -r etcd
etcd 설정 디렉토리 및 데이터 디렉토리 생성
sudo mkdir -p /etc/etcd
sudo mkdir -p /var/lib/etcd
데이터 디렉토리 권한 설정
sudo chown -R etcd:etcd /var/lib/etcd
etcd 서비스 설정
vim /etc/systemd/system/etcd.service
[Unit]
Description=etcd
Documentation=https://etcd.io
After=network.target
[Service]
User=etcd
ExecStart=/usr/local/bin/etcd --config-file=/etc/etcd/etcd.conf
Restart=always
RestartSec=5
LimitNOFILE=65536
LimitNPROC=4096
LimitCORE=infinity
[Install]
WantedBy=multi-user.target
etcd 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl start etcd
sudo systemctl enable etcd
---
728x90
etcd 설정 파일 생성
mkdir -p /etc/etcd
- node211
cat <<EOF | sudo tee /etc/etcd/etcd.conf
ETCD_NAME=node211
ETCD_DATA_DIR=/var/lib/etcd
ETCD_LISTEN_PEER_URLS=http://192.168.0.211:2380
ETCD_LISTEN_CLIENT_URLS=http://192.168.0.211:2379
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.0.211:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.0.211:2379
ETCD_INITIAL_CLUSTER="node211=http://192.168.0.211:2380,node212=http://192.168.0.212:2380,node213=http://192.168.0.213:2380"
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER_STATE=new
EOF
- node212
cat <<EOF | sudo tee /etc/etcd/etcd.conf
ETCD_NAME=node212
ETCD_DATA_DIR=/var/lib/etcd
ETCD_LISTEN_PEER_URLS=http://192.168.0.212:2380
ETCD_LISTEN_CLIENT_URLS=http://192.168.0.212:2379
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.0.212:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.0.212:2379
ETCD_INITIAL_CLUSTER="node211=http://192.168.0.211:2380,node212=http://192.168.0.212:2380,node213=http://192.168.0.213:2380"
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER_STATE=new
EOF
- node213
cat <<EOF | sudo tee /etc/etcd/etcd.conf
ETCD_NAME=node213
ETCD_DATA_DIR=/var/lib/etcd
ETCD_LISTEN_PEER_URLS=http://192.168.0.213:2380
ETCD_LISTEN_CLIENT_URLS=http://192.168.0.213:2379
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.0.213:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.0.213:2379
ETCD_INITIAL_CLUSTER="node211=http://192.168.0.211:2380,node212=http://192.168.0.212:2380,node213=http://192.168.0.213:2380"
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER_STATE=new
EOF
각 노드에서 etcd를 재시작
서비스 재시작
sudo systemctl restart etcd
서비스 상태 확인
sudo systemctl status etcd
클러스터가 정상적으로 작동하는지 확인
etcdctl member list
이 명령어는 클러스터의 모든 멤버를 나열하고 상태를 확인할 수 있습니다.
TLS/SSL 설정
보안을 강화하기 위해 TLS/SSL 인증서를 설정하는 것이 좋습니다. 설정 파일에서 ETCD_CERT_FILE, ETCD_KEY_FILE, ETCD_TRUSTED_CA_FILE을 지정하여 인증서와 키를 설정합니다. 인증서와 키 파일을 생성하려면 cfssl 또는 OpenSSL을 사용할 수 있습니다.
클러스터의 헬스 체크 및 관리
클러스터 상태를 확인하려면 다음 명령어를 사용할 수 있습니다.
etcdctl endpoint health --cluster
이 명령어는 클러스터의 각 노드 상태를 점검합니다.
etcd 클러스터를 성공적으로 구성할 수 있습니다. 클러스터가 정상적으로 작동하고 데이터를 일관되게 유지하는지 정기적으로 확인하는 것도 중요합니다.
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에 HashiCorp Vault를 설치하고 클러스터를 구성하는 방법 (0) | 2024.07.24 |
---|---|
[draft] 쿠버네티스 클러스터를 고가용성으로 구성하는 방법 (0) | 2024.07.23 |
[draft] 우분투에 etcd를 설치하는 방법 (0) | 2024.07.22 |
[draft] 쿠버네티스 클러스터를 멀티 마스터 환경에서 고가용성을 구현하는 방법 (0) | 2024.07.22 |
[draft] 쿠버네티스 패키지와 설정을 완전히 삭제하는 방법 (0) | 2024.07.22 |