使用Ckman部署ClickHouse集群介绍
使用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.
相关文章:

使用Ckman部署ClickHouse集群介绍
使用Ckman部署ClickHouse集群介绍 1. Ckman简介 ClickHouse Manager是一个为ClickHouse数据库量身定制的管理工具,它是由擎创科技数据库团队主导研发的一款用来管理和监控ClickHouse集群的可视化运维工具。目前该工具已在github上开源,开源地址为&…...

「前端工具」postman接口测试工具详解
Postman 是一款流行的 API 开发工具,用于构建和测试 RESTful API。以下是 Postman 的一些关键特性和使用方法的详解: 1. 界面和基本操作 工作区:Postman 的主界面,用于显示集合、环境和全局变量。请求构建器:用于输入请求的 URL、HTTP 方法、请求头、请求体等。响应区:显…...

生成requirements.txt
pip install pipreqs pipreqs ./ --encodingutf-8 --force python导出requirements.txt的几种方法总结...

ubuntu ceph部署
ubuntu ceph部署 参考文档:http://docs.ceph.org.cn/start/ 节点配置 1个mon节点,3个osd节点 安装前准备 安装ceph-deploy 添加 release key wget -q -O- https://download.ceph.com/keys/release.asc | sudo apt-key add -添加Ceph软件包源&…...

2024.7.8
2024.7.8 【追逐影子的人,自己就是影子 —— 荷马】 Monday 六月初三 讲的根本听不懂好吧! 目前只写了三道题(但是黑色 确实是没见过这么抽象的数据结构 Gregor and the Two Painters Number of Components Equal LCM Subsets 这个lcm确实…...

Spring 外部jar包Bean自动装配
Spring 外部jar包Bean自动装配 背景介绍 公共代码模块被作为jar包引入业务项目,前者定义的bean即使添加了Component注解由于不会被扫描到也就无法被Spring管理。此处通过Spring SPI机制来完成 使用 spring.factories 在外部 jar 包中创建 spring.factories 文件&a…...

2通道音频ADC解码芯片ES7243L、ES7243E、ES7243,用于低成本实现模拟麦克风转换为IIS数字话筒
前言: 音频解码芯片某创参考价格: ES7243L 500:¥1.36 / 个 ES7243E 500:¥1.66 / 个 ES7243 500: ¥1.91 / 个 其中ES7243L工作电压为1.8V,与其他两款的3.3V工作电压不同&…...

uniapp跨域问题解决
找到menifest文件,在文件的最后添加如下代码: // h5 解决跨域问题"h5":{"devServer": {"proxy": {"/adminapi": {"target": "https://www.demo.com", // 目标访问网址"changeOrigin…...

[C++][ProtoBuf][Proto3语法][一]详细讲解
目录 1.字段规则2.消息类型的定义与使用1.定义2.使用 3.enum类型1.语法2.定义时注意3.代码 1.字段规则 消息的字段可以⽤下⾯⼏种规则来修饰: singular:消息中可以包含该字段零次或⼀次(不超过⼀次) proto3语法中,字段默认使⽤该规则 repeat…...

千古雄文《渔樵问对》原文、译文、解析
邵雍《渔樵问对》:开悟奇文,揭示世界的终极意义 【邵雍《渔樵问对》:开悟奇文,揭示世界的终极意义】 邵雍(1011年1月21日-1077年7月27日,宋真宗大中祥符四年十二月二十五日戌时生至神宗熙宁十…...

uniapp 开发备忘录-防坑指南
uniapp 开发备忘录-防坑指南 npm run dev:mp-weixin 编译微信小程序报错: [plugin:uni:mp-using-component] Expected ‘,’ or ‘}’ after property value in JSON at position 解决方案:升级uniapp 到最新 alpha 版。(2024年7月13日&am…...

Simple_ReAct_Agent
参考自https://www.deeplearning.ai/short-courses/ai-agents-in-langgraph,以下为代码的实现。 Basic ReAct Agent(manual action) import openai import re import httpx import os from dotenv import load_dotenv, find_dotenvOPENAI_API_KEY os.getenv(OPEN…...

window wsl安装ubuntu
文章目录 wsl安装ubuntu什么是wsl安装wsl检查运行 WSL 2 的要求将 WSL 2 设置为默认版本查看并安装linux WSL2的使用如何查看linux文件wsl如何使用代理:方法1:方法2:通过 DNS 隧道来配置 WSL 的网络 如何将 WSL 接入局域网并与宿主机同网段使用VScode连接…...

postmessage()在同一域名下,传递消息给另一个页面
这里是同域名下,getmessage.html(发送信息)传递消息给index.html(收到信息,并回传收到信息) index.html页面 <!DOCTYPE html> <html><head><meta http-equiv"content-type"…...

初始redis:在Ubuntu上安装redis
1.先切换到root用户 使用su命令切换到root 2.使用apt命令来搜索redis相关的软件包 命令:apt search redis 3.下载redis 命令: apt install redis 在Ubuntu 20.04中 ,下载的redis版本是redis5 4.查看redis状态 命令: netst…...

生物素结合金纳米粒子(Bt@Au-NPs ) biotin-conjugated Au-NPs
一、定义与特点 定义:生物素结合金纳米粒子,简称BtAu-NPs或biotin-conjugated Au-NPs,是指通过特定的化学反应或物理方法将生物素修饰到金纳米粒子表面,形成稳定的纳米复合材料。 特点: 高稳定性:生物素的修…...

LeetCode热题100刷题9:25. K 个一组翻转链表、101. 对称二叉树、543. 二叉树的直径、102. 二叉树的层序遍历
25. K 个一组翻转链表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), nex…...

PyJWT,一个基于JSON的轻量级安全通信方式的python库
目录 什么是JWT? JWT的构成 PyJWT库简介 安装PyJWT 生成JWT 验证JWT 使用PyJWT的高级功能 自定义Claims 错误处理 结语 什么是JWT? 在介绍PyJWT这个Python库之前,我们首先需要了解什么是JWT。JWT,全称JSON Web Token&am…...

Golang | Leetcode Golang题解之第223题矩形面积
题目: 题解: func computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 int) int {area1 : (ax2 - ax1) * (ay2 - ay1)area2 : (bx2 - bx1) * (by2 - by1)overlapWidth : min(ax2, bx2) - max(ax1, bx1)overlapHeight : min(ay2, by2) - max(ay1, by1)…...

新手怎么使用GitLab?
GitLab新手指南: GitLab 是一个非常强大的版本控制和项目管理平台,对于新手来说,开始使用可能会有些许挑战,但只要跟着以下步骤,相信你就能很快上手。 1. 注册与登录 访问网站:打开浏览器,访问 GitLab官网…...

表情包原理
https://unicode.org/Public/emoji/12.1/emoji-zwj-sequences.txt emoji 编码规则介绍_emoji编码-CSDN博客 UTS #51: Unicode Emoji C UTF-8编解码-CSDN博客 创作不易,小小的支持一下吧!...

技术难点思考SpringBoot如何集成Jmeter开发
技术难点思考SpringBoot如何集成Jmeter开发 需求概述 构建一个高性能的压测平台,该平台需通过Spring Boot框架调用JMeter进行自动化压力测试。 解决方案一:使用Runtime类调用外部进程 技术概述 Java的Runtime类提供了与操作系统交互的接口࿰…...

如何快速使用C语言操作sqlite3
itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源,拥抱国产化 一、sqlite3库介绍 sqlite3库可从官网下载,当前版本为sqlite3 3.45.3ht…...

网络模型介绍
网络模型在网络领域中主要指的是用于描述计算机网络系统功能的各种框架,其中最具代表性的两种模型是OSI七层参考模型和TCP/IP四层参考模型。以下是对这两种网络模型的详细解析: 一、OSI七层参考模型 OSI(Open System Interconnection&#…...

Codeforces Round #956 (Div. 2) and ByteRace 2024
A题:Array Divisibility 思路: 大水题 code: inline void solve() {int n; cin >> n;for (int i 1; i < n; i ) {cout << i << " \n"[i n];}return; } B题:Corner Twist 思路࿱…...

域名、网页、HTTP概述
目录 域名 概念 域名空间结构 域名注册 网页 概念 网站 主页 域名 HTTP URL URN URI HTML 超链接 发布 HTML HTML的结构 静态网页 特点 动态网页 特点 Web HTTP HTTP方法 GET方法 POST方法 HTTP状态码 生产环境下常见的HTTP状态码 域名 概念 IP地…...

Redisson分布式锁、可重入锁
介绍Redisson 什么是 Redisson?来自于官网上的描述内容如下! Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了…...

适合宠物饮水机的光电传感器有哪些
如今,随着越来越多的人选择养宠物,宠物饮水机作为一种便捷的饮水解决方案日益受到欢迎。为了确保宠物随时能够获得足够的水源,宠物饮水机通常配备了先进的光电液位传感器技术。 光电液位传感器在宠物饮水机中起着关键作用,主要用…...

『Python学习笔记』Python运行设置PYTHONPATH环境变量!
Python运行设置PYTHONPATH环境变量! 文章目录 一. Python运行设置PYTHONPATH环境变量!1. 解释2. 为什么有用3. 示例4. vscode配置 一. Python运行设置PYTHONPATH环境变量! export PYTHONPATH$(pwd) 是一个命令,用于将当前目录添…...

2024年06月CCF-GESP编程能力等级认证Python编程三级真题解析
本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…...