1.集群節點信息
10.12.110.201 ch201
10.12.110.202 ch202
10.12.110.203 ch203
2. 搭建一個zookeeper集群
在這三個節點搭建一個zookeeper集群(如果搭建可以直接忽略這一步),先在一個節點上根據以下配置
2.1. 下載 zookeeper-3.4.12.tar.gz 安裝包,放置到上面三台服務器一個目錄下(/apps/)
2.2. 進入到/apps/目錄下,解壓tar包,tar -zxvf zookeeper-3.4.12.tar.gz
2.3. 進入zookeeper的conf目錄,拷貝zoo_sample.cfg為zoo.cfg,cp zoo_sample.cfg zoo.cfg 修改zoo.cfg文件:
tickTime=2000
initLimit=10
syncLimit=5
dataDir= /apps/zookeeper-3.4.13/data/zookeeper
dataLogDir= /apps/zookeeper-3.4.13/log/zookeeper
clientPort=2182
autopurge.purgeInterval=0
globalOutstandingLimit=200
server.1=ch201:2888:3888
server.2=ch202:2888:3888
server.3=ch203:2888:3888
2.4. 創建需要的目錄
$:mkdir -p /apps/zookeeper-3.4.13/data/zookeeper
$:mkdir -p /apps/zookeeper-3.4.13/log/zookeeper
配置完成后將當前的zookeeper目錄scp到其他兩個節點
2.5. 設置myid
$:vim /data/zookeeper/myid #ch201為1,ch202為2,ch203為3
2.6. 進入zookeeper的bin目錄,啟動zookeeper服務,每個節點都需要啟動
$: ./zkServer.sh start
2.7. 啟動之后查看每個節點的狀態
$: ./zkServer status
其中有一個節點是leader,有兩個節點是follower,證明zookeeper集群是部署成功的
2.8. 測試zookeeper
$:./zkCli.sh -server ch201:2182
如果出現拒絕連接,查看防火牆是否關閉,關閉防火牆service iptables stop
重啟zookeeper
,或排查是否配置有誤
3. 在三個節點分別搭建單機版,單機版以一個為例
3.1. 查看當前linux
版本
$: cat /proc/version
Linux version 2.6.32-573.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu Jul 23 15:44:03 UTC 2015
3.2. 下載對應的linux
版本的clickhouse rpm
版本,上面版本對應的版本如下:
clickhouse-client-19.9.5.36-1.el6.x86_64.rpm
clickhouse-common-static-19.9.5.36-1.el6.x86_64.rpm
clickhouse-server-19.9.5.36-1.el6.x86_64.rpm
clickhouse-server-common-19.9.5.36-1.el6.x86_64.rpm
如果你的linux是下面版本:
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
對應的clickhouse
版本是:
clickhouse-client-19.16.3.6-1.el7.x86_64.rpm
clickhouse-common-static-19.16.3.6-1.el7.x86_64.rpm
clickhouse-server-19.16.3.6-1.el7.x86_64.rpm
clickhouse-server-common-19.16.3.6-1.el7.x86_64.rpm
官網下載地址:https://repo.yandex.ru/clickhouse/deb/stable/main/
3.3. 通過rpm
方式按下面順序依次安裝:
進入rpm所在目錄:/home/clickhouse/pack/6/
$:rpm -ivh clickhouse-common-static-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-server-common-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-server-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-client-19.9.5.36-1.el6.x86_64.rpm
3.4. rpm
安裝完畢無誤后,clickhouse-server
和clickhouse-client
配置目錄如下
$: ll /etc/clickhouse-server/
-rw-r--r-- 1 root root 17642 Nov 15 11:44 config.xml
-rw-r--r-- 1 root root 5609 Jul 21 18:16 users.xml
$: ll /etc/clickhouse-client/
drwxr-xr-x 2 clickhouse clickhouse 4096 Nov 15 10:55 conf.d
-rw-r--r-- 1 clickhouse clickhouse 1568 Jul 21 17:27 config.xml
3.5. 對於目前性能壓測只需要關注/etc/clickhouse-server/
的config.xml
只修改數據存放的目錄:
<!-- Path to data directory, with trailing slash. -->
<path>/home/clickhouse/data/clickhouse</path>
注意這個配置的目錄磁盤空間必須足夠大
其他配置可以根據自己的實際情況而定,注意配置端口是否被占用
3.6. 啟動clickhouse-server
$: /etc/init.d/clickhouse-server start
注意:執行這個命令需要安裝libicu
如果沒有安裝會報以下錯誤:
Start clickhouse-server service: /usr/bin/clickhouse-extract-from-config: error while loading shared libraries: libicui18n.so.42: cannot open shared object file: No such file or directoryCannot obtain value of path from config file: /etc/clickhouse-server/config.xml
安裝libicu方法:
下載libicu的rpm包:
libicu-4.2.1-14.el6.x86_64.rpm
libicu-devel-4.2.1-14.el6.x86_64.rpm
存放在linux的一個目錄,在當前目錄執行:
$: rpm –ivh libicu-4.2.1-14.el6.x86_64.rpm
$: rpm –ivh libicu-devel-4.2.1-14.el6.x86_64.rpm
注意這個包也必須對應linux版本
安裝完畢后啟動:
$: /etc/init.d/clickhouse-server start
如果出現以下信息證明成功:
Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE
3.7. 停止clickhouse-server
:
$: /etc/init.d/clickhouse-server stop
3.8. 進入clickhouse-client
:
$: clickhouse-client --host ch201 --port 9000
出現以下:
注意:默認沒有改端口登錄方式為clickhouse-client localhost 9000
,但當更改非默認端口后,這種方式無法登錄,所以推薦用上面的方法。同時登錄參數很多,可以通過官網查
證明進入客戶端成功
通過查詢驗證:select 1
證明clickhouse完全安裝成功並可以正確使用
4.集群部署
三個節點全部按照上面的指導部署單節點成功后開始配置部署集群需要的配置
4.1.首先以一個節點為例配置,vim /etc/metrika.xml,添加配置信息如下:
<yandex>
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch201</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>ch202</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch203</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers>
<!--zookeeper相關配置-->
<zookeeper-servers>
<node index="1">
<host>ch201</host>
<port>2182</port>
</node>
<node index="2">
<host>ch202</host>
<port>2182</port>
</node>
<node index="3">
<host>ch203</host>
<port>2182</port>
</node>
</zookeeper-servers>
<macros>
<replica>ch203</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>
<!-- 其中大部分配置一樣,以下的配置根據節點的IP/域名具體配置 -->
<macros>
<replica>ch203</replica>
</macros>
注意:為什么直接vim /etc/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.
-->
配置一個節點完成之后,將/etc/metrika.xml
文件scp
到其他兩個節點並配置
<macros>
<replica>ch203</replica>
</macros>
對應的IP/域名
5.按照上面的指導配置完成之后,在每個節點都啟動clickhouse的服務,和單節點啟動一樣,當出現無誤后,查看clickhouse的log文件,如果出現以下信息,就基本沒有問題
6.進一步驗證
在每個節點啟動clickhouse客戶端,和單節點啟動完全一樣,查詢集群信息
select * from system.clusters;
ch201
節點應該是以下信息:
ch202
節點應該是以下信息:
ch203
節點應該是以下信息:
可以看到紅框內的信息基本相同,但是也有細微差別,紅框外是之前的單節點的信息
至此,clickhouse的集群部署完全成功,生產環境針對數據量可能還需要一些額外的配置