clickhouse(二)集群搭建-三分片兩副本模式


環境說明:三台centos7服務器+clickhouse20.8.3.18+jdk1.8

架構圖:

機器准備:

IP 端口 服務 配置文件
192.168.85.126(local126) 2181 zookeeper zoo.cfg
192.168.85.127(local127) 2181 zookeeper zoo.cfg
192.168.85.128(local128) 2181 zookeeper zoo.cfg
192.168.85.126(local126) 29000/28123 clickhouse客戶端、服務端

config.xml、users.xml、metrika.xml

192.168.85.126(local126) 29002/28124 clickhouse客戶端、服務端

config2.xml、users2.xml、metrika2.xml

192.168.85.127(local127) 29000/28123 clickhouse客戶端、服務端

config.xml、users.xml、metrika.xml

192.168.85.127(local127) 29002/28124 clickhouse客戶端、服務端

config2.xml、users2.xml、metrika2.xml

192.168.85.128(local128) 29000/28123 clickhouse客戶端、服務端

config.xml、users.xml、metrika.xml

192.168.85.128(local128) 29002/28124 clickhouse客戶端、服務端

config2.xml、users2.xml、metrika2.xml

 

 

1. 准備工作(三台機器同步)

1)關閉firewalld和SELINUX

systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2)配置hosts域名解析,方便后續使用主機名

vim /etc/hosts,如:

 #為利於服務器間文件傳輸,可進一步做免密登錄

2. 搭建zookeeper集群(三台機器同步)

 1)官網下載地址:http://mirror.bit.edu.cn/apache/zookeeper/

tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local   //文件解壓
cd /usr/local/ && mv zookeeper-3.4.14 zookeeper  //文件夾重命名
cd zookeeper && mkdir data logs    //創建數據目錄和日志目錄
cd conf/ && cp zoo_sample.cfg zoo.cfg    //進入conf文件夾下將 zoo_sample.cfg 文件復制並重命名為 zoo.cfg 文件

2)編輯zoo.cfg文件,我的配置如下:

 參數說明:

  • tickTime:基本事件單元,這個時間是作為Zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,每隔tickTime時間就會發送一個心跳;最小 的session過期時間為2倍tickTime
  • dataDir:存儲內存中數據庫快照的位置,除非另有說明,否則指向數據庫更新的事務日志。
  • dataLogDir:   該配置需手動添加,用於存儲產生的日志,使用專用的日志存儲設備能夠大大提高系統的性能。
  • client:監聽客戶端連接的端口。
  • initLimit:允許follower連接並同步到Leader的初始化連接時間,以tickTime為單位。當初始化連接時間超過該值,則表示連接失敗。
  • syncLimit:表示Leader與Follower之間發送消息時,請求和應答時間長度。如果follower在設置時間內不能與leader通信,那么此follower將會被丟棄。
  • server.A=B:C:D

        A:其中 A 是一個數字,表示這個是服務器的編號;

        B:是這個服務器的 ip 地址;

        C:Zookeeper服務器之間的通信端口;

        D:Leader選舉的端口。

優化自動清理snapshot和事務日志的功能:

autopurge.purgeInterval=1       //這個參數指定了清理頻率,單位是小時,需要填寫一個1或更大的整數,默認是0,表示不開啟自己清理功能。
autopurge.snapRetainCount=48    //這個參數指定了需要保留的文件數目。默認是保留3個。

 

3)創建myid文件

cd /usr/local/zookeeper/data       //進入zookeeper數據目錄
echo 1 > myid     //里面的配置和zoo.cfg的server.x配置保持一致,如本機器編號為1

4)啟動zookeeper

cd /usr/local/zookeeper/bin/
./zkServer.sh start    //啟動服務
./zkServer.sh status    //查看狀態
#./zkServer.sh stop //停止服務
#./zkServer.sh restart //重啟服務

 如圖,可以看到,三台機器,一主兩從。

3. 搭建clickhouse集群

1)下載並安裝clickhouse包

直接點擊下載或用如下命令下載

wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.8.3.18-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.8.3.18-1.el7.x86_64.rpm/download.rpm

安裝軟件包

rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm
//按順序安裝

 2)創建數據目錄、日志目錄、臨時目錄

默認的目錄為:

/var/lib/clickhouse          //數據目錄
/var/lib/clickhouse/tmp      //臨時目錄
/var/log/clickhouse-server   //日志目錄

實際生產環境中,這些目錄通常放在數據盤而不是系統盤,如下創建目錄:

mkdir -p /weblogic/clickhouse/{data1,data2,logs1,logs2,tmp1,tmp2}
//單台機器運行兩個節點,故創建兩份目錄
chown -R clickhouse:clickhouse /weblogic/clickhouse/ 
//給目錄賦權

3)修改調整配置

vim /etc/clickhouse-server/config.xml,如下僅供參考:

  • 目錄修改

  •  端口修改,不與現有程序沖突即可

 

 

  • 對外開放IP

  • 調整metrika.xml文件地址,默認為/etc/metrika.xml

  • 分布式DDL語句在zookeeper中的目錄:

 

  • 不管多大的分區表都可以刪除(應用於需要刪除表或分區的情況,默認是刪除50GB以上的分區表會報錯)

  • 最大並發處理數(包括insert、select等,默認為100,根據機器性能調整)

 

vim /etc/clickhouse-server/users.xml,如下僅供參考:

    <mc>     //在default用戶下新建一個用戶
            <password>mc123</password>
            <access_management>1</access_management>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip> 
            </networks>
            <profile>default</profile>
            <quota>default</quota>
    </mc>

4)擴展配置文件metrika.xml(三台機器同步創建,酌情修改)

vim /etc/clickhouse-server/metrika.xml

<yandex>
<clickhouse_remote_servers>
<perftest_3shards_2replicas>               //集群名,可自行調整

<shard>
<internal_replication>true</internal_replication>    //同一時刻是否只將數據寫入其中一個副本
<replica>
<host>local126</host>
<port>29000</port>
</replica>
<replica>
<host>local127</host>
<port>29002</port>
</replica>
</shard>

<shard>
<replica>
<internal_replication>true</internal_replication>
<host>local127</host>
<port>29000</port>
</replica>
<replica>
<host>local128</host>
<port>29002</port>
</replica>
</shard>

<shard>
<internal_replication>true</internal_replication>
<replica>
<host>local128</host>
<port>29000</port>
</replica>
<replica>
<host>local126</host>
<port>29002</port>
</replica>
</shard>

</perftest_3shards_2replicas>
</clickhouse_remote_servers>

<!--zookeeper相關配置-->
<zookeeper-servers>
<node index="1">
<host>local126</host>
<port>2181</port>
</node>
<node index="2">
<host>local127</host>
<port>2181</port>
</node>
<node index="3">
<host>local128</host>
<port>2181</port>
</node>
</zookeeper-servers>

<macros>    //如下是引擎參數的變量
<share>01</share>         //分片名稱,相同值則互為副本
<replica>local126-01</replica>   //副本名稱,每個節點不同
</macros>

<networks>
<ip>::/0</ip>   //對外開放所有地址
</networks>

<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>

</yandex>

注意:為什么要新建一個metrika.xml擴展文件,其實如果仔細看過clickhouse的配置文件/etc/clickhouse-server/config.xml就能明白

<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
         By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
         Values for substitutions are specified in /yandex/name_of_substitution elements in that file.
      -->
//如果元素具有'incl'屬性,則對其值將使用來自另一個文件的相應替換。默認情況下,替換文件的路徑是/etc/metrika.xml。它可在'include_from'元素的配置中更改。替換的值在該文件的/yandex/name_of_substitution元素中指定。

5)為節點2復制相關文件

cd /etc/clickhouse-server/ && cp users.xml users2.xml && cp config.xml config2.xml && cp metrika.xml metrika2.xml   //為節點2復制配置文件
cd /etc/init.d && cp clickhouse-server clickhouse-server2  //為節點2復制一份啟動腳本
vim clickhouse-server2    //編輯修改節點2的啟動腳本

更改配置:

  • CLICKHOUSE_CONFIG=$CLICKHOUSE_CONFDIR/config2.xml
  • CLICKHOUSE_PIDFILE="$CLICKHOUSE_PIDDIR/$PROGRAM-2.pid"

 6)為節點2修改配置文件

vim /etc/clickhouse-server/metrika2.xml

//修改該段配置
<macros>    
<share>03</share>         //分片名稱,填與其互為副本的節點所在的分片名
<replica>local126-02</replica>   //副本名稱,每個節點不同
</macros>

vim /etc/clickhouse-server/config2.xml

  • 目錄修改
sed -i 's/data1/data2/g;s/logs1/logs2/g;s/tmp1/tmp2/g' /etc/clickhouse-server/config2.xml
  • users.xml文件目錄調整

  • metrka.xml文件目錄調整

  • 修改端口
sed -i 's/28123/28124/g;s/29000/29002/g;s/29004/29005/g;s/29009/29010/g' /etc/clickhouse-server/config2.xml 

7)啟動節點

/etc/init.d/clickhouse-server start && /etc/init.d/clickhouse-server2 start
/etc/init.d/clickhouse-server status && /etc/init.d/clickhouse-server2 status 
ps -ef|grep clickhouse

 如上每台機器啟動有兩個節點。

 4.客戶端連接測試

clickhouse-client -h local126 --port 29000 -u mc --password -m

參數說明:

-h    //IP或主機名
--port   //客戶端監聽端口
-u    //用戶名
--password   //密碼
-m   //支持回車換行,以`;`結束sql

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM