使用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 DATABASES
Query 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 default
Query id: 346e029f-c462-4732-9b04-4a713e420a36
Ok.
0 rows in set. Elapsed: 0.001 sec.
ops01 :) show tables;
SHOW TABLES
Query 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_wangt
Query 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.