Free Lines Arrow
본문 바로가기
DataBase/Clickhouse

[ClickHouse] 클릭하우스 클러스터 구축

by skahn1215 2023. 5. 27.
728x90
반응형

클러스터 구축

  • 클릭하우스를 이용하여 클러스터를 구축해보자.

 

클러스터란?

데이터베이스 클러스터링은 하나의 데이터 베이스를
두개 이상의 서버또는 인스턴들을 구성하는 것을 얘기한다.

 

클러스터의 메인 특징

  • Data redundancy
    -  데이터 이중화
  • Load balancing
    - 트래픽을 균등하게 나눠준다.
  • High availability
    - 데이터 베이스가 사용가능한 시간
  • Monitoring and automation.
    - 모니터링 및 자동화

 

클릭하우스 클러스터 구축하기 (리플리케이션)

  • 아래와 같이 클러스터를 구축할 예정이다.
  • 두개의 서버 CH_NODE1 과 CH_NODE2에 샤드를 생성한다.
    • 복제 용도
  • 그리고 CH_CLUSTER 를 만들어 아래 두대의 서버를 하나로 관리해보자.

 

 

클릭하우스 클러스터 구축하기 (전체 구조)

  • 아래는 전체 디비 구조이다.

  • ch_node  -> db -> d_member: distributed 테이블
  • ch_node1 -> db_01  -> member(shard 01 replica 01)
  • ch_node1 -> db_01  -> member(shard 02 replica 02)
  • ch_node2 -> db_02 -> member(shard 02 replica 01)
  • ch_node2 -> db_02 -> member(shard 01 replica 02)

 

CH_NODE1 , CH_NODE2  에 동일한게 아래 설정 값을 넣어준다.

<yandex>
    <remote_servers>
        <db_2s_2r> -- 클러스터 명
            <shard> -- 샤드1 정보
                <internal_replication>true</internal_replication>
                <replica> -- 복제 정보
                    <default_database>db_01</default_database> --샤드가 있는 디비명 
                    <host>ch-server-1</host> -- 클릭하우스 서버 설치 주소
                    <port>9000</port>                -- 포트번호 고정
                </replica>
                <replica>
                <default_database>db_01</default_database>
                    <host>ch-server-2</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard> -- 샤드2 정보
                <internal_replication>true</internal_replication>
                <replica>
                    <default_database>db_02</default_database>
                    <host>ch-server-1</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <default_database>db_02</default_database>
                    <host>ch-server-2</host>
                    <port>9000</port>
                </replica>
            </shard>
        </db_2s_2r>
    </remote_servers>
</yandex>

 

 

CH_NODE1 매크로 파일

<yandex>
    <macros>
        <cluster01>db_2s_2r</cluster01>
        <shard01>s1</shard01>
        <shard02>s2</shard02>
        <replica01>ch_server_1_s1_r1</replica01>
        <replica02>ch_server_2_s2_r2</replica02>
    </macros>
</yandex>

 

CH_NODE2 매크로 파일

<yandex>
    <macros>
        <cluster01>db_2s_2r</cluster01>
        <shard01>s2</shard01>
        <shard02>s1</shard02>
        <replica01>ch_server_2_s2_r1</replica01>
        <replica02>ch_server_1_s1_r2</replica02>
    </macros>
</yandex>

 

 

참고:

클러스터링이란?

https://www.ndimensionz.com/2018/01/05/what-is-database-clustering-introduction-and-brief-explanation/#:~:text=Database%20Clustering%20is%20the%20process,a%20Data%20Cluster%20is%20needed.

 

728x90
반응형

댓글