OpenHA DCS (Distributed Configuration Store)
개요
OpenHA DCS는 OpenSQL 클러스터의 구성 정보와 각 인스턴스 상태를 저장·공유하며, 리더 선출 기능을 수행하는 분산 구성 저장소입니다.
이 모듈은 etcd 기술을 기반으로 구현되었으며, 관리 도구로 etcdctl을 제공합니다.
환경 구성
OpenHA DCS는 최소 3개의 노드로 구성해야하며, 노드 간 통신을 위한 설정이 필요합니다.
설정 파일은 /opensql/etc/etcd/etcd.env에서 관리됩니다.
etcd.env 환경설정
# opensql/etc/etcd/etcd.env
# mandatory configuration
ETCD_NAME=<ETCD_NODE_NAME>
# Initial cluster configuration
ETCD_INITIAL_CLUSTER=<ETCD_NODE_NAME>=http://<NODE1_IP>:2380,<ETCD_NODE_NAME2>=http://<NODE2_IP>:2380, ...
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_INITIAL_CLSUTER_TOKEN=etcd-cluster
# Peer configuration
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<NODE_IP>:2380
ETCD_LISTEN_PEER_URLS=http://<NODE_IP>:2380
# Client/server configuration
ETCD_ADVERTISE_CLIENT_URLS=http://<NODE_IP>:2379
ETCD_LISTEN_CLIENT_URLS=http://<NODE_IP>:2379,http://127.0.0.1:2379
#data dir
ETCD_DATA_DIR=/opensql/etc/etcd멤버 및 클러스터 정보
ETCD_NAME
node1
ETCD 클러스터 내에서 고유한 노드의 이름을 지정합니다. 클러스터 내에 동일한 이름을 가지는 노드가 2개 이상 있어서는 안되며 후술할 클러스터 정보를 기술하는 항목에 지정된 노드 이름과 일치해야 합니다.
ETCD_INITIAL_CLUSTER
node1=http://172.18.0.5:2380,
node2=http://172.18.0.6:2380,
node3=http://172.18.0.7:2380
쉼표 , 로 구분되는 클러스터 내 ETCD 노드의 Peer 간 통신을 위한 URL의 목록으로 ETCD 클러스터를 초기화할 때 사용됩니다. 각 노드별로 정의되는 ETCD_INITIAL_ADVERTISE_PEER_URLS 값과 일치해야 합니다.
ETCD_INITIAL_CLUSTER_STATE
new
클러스터가 처음 시작되는 지 아니면 이미 존재하는 클러스터에 이 노드를 추가하는 지를 결정합니다. 처음 시작되는 클러스터의 노드인 경우 new 를, 이미 구성된 클러스터에 새로 추가되는 노드인 경우 existing 을 사용합니다.
ETCD_INITIAL_CLUSTER_TOKEN
my-etcd-cluster
ETCD 클러스터의 초기화에 사용되는 고유한 식별자로 동일한 토큰 값을 가지는 노드들이 클러스터에 참여할 수 있습니다.
ETCD_INITIAL_ADVERTISE_PEER_URLS
http://172.18.0.5:2380
ETCD 노드 간 서로 통신하기 위해 다른 노드에 공개(Advertise)할 이 노드의 피어 URL들의 목록. 다른 노드에서 이 노드에 접근하기 위한 URL이 지정되어야 합니다.
ETCD_LISTEN_PEER_URLS
http://172.18.0.5:2380
피어간 통신을 위해 이 노드의 ETCD 서버가 Listen 할 URL들의 목록.
ETCD_LISTEN_CLIENT_URLS
http://172.18.0.5:2379,
https://192.168.0.31:2379,
http://127.0.0.1:2379
클라이언트와 통신을 위해 이 노드의 ETCD 서버가 Listen 할 URL들의 목록.
ETCD_ADVERTISE_CLIENT_URLS
https://192.168.0.31:2379
클라이언트에 공개(Advertise)할 이 노드의 서버 URL들의 목록. ETCD API를 이용해 클러스터 멤버 정보를 가져오는 경우 이 값이 Client Addrs 로 표시됩니다.
ETCD_DATA_DIR
/var/lib/etcd
ETCD의 data directory
TLS 인증
OpenHA DCS는 TLS 인증서를 사용하여 클라이언트 및 노드 간 통신을 암호화할 수 있습니다.
설정 예시는 다음과 같습니다.
[클라이언트 - 서버]간 인증과 [서버 - 서버] 간 Peer 인증으로 나뉘며 두 경우에 같은 TLS 인증서 세트를 사용할 수 있습니다.
ETCD_TRUSTED_CA_FILE
/etc/etcd/pki/etcd-ca.pem
[클라이언트-서버]간 통신에 사용할 TLS 인증서의 서명 주체이며, 루트 CA (인증기관) 의 인증서 경로를 지정합니다.
ETCD_CERT_FILE
/etc/etcd/pki/node3.pem
[클라이언트-서버]간 통신에 사용할 인증서 경로를 지정합니다.
ETCD_KEY_FILE
/etc/etcd/pki/node3-key.pem
[클라이언트-서버]간 통신에 사용할 Key 파일 경로를 지정합니다.
ETCD_PEER_TRUSTED_CA_FILE
/etc/etcd/pki/etcd-ca.pem
[서버 -서버]간 Peer 통신에 사용할 TLS 인증서의 서명 주체이며, 루트 CA 인증서 경로를 지정합니다.
ETCD_PEER_CERT_FILE
/etc/etcd/pki/node3-peer.pem
[서버-서버]간 Peer 통신에 사용할 인증서 경로를 지정합니다.
ETCD_PEER_KEY_FILE
/etc/etcd/pki/node3-peer-key.pem
[서버-서버]간 Peer 통신에 사용할 Key 파일 경로를 지정합니다.
3-노드 클러스터로 구성하는 etcd 환경설정 예시
etcd 환경설정 예시노드 주소가 아래와 같고 etcd 노드들과 클러스터 구성을 하는 경우
node1
172.176.0.2node2
172.176.0.3node3
172.176.0.4
실행
Systemd로 etcd 실행하기
아래와 같이 3개의 노드에 각각 systemd 서비스 파일로 etcd 등록/관리합니다.
Systemd 서비스로 등록하는 예시는 아래와 같습니다. 명령줄 도구 systemctl 의 daemon-reload 명령어를 이용해 새로 정의한 etcd.service 서비스 정의를 포함해 Configuration을 갱신합니다.
등록한 서비스는 아래 예시처럼 활성화 (Enable) 할 수 있습니다. 활성화된 서비스는 시스템 부팅 시 자동으로 시작됩니다.
서비스를 아래 예시처럼 직접 시작하거나 중지, 재 시작할 수 있습니다. 활성화된 서비스도 명시적으로 사용자가 시작하거나 시스템을 재부팅하기 전까지는 동작하지 않으므로 필요에 따라 직접 실행합니다.
구동중인 서비스의 상태는 아래 예시와 같이 확인할 수 있습니다.
Command 로 etcd 실행하기
또는 아래 예시처럼 명령줄에서 직접 실행할 수도 있다.
구성 확인
etcd 동작을 아래 명령어를 통해 3개 노드의 etcd 클러스터 상태를 확인한다.
Last updated
