clickhouse高可用可拓展部署
clickhouse高可用&可拓展部署
1.部署架构
1.1高可用架构

1.2硬件资源
| 部署服务 | 节点名称 | 节点ip | 核数 | 内存 | 磁盘 |
| zookeeper | zk-01 | / | 4c | 8G | 100G |
| zk-02 | / | 4c | 8G | 100G | |
| zk-03 | / | 4c | 8G | 100G | |
| clikehouse | ck-01 | / | 32c | 128G | 2T |
| ck-02 | / | 32c | 128G | 2T | |
| ck-03 | / | 32c | 128G | 2T | |
| ck-04 | / | 32c | 128G | 2T |
1.3扩容
1.3.1节点扩容
新增一个分片,2个副本,扩容后的架构图如下:

1.3.2资源扩容
Cpu和内存直接在云平台上扩容,磁盘使用lvm扩容数据目录大小
1.4 混合部署

1.5 负载均衡&读写分离
采用chproxy来做负载均衡和读写分离,具体架构如下:

2.安装部署
2.1部署规划
采用1.4混合部署方式,3台虚拟机,每个节点部署2个clickhouse实例和一个zookeeper。另外增加一台虚拟机用来部署chproxy,用做负载均衡和读写分离。具体部署规划如下:
| 部署服务 | 实例名称 | 节点ip | 端口 | 备注 |
| zookeeper | zk-01 | 10.9.135.37 | 2181 | |
| zk-02 | 10.9.135.133 | 2181 | ||
| zk-03 | 10.9.135.36 | 2181 | ||
| clikehouse | ck-01 | 10.9.135.37 | 8123 | 分片1副本1 |
| ck-02 | 10.9.135.133 | 8123 | 分片2副本1 | |
| ck-03 | 10.9.135.36 | 8123 | 分片3副本1 | |
| ck-04 | 10.9.135.133 | 8223 | 分片1副本2 | |
| ck-05 | 10.9.135.36 | 8223 | 分片2副本2 | |
| ck-06 | 10.9.135.37 | 8223 | 分片3副本2 | |
| chproxy | chproxy | 10.9.135.60 | 9090 |
2.2准备工作
- --修改hostname
- sudo hostnamectl set-hostname ck01
- sudo hostnamectl set-hostname ck02
- sudo hostnamectl set-hostname ck03
- --hosts配置
- 10.9.135.37 ck01
- 10.9.135.133 ck02
- 10.9.135.36 ck03
- --关闭防火墙
- # 1.关闭防火墙
- service iptables stop
- chkconfig iptables off
- chkconfig ip6tables off
- # 2.关闭selinux
- vi /etc/sysconfig/selinux
- 修改内容:【SELINUX=disabled】
- --免密登录
- 1、在原机器生成RSA密钥和公钥
- ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa
- 2、然后将~/.ssh/id_rsa.pub内容粘贴到目标机器的~/.ssh/authorized_keys
2.3jdk安装部署
- --安装包解压并修改配置文件:
- export JAVA_HOME=/usr/java/jdk1.8
- export JRE_HOME=$JAVA_HOME/jre
- export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
2.4zookeeper安装部署
- --安装zk
- wget http://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz
- mv /data/apache-zookeeper-3.6.0-bin /usr/local/zookeeper
- --创建目录:
- mkdir -p /data/zookeeper/data
- mkdir -p /data/zookeeper/logs
- 机器1指定节点号1,以此类推:
- echo '1' > /data/zookeeper/data/myid
- 修改zoo.cfg文件,内容如下:
- --------------------------------------------------
- # 基本时间单位, 毫秒值
- tickTime=2000
- # tickTime的倍数,follower和leader之间的最长心跳时间
- initLimit=30000
- # tickTime的倍数,leader和follower之间发送消息, 请求和应答的最大时间
- syncLimit=10
- # 数据目录
- dataDir=/data/zookeeper/data
- # 日志目录,如果没设定,默认和dataDir相同
- dataLogDir=/data/zookeeper/logs
- # 监听client连接的端口号
- clientPort=2181
- # zookeeper最大连接
- maxClientCnxns=2000
- # 最大的会话超时时间
- maxSessionTimeout=60000000
- # 保留的文件数目,默认3个
- autopurge.snapRetainCount=10
- # 自动清理snapshot和事务日志,清理频率,单位是小时
- autopurge.purgeInterval=1
- # 等待处理的最大请求数量
- globalOutstandingLimit=200
- # 日志文件大小Kb,切换快照生成日志
- preAllocSize=131072
- #两次事务快照之间可执行事务的次数,默认的配置值为100000
- snapCount=3000000
- # leader是否接受client请求,默认为yes即leader可以接受client的连接,当节点数为>3
相关文章:
clickhouse高可用可拓展部署
clickhouse高可用&可拓展部署 1.部署架构 1.1高可用架构 1.2硬件资源 部署服务 节点名称 节点ip 核数 内存 磁盘 zookeeper zk-01 / 4c 8G 100G zk-02 / 4c 8G 100G zk-03 / 4c 8G 100G clikehouse ck-01 / 32c 128G 2T ck-02 / 32c 128G 2T ck-03 / 32c 128G 2T ck-04 /…...
QT中QDomDocument读写XML文件
一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…...
sql盲注
文章目录 布尔盲注时间盲注 布尔盲注 介绍:在网页只给你两种回显的时候是用,类似于布尔类型的数据,1表示正确,0表示错误。 特点:思路简单,步骤繁琐且麻烦。 核心函数: length()函数substr()函…...
星网安全产品线成立 引领卫星互联网解决方案创新
2024年6月12日,盛邦安全(688651)成立星网安全产品线,这是公司宣布全面进入以场景化安全、网络空间地图和卫星互联网安全三大核心能力驱动的战略2.0时代业务落地的重要举措。 卫星互联网技术的快速发展,正将其塑造为全球…...
Adam自适应动量优化算法
Adam(Adaptive Moment Estimation)是一种结合了动量法和自适应学习率思想的优化算法,特别适用于训练神经网络和深度学习模型。以下是对Adam调整学习率的详细介绍及具体例子。 一、Adam调整学习率介绍 自适应学习率: Adam算法的核…...
Mac OS系统中Beyond Compare 4破解方式
文章出处 https://blog.csdn.net/qq_42418042/article/details/137544113 前言 记录实操过程,以防以后找不到了~ 实际原理是启动时删除文件,实现无限试用 实操过程 下载安装包 官网链接 https://www.scootersoftware.com/download.php 解压、移动到应…...
6000元最好的家用投影仪:当贝X5S Pro六千元配置最高画质最强
数码家电品牌发展迅速,投影同样也是一种更新迭代较快的产品类型,有时候去年还比较火的产品,今年就会被别的产品取代,就比如之前灯泡投影一直被认为是好产品的代表,但是现在国产激光投影的销量反而更高。一般来说6000元…...
#### golang中【堆】的使用及底层 ####
声明,本文部分内容摘自: Go: 深入理解堆实现及应用-腾讯云开发者社区-腾讯云 数组实现堆 | WXue 堆(Heap)是实现优先队列的数据结构,Go提供了接口和方法来操作堆。 应用 package mainimport ("container/heap&q…...
OpenAI Gym Atari on Windows
题意:在Windows系统上使用OpenAI Gym的Atari环境 问题背景: Im having issues installing OpenAI Gym Atari environment on Windows 10. I have successfully installed and used OpenAI Gym already on the same system. It keeps tripping up when t…...
Java进阶----接口interface
接口 接口概述 接口是一种规范,使用接口就代表着要在程序中制定规范. 制定规范可以给不同类型的事物定义功能,例如: 利用接口,给飞机、小鸟制定飞行规范,让其都具备飞行的功能;利用接口,给鼠…...
【网络协议】ISIS
ISIS IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)协议是一种用于在自治系统(AS)内部进行路由选择的链路状态路由协议。它最初是为OSI(开放系统互连)网络设计的&…...
一.4 处理器读并解释储存在内存中的指令
此刻,hello.c源程序已经被编译系统翻译成了可执行目标文件hello,并被存放在硬盘上。要想在Unix系统上运行该可执行文件,我们将它的文件名输入到称为shell的应用程序中: linux>./hello hello, world linux> shell是一个命令…...
【Android面试八股文】Android性能优化面试题:怎样检测函数执行是否卡顿?
文章目录 卡顿一、可重现的卡顿二、不可重现的卡顿第一种方案: 基于 Looper 的监控方法第二种方案:基于 Choreographer 的监控方法第三种方案:字节码插桩方式第四种方案: 使用 JVMTI 监听函数进入与退出总结相关大厂的方案ArgusAPMBlockCanaryQQ空间卡慢组件Matrix微信广研参…...
C语言7 控制语句
目录 1. 条件语句 if 语句 if-else 语句 if-else if-else 语句 switch 语句 2. 循环语句 for 循环 while 循环 do-while 循环 3. 跳转语句 break 语句 continue 语句 return 语句 goto 语句 1. 条件语句 if 语句 if语句根据给定条件的真或假来决定是否执行某段…...
go mod 依赖管理补充2
依赖包的版本问题,别的开发语言有没有类似的问题?是怎么解决的? 举例:java java的依赖包的版本问题,通过Maven模块来操作,可以指定依赖包版本号,如下: go.mod 文件 go.mod文件是G…...
【Git】取消追踪多个文件或目录
文章目录 场景方法1. 添加到 .gitignore2. 从暂存区移除 示例1. 编辑 .gitignore 文件2. 从暂存区移除文件或目录 场景 清理:不再希望某些文件被 Git 追踪。配置忽略文件:通常配合 .gitignore 文件使用,以便以后这些文件不会被重新添加到索引…...
【Linux详解】进程等待 | 非阻塞轮询
引入: 为什么?是什么?怎么办 是什么? 进程等待是指父进程暂停自己的执行,直到某个特定的子进程结束或发生某些特定的事件。 为什么? 僵尸进程刀枪不入,不可被杀死,存在内存泄露…...
聊一下Maven打包的问题(jar要发布)
文章目录 一、问题和现象二、解决方法(1)方法一、maven-jar-pluginmaven-dependency-plugin(2)方法二、maven-assembly-plugin 一、问题和现象 现在的开发一直都是用spring boot,突然有一天,要自己开发一个…...
JavaScript中,正则表达式所涉及的api,解析、实例和总结
JS中正则的api包括以下: String#searchString#splitString#matchString#replaceRegExp#testRegExp#exec 1. String#search 查找输入串中第一个匹配正则的index,如果没有匹配的则返回-1。g修饰符对结果无影响 var string "abbbcbc"; var r…...
【计算机】同步/异步
同步/异步 在计算机科学和编程中,“同步”(Synchronization)是一种机制,用于协调不同进程或线程之间的操作,以避免竞态条件(race conditions)、死锁(deadlocks)和其他并…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...
