카테고리 없음
[Clickhouse] Clickhouse HA
twoDeveloper
2024. 7. 2. 17:57
[ 개요 ]
- Clickhouse를 HAProxy를 통해 이중화하여 쿼리 쏠림 현상을 방지하며 서버 부하 분산
[ HAProxy 설정 ]
1. HAProxy에서 Clickhouse 상태 확인 설정
listen clickhouse-cluster
bind *:28123
balance leastconn
server 192.168.56.60 click01.test.com:8123 check
server 192.168.56.61 click02.test.com:8123 check
- clickhouse 8123 포트를 28123으로 바인딩하여 상태 체크
- 8123 포트 : HTTP 인터페이스를 위한 포트로, 웹 브라우저나 HTTP 클라이언트를 통해 쿼리를 전송하고 결과 확인 가능
- clickhouse-server에서 접근 설정을 진행 [ click01 / click02 ]
- 설정 경로 : /etc/clickhouse-server/config.xml
- balance :
- roundrobin : 순차적으로 서버 접속
- ap01.test.com -> 첫 번째, 접속할 real server
- ap02.test.com -> 두 번째, 접속할 real server
- leastconn : 접속수가 가장 적은 서버로 balancing [v]
- leastconn 알고리즘 채택! 왜냐하면 쿼리 수행 시, ap01 서버에서 작업이 수행되고 있으면, ap02 서버 아니면 다른 프록시 서버로 접근하여 작업 쏠림 현상을 방지, 서버 부하 감소
- roundrobin : 순차적으로 서버 접속
2. host 접근 허용
<listen_host>::</listen_host>
- /etc/clickhouse-server/config.xml에 모든 host에 대해 접근 가능하도록 설정 값 적용
- clickhouse-server 재 기동
3. HA 테스트 수행
sudo systemctl stop clickhosue-server
- 임의로 click02 서버에서 clickhouse 기동 중지
- HAProxy 서버(ap01)에서 curl을 통해 상태 확인
curl localhost:28123
- 특정 서버가 down 되어도 서비스 상으로 상태 이상 없음
[ HAProxy 서버에서 Clickhouse 접근 ]
1. HAProxy 서버 (ap01)에 clickhouse-server 접근을 위한 clickhosue-client 설치
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install clickhouse-client=23.3.2.37 clickhouse-common-static=23.3.2.37
- clickhouse-client와 clickhouse-common-static 설치 (clickhouse-client만 독단으로 설치 불가)
- clickhouse-client: 명령줄 인터페이스로, SQL 쿼리 실행과 데이터베이스 관리에 사용
- clickhouse-common-static: ClickHouse 서버와 클라이언트에 필요한 공통 라이브러리와 실행 파일들을 포함한 패키지로 다양한 환경에서 ClickHouse의 원활한 동작을 지원
2. HAProxy 서버 (ap01)에서 clickhouse-server 접근
- 9000 포트를 통해 client에서 server 접근
- 9000 포트 : 기본 TCP 포트로, 네이티브 ClickHouse 클라이언트 및 서버 간의 통신에 사용
clickhouse-client --host=click01.test.com --port=9000 --user=default --password
---
ClickHouse client version 23.3.2.37 (official build).
Password for user (default):
Connecting to click01.test.com:9000 as user default.
Connected to ClickHouse server version 23.3.2 revision 54462.
Warnings:
* Linux threads max count is too low. Check /proc/sys/kernel/threads-max
* Available memory at server startup is too low (2GiB).
* Maximum number of threads is lower than 30000. There could be problems with handling a lot of simultaneous queries.
click01 :)
[ dbeaver 28123으로 접근 ]
- Host : 192.168.56.62 [ap01 / HAProxy]
[ HA 테스트 ]
SELECT hostname() AS server_host;
- 해당 명령어를 통해 현재 접속해 있는 서버 호스트 확인
- click01, click02 서버에 임의로 접속하여 쿼리 수행하는 것을 확인 가능