Linux搭建ClickHouse集羣環境

部署規格

部署clickhouse需要同一內網的機器三臺,本文將以三臺VM虛擬機172.30.129.171(以下稱爲171)、172.30.129.172(以下稱爲172)、172.30.129.173(以下稱爲173)三臺機器爲示例演示安裝,虛擬機搭建可參考我的文章基於VMware的Ubuntu開發環境搭建 - CyberGhost - OSCHINA - 中文開源技術交流社區

安裝ZooKeeper

ZooKeeper安裝參考我的文章Zookeeper集羣安裝 - CyberGhost - OSCHINA - 中文開源技術交流社區

安裝Kafka

Kafka安裝參考我的文章Linux搭建Kafka集羣環境 - CyberGhost - OSCHINA - 中文開源技術交流社區

安裝ClickHouse

ClickHouse官方發佈了支持各大主流系統安裝的rpm、deb甚至是windows安裝包,這種安裝比較無聊所以不選擇,這裏選擇官方預編譯的通用linux安裝包。

ClickHouse的安裝包分爲三部分,分別是客戶端、服務器、中間件,可以從ClickHouse安裝包歸檔獲取對應的安裝包。

- https://packages.clickhouse.com/tgz/lts/clickhouse-server-22.8.16.32-*.tgz
- https://packages.clickhouse.com/tgz/lts/clickhouse-client-22.8.16.32-*.tgz
- https://packages.clickhouse.com/tgz/lts/clickhouse-common-static-22.8.16.32-*.tgz
  1. 解壓clickhouse安裝包
mkdir -p /data/third-part/clickhouse
# 解壓JRE
tar zxvf clickhouse-common-static-*.tgz --strip-components 1 -C /data/third-part/clickhouse
tar zxvf clickhouse-client-*.GZ --strip-components 1 -C /data/third-part/clickhouse
tar zxvf clickhouse-server-*.GZ --strip-components 1 -C /data/third-part/clickhouse
  1. /lib/system/systemd目錄下新增文件clickhouse-server.service,爲ClickHouse註冊系統服務。
[Unit]
Description=ClickHouse Server (analytic DBMS for big data)
Requires=network-online.target
After=time-sync.target network-online.target
Wants=time-sync.target

[Service]
Type=simple
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/data/third-part/clickhouse/usr/bin"
User=root
Group=root
Restart=always
RestartSec=30
RuntimeDirectory=clickhouse-server
ExecStart=/data/third-part/clickhouse/usr/bin/clickhouse-server --config=/data/third-part/clickhouse/etc/clickhouse-server/config.xml
ExecStop=/data/third-part/clickhouse/usr/bin/clickhouse-server stop --config=/data/third-part/clickhouse/etc/clickhouse-server/config.xm
Restart=on-failure
[Install]
# ClickHouse should not start from the rescue shell (rescue.target).
WantedBy=multi-user.target

配置ClickHouse

  1. 修改配置文件,並創建數據存儲目錄
# 日誌等級
sed -i "s#<level>trace</level>#<level>information</level>#g" /data/third-part/clickhouse/etc/clickhouse-server/config.xml
sed -i "s#<!-- <listen_host>0.0.0.0</listen_host> -->#<listen_host>0.0.0.0</listen_host>#g" /data/third-part/clickhouse/etc/clickhouse-server/config.xml
# 默認密碼
sed -i "s#<password></password>#<password>s3cret</password>#g" /data/third-part/clickhouse/etc/clickhouse-server/users.xml
sed -i "s#<log>/var/log/clickhouse-server/clickhouse-server.log</log>#<log>/data/third-part/clickhouse/log/clickhouse-server/clickhouse-server.log</log>#g" /data/third-part/clickhouse/etc/clickhouse-server/config.xml
sed -i "s#<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>#<errorlog>/data/third-part/clickhouse/log/clickhouse-server/clickhouse-server.err.log</errorlog>#g" /data/third-part/clickhouse/etc/clickhouse-server/config.xml
# 刪掉ck默認設置的集羣,會干擾自己配的集羣
sed -i '721,859d' /data/third-part/clickhouse/etc/clickhouse-server/config.xml
# 臨時數據軟連接,防止撐爆/var
ln -s /data/third-part/clickhouse /var/lib
  1. 添加環境變量
echo "# ClickHouse Environment Variable" >> ~/.bash_profile
echo "export PATH=/data/third-part/clickhouse/:/data/third-part/clickhouse/usr/bin:\$PATH" >> ~/.bash_profile
  1. 爲171、172、173三臺機器配置主機名
echo "172.30.129.171   s1r1" >> /etc/hosts
echo "172.30.129.172   s2r2" >> /etc/hosts
echo "172.30.129.173   s3r3" >> /etc/hosts
  1. 在171、172、173三臺機器上的/data/third-part/clickhouse/etc/clickhouse-server目錄下創建配置分片的metrika.xml(三分片三副本)
    <?xml version="1.0"?>
    <yandex>
        <clickhouse_remote_servers>
            <ck_cluster>
                <!--分片1-->
                <shard>
                    <weight>1</weight>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>172.30.129.171</host>
                        <port>9000</port>
                        <user>default</user>
                        <password>s3cret</password>
                        <compression>true</compression>
                    </replica>
                </shard>
                <!--分片2-->
                <shard>
                    <weight>1</weight>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>172.30.129.172</host>
                        <port>9000</port>
                        <user>default</user>
                        <password>s3cret</password>
                        <compression>true</compression>
                    </replica>
                </shard>
                <!--分片3-->
                <shard>
                    <weight>1</weight>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>172.30.129.173</host>
                        <port>9000</port>
                        <user>default</user>
                        <password>s3cret</password>
                        <compression>true</compression>
                    </replica>
                </shard>
            </ck_cluster>
        </clickhouse_remote_servers>
        <!--zookeeper相關配置-->
        <zookeeper-servers>
            <node index="1">
                <host>172.30.129.171</host>
                <port>2181</port>
            </node>
            <node index="2">
                <host>172.30.129.172</host>
                <port>2181</port>
            </node>
            <node index="3">
                <host>172.30.129.173</host>
                <port>2181</port>
            </node>
        </zookeeper-servers>
        <macros>
            <!--這裏要根據在哪臺機器上部署修改,第一個分片shard就是01,replica就是s1r1和主機名保持一致-->
            <shard>01</shard>
            <replica>s1r1</replica>
        </macros>
        <networks>
            <ip>::/0</ip>
        </networks>
        <!--壓縮相關配置-->
        <clickhouse_compression>
            <case>
                <min_part_size>1073741824</min_part_size>
                <min_part_size_ratio>0.01</min_part_size_ratio>
                <!--壓縮算法lz4壓縮比zstd快, 更佔磁盤-->
                <method>lz4</method>
            </case>
        </clickhouse_compression>
    </yandex>
  1. 修改/data/third-part/clickhouse/etc/clickhouse-server/config.xml文件,在720行(具體來說只要在CDDATA標籤後面就行了)加入如下配置
<!--導入分片配置metrika.xml文件-->
<include_from>/data/third-part/clickhouse/etc/clickhouse-server/metrika.xml</include_from>
<!--生效分片配置-->
<remote_servers incl="clickhouse_remote_servers" optional="true"/>
<!--配置zookeeper集羣-->
<zookeeper incl="zookeeper-servers" optional="true"/>
<!--生效宏定義,用於創建分片或副本-->
<macros incl="macros" optional="true"/>
<!--立刻刪除副本,不需要等待480秒-->
<database_atomic_delay_before_drop_table_sec>0</database_atomic_delay_before_drop_table_sec>

啓動ClickHouse

分別登錄171、172、173三臺機器,執行如下命令啓動ClickHouse服務

systemctl daemon-reload
systemctl enable clickhouse-server
systemctl start clickhouse-server
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章