使用Ckman部署ClickHouse集群介紹
1. Ckman簡介
ClickHouse Manager是一個為ClickHouse數據庫量身定制的管理工具,它是由擎創科技數據庫團隊主導研發的一款用來管理和監控ClickHouse集群的可視化運維工具。目前該工具已在github上開源,開源地址為:github.com/housepower/ckman。它通過提供一個直觀的圖形用戶界面(GUI),極大地簡化了數據庫的管理和操作。這款工具支持多種功能,包括但不限于SQL查詢編輯器、數據可視化、實時監控、性能分析、備份與恢復等。
用戶可以通過ClickHouse Manager輕松執行復雜的SQL查詢,同時工具內置的編輯器支持語法高亮和自動補全,提高了編寫查詢的效率。數據可視化功能使用戶能夠通過圖表直觀地理解數據趨勢和模式。實時監控則允許用戶跟蹤數據庫的性能指標,及時發現并解決潛在問題。
此外,ClickHouse Manager還提供了強大的性能分析工具,幫助用戶識別查詢瓶頸和優化數據庫配置。備份與恢復功能確保了數據的安全性,即使在系統故障時也能快速恢復數據。總的來說,ClickHouse Manager是一個功能全面、操作簡便的數據庫管理工具,適合各種規模的ClickHouse用戶使用。
2. 為什么要有ckman
摘取官方文檔介紹如下:
我們不妨思考一下這樣的場景:如果要部署一個ClickHouse
集群,需要怎么做?
首先,我們需要在所有ClickHouse
節點上安裝ClickHouse
的rpm
包,然后,需要修改配置文件,包括但不限于config.xml
、users.xml
、metrika.xml
。注意,是所有節點上都要修改,修改完成后需要依次啟動各個節點。
當集群規模不大,這些操作手動去完成可能不覺得有什么,但是如果集群規模比較大,單個集群的節點達到了上百臺甚至上千臺,這時候要手工去每臺機器上去操作,顯然變得不太現實。
如果需要往集群增加一個節點呢?
我們需要在已有的節點上的metrika.xml
配置文件中加上該節點,然后在新增節點上安裝rpm
包,修改metrika.xml
,啟動ClickHouse
服務,最后還要同步其他節點上的schema
表結構,至此才能完成。
刪除節點亦如是。
如果要升級集群呢?我們不僅需要在每個節點上重新安裝升級rpm
包,還需要考慮一些其他的問題:需不需要停服務?如果升級失敗了怎么辦?
總之,ClickHouse
的集群運維,如果靠人工去做,不僅繁瑣,容易出現各種問題,當集群規模變大后,也變得不切實際。
這時候,ckman
的出現,就可以完美解決上述的問題。ckman
將這些運維操作都集成在管理界面中,用戶只需要在web
界面上通過簡單的信息配置,點擊鼠標,就可以完成所有的配置工作,而無需關注其他細節,也減少了出錯的可能。
3. 主要功能
-
集群管理:
- 安裝和卸載ClickHouse集群。
- 添加和刪除集群節點。
- 自動化配置和部署。
-
監控:
- 集群狀態監控。
- 節點健康檢查。
- 性能指標監控。
-
運維工具:
- 數據備份和恢復。
- 數據庫和表管理。
- SQL查詢執行和日志查看。
-
用戶管理:
- 創建和管理用戶。
- 設置用戶權限和角色。
-
配置管理:
- 統一管理ClickHouse配置文件。
- 動態更新配置。
4. 優勢
- 簡化管理:CKMan提供了簡化的ClickHouse集群管理功能,減少了手動配置和運維的復雜度。
- 監控和報警:集成了監控和報警功能,幫助運維人員及時發現和解決問題。
- 用戶友好:圖形化界面和命令行工具兼備,滿足不同用戶的需求。
架構設計
5. 安裝ckman
5-1. 下載ckman
ckman官方github項目下載地址:https://github.com/housepower/ckman/releases
,可以根據需求自行下載需要的版本即可,對于部署clickhouse沒有嚴格要求必須使用某個版本ckman。
下載示例:
wget https://github.com/housepower/ckman/releases/download/v3.0.8/ckman-3.0.8.x86_64.rpm
5-2. 安裝ckman
[root@ops01 clickhouse]# wget https://github.com/housepower/ckman/releases/download/v3.0.8/ckman-3.0.8.x86_64.rpm
[root@ops01 clickhouse]# rpm -ivh ckman-3.0.8.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...1:ckman-0:3.0.8-1 ################################# [100%]# 安裝完畢后,相關的路徑
[root@ops01 clickhouse]# whereis ckman
ckman: /usr/sbin/ckman /etc/ckman /usr/local/bin/ckman# 配置相關路徑
[root@ops01 clickhouse]# ll /etc/ckman/
total 12
drwxr-xr-x 2 ckman ckman 4096 Jul 2 16:23 conf
drwxr-xr-x 2 ckman ckman 4096 Jul 2 16:17 dbscript
drwxr-xr-x 2 ckman ckman 4096 Jul 2 16:17 package# 可執行文件
[root@ops01 clickhouse]# ls -l /usr/local/bin/|grep ckman
-rwxr-xr-x 1 root root 118916632 May 27 16:11 ckman
-rwxr-xr-x 1 root root 23208233 May 27 16:11 ckmanpasswd# 日志存儲路徑
[root@ops01 clickhouse]# ll /var/log/ckman/
total 72
-rw-r----- 1 ckman ckman 8866 Jul 2 17:00 ckman.err.log
-rw-r----- 1 ckman ckman 55478 Jul 2 17:00 ckman.log
5-3. ckman服務啟停
# 啟動服務:systemctl start ckman
[root@ops01 clickhouse]# systemctl start ckman[root@ops01 clickhouse]# ps -ef | grep ckman | grep -v grep
ckman 3939 1 0 16:20 ? 00:00:00 /usr/local/bin/ckman -c=/etc/ckman/conf/ckman.hjson -p=/run/ckman/ckman.pid -l=/var/log/ckman/ckman.log -d[root@ops01 clickhouse]# tail -15 /var/log/ckman/ckman.log "Cron": {"Enabled": true,"sync_logic_schema": "0 * * * * ?","watch_cluster_status": "0 */3 * * * ?","sync_dist_schema": "30 */10 * * * ?"}
}
2024-07-02T16:20:39.119+0800 WARN local/local.go:460 file [/etc/ckman/conf/clusters.json] is not exist
2024-07-02T16:20:39.119+0800 INFO runner/runner.go:32 runner service starting...
2024-07-02T16:20:39.119+0800 INFO ckman/main.go:138 start http server 192.170.0.150:8808 success[root@ops01 clickhouse]# netstat -tnlpu|grep 8808
tcp6 0 0 :::8808 :::* LISTEN 3939/ckman
服務狀態查看 : systemctl status ckman
停止服務 : systemctl stop ckman
重啟服務 : systemctl restart ckman
6. ckman安裝部署clickhouse
6-1. 準備工作
- 機器準備
本次部署采用了5臺服務器進行集群部署,建議至少3臺。
- 配置集群免密
# 驗證集群操作是否免密
[root@ops01 ~]# for i in ops01 ops02 ops03 ops04 ops04;do ssh $i "hostname && date" ;done
ops01
Tue Jul 2 18:39:33 CST 2024
ops02
Tue Jul 2 18:39:33 CST 2024
ops03
Tue Jul 2 18:39:33 CST 2024
ops04
Tue Jul 2 18:39:33 CST 2024
ops04
Tue Jul 2 18:39:33 CST 2024
ckman機器到各服務器時間無需密碼訪問
ssh-keygen -t rsa
;
ssh-copy-id 192.168.1.1
- 部署zookeeper服務
zookeeper服務搭建部署可參考文章:https://blog.csdn.net/wt334502157/article/details/115213645
- 創建安裝包存放目錄并拷貝rpm安裝包
安裝包官方下載地址:https://packages.clickhouse.com/rpm/stable/
根據自己的需求進行搜索下載即可,注意底部有next下一頁
本次采用了
23.9.1
版本wget https://packages.clickhouse.com/rpm/stable/clickhouse-client-23.9.1.1854.x86_64.rpm wget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-23.9.1.1854.x86_64.rpm wget https://packages.clickhouse.com/rpm/stable/clickhouse-server-23.9.1.1854.x86_64.rpm wget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-dbg-23.9.1.1854.x86_64.rpm
創建目錄,把安裝包放入指定目錄內,路徑是ckman探尋的目錄地址,并非隨意指定
[root@ops01 package]# mkdir -p /etc/ckman/package/clickhouse
[root@ops01 package]# chmod a+w /etc/ckman/package/clickhouse
[root@ops01 package]# cd /etc/ckman/package/clickhouse
[root@ops01 clickhouse]# cp /opt/software/clickhouse/clickhouse-*rpm .
[root@ops01 clickhouse]# ls
clickhouse-client-23.9.1.1854.x86_64.rpm clickhouse-common-static-dbg-23.9.1.1854.x86_64.rpm
clickhouse-common-static-23.9.1.1854.x86_64.rpm clickhouse-server-23.9.1.1854.x86_64.rpm
- 所有服務器創建數據存放目錄
[root@ops01 ~]# for i in ops01 ops02 ops03 ops04 ops04;do ssh $i "mkdir -p /data/clickhouse/data" ;done
也可逐個服務器登錄創建
mkdir -p /data/clickhouse/data
6-2. 頁面部署clickhouse集群
ckman功能雖然較多,但一般常用ckman部署clickhouse集群,內嵌的Prometheus監控或者nacos配置等等,可根據需求。生產情況經常會額外單獨的監控體系來監控服務器和服務。這里不展開介紹監控等服務的集成。
頁面訪問方式:IP+8808端口
http://192.170.0.150:8808
ckman默認的登錄用戶為
ckman
,密碼為Ckman123456!
- 集群配置
- 集群基本信息配置
<注意>:左上角可以切換成中文界面;截圖中的名稱均可根據需求自定義
物理集群名: 集群的名字,注意不要和ckman已有的名字重合
安裝包類型: 安裝包類型,用來區分平臺和架構,不需要自己填寫,上傳安裝包后可通過下拉框選擇;只要把rpm包cp到
/etc/ckman/package/clickhouse
路徑下,即可自動識別出。在部署集群之前,需要先上傳安裝包。部署的集群版本是基于上傳安裝包的版本的。如果選擇的平臺和架構不正確,如在arm的機器上部署x86的安裝包,則不會成功。
ClickHouse版本: ck的版本,不需要自己填寫,通過下拉列表選擇,下拉列表中會列出ckman服務器中所有的安裝包版本。
邏輯集群名:邏輯集群名字,可以指定,也可以不指定
TCP Port: clickhouse的TCP端口,默認是9000,當然也可以自己指定
ClickHouse Node List: clickhouse節點列表,支持簡寫
- 集群分片、副本配置
注意不是在一個分片中添加多個副本IP,是點擊集群節點配置,添加多個分片
- 如果開啟了副本,默認是1個
shard
2個副本,如果節點是奇數,則最后一個shard
為1
個副本。- 如果要增加節點的副本數,可通過增加節點完成,創建集群時最多只能指定2個副本
- 如果沒有開啟副本,則有幾個節點就有幾個
shard
- 注意:集群是否支持副本在部署集群時就已經決定了,后續不可更改
- zookeeper相關信息配置
ckman
并沒有提供zookeeper
集群搭建的功能,因此在部署集群之前,需要將zookeeper
集群搭建好
- 部署連接以及存儲相關配置
<注意>:數據存儲路徑中,結尾一定要
/
結尾默認用戶密碼可自己更改
在clickhouse使用時,會有一個default用戶,這里定義了默認密碼,后續即可通過密碼訪問
示例:
clickhouse-client --host=192.170.0.150 --port=9000 --user=default --password=bigdata
此處設置的密碼即為client連接的password
系統賬號名和系統賬號密碼,即搭建集群的用戶信息,因為需要分發安裝包并安裝,還需要集群批量操作,認證基于此處配置。
配置以上信息后,點擊創建,等待集群部署完畢,即clickhouse部署完成
- 集群登錄驗證
[app@ops01 ~]$ clickhouse-client --host=192.170.0.150 --port=9000 --user=default --password=bigdata
ClickHouse client version 23.9.1.1854 (official build).
Connecting to 192.170.0.150:9000 as user default.
Connected to ClickHouse server version 23.9.1 revision 54466.ops01 :) show databases;SHOW DATABASESQuery id: d3fd4619-366b-4b54-911a-1bf2b373b116┌─name───────────────┐
│ INFORMATION_SCHEMA │
│ default │
│ information_schema │
│ system │
└────────────────────┘4 rows in set. Elapsed: 0.002 sec. ops01 :) use default;USE defaultQuery id: 346e029f-c462-4732-9b04-4a713e420a36Ok.0 rows in set. Elapsed: 0.001 sec. ops01 :) show tables;SHOW TABLESQuery id: 1c4e235f-10dd-46fc-b8cb-2888c89c0ff5┌─name──────────┐
│ example_wangt │
└───────────────┘1 row in set. Elapsed: 0.004 sec. ops01 :) select * from example_wangt;SELECT *
FROM example_wangtQuery id: 6daf3b4c-111b-4756-8acc-e65504622f05┌─id─┬─name────┬─age─┐
│ 1 │ Alice │ 30 │
│ 2 │ Bob │ 25 │
│ 3 │ Charlie │ 28 │
│ 4 │ David │ 35 │
│ 5 │ Eva │ 22 │
│ 6 │ Frank │ 40 │
│ 7 │ Grace │ 27 │
│ 8 │ Hannah │ 33 │
│ 9 │ Ivy │ 29 │
│ 10 │ Jack │ 31 │
└────┴─────────┴─────┘10 rows in set. Elapsed: 0.004 sec.