단일 노드 환경에서의 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 함수를 호출하여 워커를 등록하는 방식과 동일합니다.