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

멤버 및 클러스터 정보

Environment Variable
Example
Description

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 인증서 세트를 사용할 수 있습니다.

Environment Variable
Example
Description

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 노드들과 클러스터 구성을 하는 경우

  • node1 172.176.0.2

  • node2 172.176.0.3

  • node3 172.176.0.4


실행

Systemd로 etcd 실행하기

아래와 같이 3개의 노드에 각각 systemd 서비스 파일로 etcd 등록/관리합니다.

Systemd 서비스로 등록하는 예시는 아래와 같습니다. 명령줄 도구 systemctldaemon-reload 명령어를 이용해 새로 정의한 etcd.service 서비스 정의를 포함해 Configuration을 갱신합니다.

등록한 서비스는 아래 예시처럼 활성화 (Enable) 할 수 있습니다. 활성화된 서비스는 시스템 부팅 시 자동으로 시작됩니다.

서비스를 아래 예시처럼 직접 시작하거나 중지, 재 시작할 수 있습니다. 활성화된 서비스도 명시적으로 사용자가 시작하거나 시스템을 재부팅하기 전까지는 동작하지 않으므로 필요에 따라 직접 실행합니다.

구동중인 서비스의 상태는 아래 예시와 같이 확인할 수 있습니다.

Command 로 etcd 실행하기

또는 아래 예시처럼 명령줄에서 직접 실행할 수도 있다.

참고

Etcd 는 Systemd 로 등록하여 사용하는 것을 권장합니다.


구성 확인

etcd 동작을 아래 명령어를 통해 3개 노드의 etcd 클러스터 상태를 확인한다.

Last updated