분산형 PostgreSQL 확장을 위한 Citus 설치 및 구성 가이드

단일 노드 환경에서의 Citus 구성

Docker를 이용한 간편 실행 (Mac 및 Linux)

Docker 환경에서는 단일 명령어로 Citus를 즉시 실행할 수 있습니다. 이는 개발 및 테스트 목적에 최적화되어 있습니다.

# Citus 컨테이너 실행
docker run -d --name citus_lab -p 5500:5432 -e POSTGRES_PASSWORD=citus_secure_pw citusdata/citus:10.2

# Citus 설치 및 작동 여부 확인
psql -U postgres -h localhost -p 5500 -d postgres -c "SELECT * FROM citus_version();"

위 명령을 실행하면 현재 설치된 Citus 확장 모듈의 버전 정보를 확인할 수 있습니다. 만약 로컬 환경에 이미 PostgreSQL이 실행 중이라면 5432 포트 충돌이 발생할 수 있으므로, -p 옵션을 통해 다른 포트(예: 5500)를 지정해야 합니다.

Ubuntu 또는 Debian 환경 설치

패키지 관리자를 통해 Linux 서버에 직접 단일 노드 Citus를 구성하는 방법입니다.

1. 저장소 추가 및 패키지 설치

# Citus 레포지토리 등록
curl https://install.citusdata.com/community/deb.sh | sudo bash

# PostgreSQL 14 및 Citus 확장 모듈 설치
sudo apt-get -y install postgresql-14-citus-10.2

2. 데이터베이스 초기화 및 설정

PostgreSQL 운영을 위해 postgres 사용자로 전환하여 데이터 디렉토리를 생성합니다.

sudo su - postgres
export PATH=$PATH:/usr/lib/postgresql/14/bin

mkdir ~/citus_storage
initdb -D ~/citus_storage

# Citus를 공유 라이브러리에 추가
echo "shared_preload_libraries = 'citus'" >> ~/citus_storage/postgresql.conf

3. 서비스 시작 및 확장 활성화

# 데이터베이스 인스턴스 시작
pg_ctl -D ~/citus_storage -o "-p 9700" -l citus_server.log start

# 데이터베이스 내에 Citus 확장 생성
psql -p 9700 -c "CREATE EXTENSION citus;"

# 설치 확인
psql -p 9700 -c "SELECT citus_version();"

RHEL, CentOS 또는 Fedora 환경 설치

RPM 패키지를 사용하는 환경에서의 설치 절차입니다.

# 레포지토리 구성
curl https://install.citusdata.com/community/rpm.sh | sudo bash

# Citus 패키지 설치
sudo yum install -y citus102_14

# 사용자 전환 및 환경 변수 설정
sudo su - postgres
export PATH=$PATH:/usr/pgsql-14/bin

# 초기화 및 라이브러리 설정
mkdir ~/citus_data
initdb -D ~/citus_data
echo "shared_preload_libraries = 'citus'" >> ~/citus_data/postgresql.conf

# 실행 및 확장 등록
pg_ctl -D ~/citus_data -o "-p 9700" -l log_citus start
psql -p 9700 -c "CREATE EXTENSION citus;"

멀티 노드 클러스터 구축

모든 노드 공통 작업 (Ubuntu/Debian 기준)

클러스터를 구성하는 모든 서버(코디네이터 및 워커)에서 다음 과정을 수행해야 합니다.

# 레포지토리 및 패키지 설치
curl https://install.citusdata.com/community/deb.sh | sudo bash
sudo apt-get -y install postgresql-14-citus-10.2

# Citus 라이브러리 프리로드 설정
sudo pg_conftool 14 main set shared_preload_libraries citus

# 모든 인터페이스에서 접속 허용 설정
sudo pg_conftool 14 main set listen_addresses '*'

접근 제어를 위해 pg_hba.conf 파일을 수정하여 내부 네트워크에서의 접속을 허용합니다.

# /etc/postgresql/14/main/pg_hba.conf 수정 예시
# 로컬 네트워크 내의 모든 노드에 대해 신뢰 접속 허용
host    all             all             10.0.0.0/8              trust
host    all             all             127.0.0.1/32            trust

설정 완료 후 서비스를 재시작하고 확장을 등록합니다.

sudo service postgresql restart
sudo update-rc.d postgresql enable
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"

코디네이터(Coordinator) 노드 설정

코디네이터 노드는 워커 노드들의 정보를 관리합니다. 모든 노드 설치가 끝난 후 코디네이터에서 워커를 등록합니다.

# 워커 노드 추가 (DNS 이름 또는 IP 주소 사용)
sudo -i -u postgres psql -c "SELECT * from citus_add_node('worker-node-01', 5432);"
sudo -i -u postgres psql -c "SELECT * from citus_add_node('worker-node-02', 5432);"

# 활성화된 워커 노드 목록 확인
sudo -i -u postgres psql -c "SELECT * FROM citus_get_active_worker_nodes();"

RHEL/CentOS 계열 멀티 노드 설정

Red Hat 계열에서는 다음과 같은 서비스 관리 명령을 사용합니다.

# 서비스 초기화 및 시작
sudo service postgresql-14 initdb || sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/14/data/postgresql.conf

# postgresql.conf에서 listen_addresses = '*' 설정 확인 후 재시작
sudo service postgresql-14 restart
sudo chkconfig postgresql-14 on

# 확장 등록
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"

이후 과정은 코디네이터 노드에서 citus_add_node 함수를 호출하여 워커를 등록하는 방식과 동일합니다.

태그: citus PostgreSQL distributed-database database-cluster linux-administration

5월 29일 03:36에 게시됨