当前位置: 首页 > news >正文

Clickhouse笔记(二) 集群搭建

0.集群规划

操作系统使用ubuntu2204server,8C8G100G。

节点分片部署
192.168.50.5分片1副本1clickhouse-server/clickhouse-client/keeper
192.168.50.6分片1副本2clickhouse-server/clickhouse-client/keeper
192.168.60.7分片2副本1clickhouse-server/clickhouse-client/keeper
192.168.50.25分片2副本2clickhouse-server/clickhouse-client

四台主机都作为数据分片,每个数据分片有两个副本。keeper 部署到三个节点上,奇数节点用于实现 ClickHouse Keeper 中要求的票选数。

1.准备节点

  • 准备操作系统 ubuntu 或centos,尽量和你生产环境的操作系统版本一致
  • 统一时区,配置NTP(测试环境可以简略,只要节点的时区统一即可)
  • 配置ssh免密登录(可选)
1.1 使用指定的版本

根据实际情况安装指定版本的clickhouse.使用命令curl https://clickhouse.com/ | sh安装的clickhouse默认是最新版本的,但是有时我们需要安装指定的稳定版本,登录 https://packages.clickhouse.com/ 可以找到clickhouse为不同linux发行版本准备的各个版本的.

1.2 使用第三方版本

也可以使用Altinity的稳定版本 https://builds.altinity.cloud/

sudo apt update
sudo apt install -y curl gnupg2 apt-transport-https ca-certificates dialog
sudo sh -c 'mkdir -p /usr/share/keyrings && curl -s https://builds.altinity.cloud/apt-repo/pubkey.gpg | gpg --dearmor > /usr/share/keyrings/altinity-archive-keyring.gpg'
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/altinity-archive-keyring.gpg] https://builds.altinity.cloud/apt-repo stable main" > /etc/apt/sources.list.d/altinity.list'
sudo apt update
sudo apt install -y clickhouse-server clickhouse-client

v24.4.1.2088-stable

🖊 上面两种安装方式任选一种,在每台服务器上安装clickhouse。

安装完成后使用下面的命令启动clickhouse.

sudo -u alfiy clickhouse server

也可以以服务的方式启动

sudo service clickhouse-server start

2.配置集群

注意,ClickHouse 要求每个分片的每个副本必须配置在单独的实例上,也就是说在整个集群范围内,一共有多少个副本,就需要创建多少个 ClickHouse 实例。最佳实践是3分片2副本6实例。

2.0 修改hosts

如果在clickhouse的配置中,使用了域名配置而不是IP地址,除非你的域名真实存在,否则需要修改本机的hosts文件。由于我同时测试了使用域名和IP两种配置方式,所以在本例中需要同时修改四个节点的hosts文件。

打开/etc/hosts文件,添加以下内容。

192.168.50.5 node1
192.168.50.6 node2
192.168.50.7 node3
192.168.50.25 node4

修改完成后,可以使用ping node1命令查看hosts是否生效,如果生效就能够ping的通。

2.1修改node1的配置

在node2的/etc/clickhouse-server/config.xml文件的标签中添加以下内容。

    <!-- 添加以下条目以允许通过网络接口进行外部通信。 --><listen_host>0.0.0.0</listen_host><!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。--><keeper_server><tcp_port>9181</tcp_port><server_id>1</server_id><log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path><snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path><coordination_settings><operation_timeout_ms>10000</operation_timeout_ms><session_timeout_ms>30000</session_timeout_ms><raft_logs_level>warning</raft_logs_level></coordination_settings><raft_configuration><server><id>1</id><hostname>192.168.50.5</hostname><port>9234</port></server><server><id>2</id><hostname>192.168.50.6</hostname><port>9234</port></server><server><id>3</id><hostname>192.168.50.7</hostname><port>9234</port></server></raft_configuration></keeper_server><!-- 指定实例所使用的 ClickHouse Keeper,可以使用域名也可以使用IP地址 --><zookeeper><node><host>192.168.50.5</host><port>9181</port></node><node><host>192.168.50.6</host><port>9181</port></node><node><host>192.168.60.7</host><port>9181</port></node></zookeeper><remote_servers><!-- cluster_2S_2R 标签为集群名称,可以自定义但集群中的节点保持一致 --><cluster_2S_2R><shard><replica><host>192.168.50.5</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>192.168.50.6</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>192.168.50.7</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>192.168.50.25</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R></remote_servers><macros><!-- shard标签为分片数,replica为副本数 --><shard>01</shard><replica>01</replica></macros>

🖊 <server_id>1</server_id> 对应node1 <server_id>2</server_id>对应node2<server_id>3</server_id>对应node3

2.2 修改node2的配置

在node2的/etc/clickhouse-server/config.xml文件的标签中添加以下内容。

    <!-- 添加以下条目以允许通过网络接口进行外部通信。 --><listen_host>0.0.0.0</listen_host><keeper_server><tcp_port>9181</tcp_port><server_id>2</server_id><log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path><snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path><coordination_settings><operation_timeout_ms>10000</operation_timeout_ms><session_timeout_ms>30000</session_timeout_ms><raft_logs_level>warning</raft_logs_level></coordination_settings><!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。--><raft_configuration><server><id>1</id><hostname>node1</hostname><port>9234</port></server><server><id>2</id><hostname>node2</hostname><port>9234</port></server><server><id>3</id><hostname>node3</hostname><port>9234</port></server></raft_configuration></keeper_server><!-- 指定实例所使用的 ClickHouse Keeper 可以使用IP也可以使用域名,或者在hosts文件中配置域名 --><zookeeper><node><host>node1</host><port>9181</port></node><node><host>node2</host><port>9181</port></node><node><host>node3</host><port>9181</port></node></zookeeper><remote_servers><cluster_2S_2R><shard><replica><host>node1</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node2</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>node3</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node4</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R></remote_servers><macros><shard>01</shard><replica>02</replica></macros>
2.3 修改node3的配置

在node3的/etc/clickhouse-server/config.xml文件的标签中添加以下内容。

    <!-- 添加以下条目以允许通过网络接口进行外部通信。 --><listen_host>0.0.0.0</listen_host><keeper_server><tcp_port>9181</tcp_port><server_id>2</server_id><log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path><snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path><coordination_settings><operation_timeout_ms>10000</operation_timeout_ms><session_timeout_ms>30000</session_timeout_ms><raft_logs_level>warning</raft_logs_level></coordination_settings><!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。--><raft_configuration><server><id>1</id><hostname>node1</hostname><port>9234</port></server><server><id>2</id><hostname>node2</hostname><port>9234</port></server><server><id>3</id><hostname>node3</hostname><port>9234</port></server></raft_configuration></keeper_server><!-- 指定实例所使用的 ClickHouse Keeper 可以使用IP也可以使用域名,或者在hosts文件中配置域名 --><zookeeper><node><host>node1</host><port>9181</port></node><node><host>node2</host><port>9181</port></node><node><host>node3</host><port>9181</port></node></zookeeper><remote_servers><cluster_2S_2R><shard><replica><host>node1</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node2</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>node3</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node4</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R></remote_servers><macros><shard>02</shard><replica>01</replica></macros>

从以上配置文件中可以看出,node1,node2,node3的区别只是<macros></macros>标签中的区别。

2.4 修改node4的配置

在node4的/etc/clickhouse-server/config.xml文件的标签中添加以下内容。

<!-- 添加以下条目以允许通过网络接口进行外部通信。 -->
<listen_host>0.0.0.0</listen_host><!-- 指定实例所使用的 ClickHouse Keeper -->
<zookeeper><node><host>node1</host><port>9181</port></node><node><host>node2</host><port>9181</port></node><node><host>node3</host><port>9181</port></node>
</zookeeper><remote_servers><cluster_2S_2R><shard><replica><host>node1</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node2</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>node3</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node4</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R>
</remote_servers>
<macros><shard>02</shard><replica>02</replica>
</macros>

3.查看集群

集群启动后,可以使用clickhouse client登录客户端,使用以下命令查看集群的相关信息。

SHOW CLUSTERS;
SELECT *
FROM system.zookeeper
WHERE path IN ('/', '/clickhouse');

这个查询时间有点长

SELECTcluster,shard_num,replica_num,host_name,is_local,user,database_shard_name,database_replica_name
FROM system.clusters;

在这里插入图片描述

在这里插入图片描述

相关文章:

Clickhouse笔记(二) 集群搭建

0.集群规划 操作系统使用ubuntu2204server&#xff0c;8C8G100G。 节点分片部署192.168.50.5分片1副本1clickhouse-server/clickhouse-client/keeper192.168.50.6分片1副本2clickhouse-server/clickhouse-client/keeper192.168.60.7分片2副本1clickhouse-server/clickhouse-c…...

华为云购买弹性云服务器(教程)

配置弹性云服务器 基础配置 实例 操作系统...

Python异常检测- 单类支持向量机(One-Class SVM)

系列文章目录 Python异常检测- Isolation Forest&#xff08;孤立森林&#xff09; python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子&#xff08;LOF&#xff09;算法 Python异常检测- DBSCAN 文章目录 系列文章目录前言一、On…...

基于SpringBoot+Vue+uniapp微信小程序的婚庆摄影小程序的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...

NGAC访问控制系列三:低代码产品NGAC运用与算法运用

目录 一、基于NGAC的低代码模型权限管理方案 二、多策略访问控制系统限制内部访问的线性时间算法 1、概述 2、权限控制图遍历算法 一、基于NGAC的低代码模型权限管理方案 NGAC在低代码平台的权限决策模型&#xff1a;功能权限数据权限 案例&#xff1a;对于七巧低代码开发平台&…...

Unity3D 面试题收录

Unity3D 客户端面试题收录&#xff08;持续更新~&#xff09; 面试题收录 本文收录一些对于 Unity3D 客户端可能遇到的面试题&#xff08;持续更新~&#xff09;&#xff0c;答案仅出于个人理解&#xff0c;如有偏差&#xff0c;希望指正。 Unity3D MonoBehaviour 生命周期…...

Jrebel热部署不生效解决

打开setting找到build底下的complier勾选 build project automatically 设置自动构建项目 打开setting找到Advanced Setting勾选Complier中的第一项 Jrebel panel中勾选需要热部署的项目模块 项目配置信息&#xff1a;Edit Configuration中进行编辑&#xff0c;配置如下图…...

软件测试学习笔记丨Selenium键盘鼠标事件ActionChains

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22515 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于sel…...

CI/CD(持续集成与持续交付)流水线

集成 Jenkins、GitLab Webhook、Nexus 和 RabbitMQ 可以形成一个全面的 CI/CD&#xff08;持续集成与持续交付&#xff09;流水线&#xff0c;结合消息队列可以创建事件驱动的工作流。以下是配置这四个工具以实现一个基本的 CI/CD 流程的详细步骤。 前置条件 Jenkins、GitLab、…...

分布式光伏发电有什么优劣势

分布式光伏发电是指在离电力消费地点较近的地方&#xff0c;通过安装光伏发电系统来发电。这种系统通常用于屋顶、地面或其他建筑物上&#xff0c;相比于集中式光伏发电系统&#xff0c;它有一些独特的优势和劣势&#xff1a; 优势&#xff1a; 地理适应性&#xff1a; 分布式…...

Spring Boot框架中的IO

1. 文件资源的访问与管理 在 Spring Boot 中&#xff0c;资源文件的访问与管理是常见的操作需求&#xff0c;比如加载配置文件、读取静态文件或从外部文件系统读取文件。Spring 提供了多种方式来处理资源文件访问&#xff0c;包括通过 ResourceLoader、Value 注解以及 Applica…...

DBeaver连接Hive教程

hive shell&#xff1a;通过hive shell来操作hive&#xff0c;但是至多只能存在一个hive shell&#xff0c;启动第二个会被阻塞&#xff0c;也就是说hive shell不支持并发操作。 基于JDBC等协议&#xff1a;启动hiveserver2&#xff0c;通过jdbc协议可以访问hive&#xff0c;hi…...

Vue-Router源码实现详解

1.Hash模式 hash就是url中#后面的部分hash改变时&#xff0c;页面不会从新加载&#xff0c;会触发hashchange事件&#xff0c;去监听hash改变&#xff0c;而且也会被记录到浏览器历史记录中vue-router的hash模式&#xff0c;主要是通过hashchange事件&#xff0c;根据hash值找…...

程序员节日的日期是10月24日‌程序员日

‌程序员节日的日期是10月24日。‌ 这一天被称为‌中国程序员日或‌1024程序员节&#xff0c;由‌博客园、‌CSDN等自发组织设立&#xff0c;旨在纪念程序员对科技世界的贡献。 程序员节日的由来和意义 1024程序员节的由来可以追溯到2010年&#xff0c;最初由网友提出设立一个…...

联邦学习中的数据异构性

在联邦学习&#xff08;Federated Learning, FL&#xff09;领域中&#xff0c; 异构数据&#xff08;Heterogeneous Data&#xff09; 是指不同客户端所持有的本地数据在特征分布、类别分布、数量等方面存在差异的数据。这种数据的异质性是联邦学习面临的一大挑战&#xff0c;…...

Python小程序 - 替换文件内容

1. 写入文件c:\a.txt 1&#xff09;共写入10行 2&#xff09;每行内容 0123456789 # 1 ls 0123456789 ln 10 with open("c:/a.txt", w,encodingUTF-8) as f:for i in range(ln):f.write(ls\n)######################################### 2 ln 10…...

k8s备份恢复(velero)

velero简介 velero官网&#xff1a; https://velero.io/ velero-github&#xff1a; https://github.com/vmware-tanzu/velero velero的特性 备份可以按集群资源的子集&#xff0c;按命名空间、资源类型标签选择器进行过滤&#xff0c;从而为备份和恢复的内容提供高度的灵活…...

LED户外屏:面对复杂环境的七大挑战

户外LED显示屏作为现代城市广告和信息传播的重要媒介&#xff0c;其应用范围越来越广泛。然而&#xff0c;与室内环境相比&#xff0c;户外环境的复杂多变对LED显示屏提出了更高的要求。本文将探讨户外LED显示屏在设计和应用过程中必须考虑的七个关键问题。 1. 高分辨率 户外LE…...

LabVIEW自动化流动返混实验系统

随着工业自动化的不断发展&#xff0c;连续流动反应器在化工、医药等领域中的应用日益广泛。传统的流动返混实验操作复杂&#xff0c;数据记录和处理不便&#xff0c;基于LabVIEW的全自动流动返混实验系统能自动测定多釜反应器、单釜反应器和管式反应器的停留时间分布&#xff…...

【性能优化】安卓性能优化之CPU优化

【性能优化】安卓性能优化之CPU优化 CPU优化及常用工具原理与文章参考常用ADB常用原理、监控手段原理监控手段多线程并发解决耗时UI相关 常见场景排查CPU占用过高常用系统/开源分析工具AndroidStudio ProfilerSystraceBtracePerfettoTraceView和 Profile ANR相关ANR原理及常见场…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中&#xff0c;我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统&#xff0c;为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢&#xff0c;导致报错 背景 想学习electron框架做个桌面应用&#xff0c;卡在了安装依赖&#xff08;无语了&#xff09;。。。一开始以为node版本或者npm版本太低问题&#xff0c;调整版本后还是报错。偶尔执行install命令后&#xff0c;可以开始下载…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...