Clickhouse 生产集群部署(Centos 环境)

devtools/2024/9/20 9:19:54/ 标签: clickhouse, centos, linux

文章目录

  • 机器环境配置
  • 安装 JDK 8
  • 安装 zookeeper
  • Clickhouse 集群安装
    • rpm 包离线安装
    • 修改全局配置
    • zookeeper配置
    • Shard和Replica设置
    • image.png添加macros配置
    • 启动 clickhouse
  • 验证
    • 创建集群数据库
    • 创建表并写入数据
    • 验证集群高可用

机器环境配置

三台 centos 机器, 部署 1分片3副本 clickhouse 集群

10.82.46.135
10.82.46.163
10.82.46.218

每一台都要配置

1. 关闭selinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/configsetenforce 02. 关闭防火墙
systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动systemctl mask firewalldsystemctl stop firewalldyum remove firewalld3. 配置系统打开文件数限制
vi  /etc/security/limits.conf #文件句柄数量的配置* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072vi /etc/security/limits.d/20-nproc.conf* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072

安装 JDK 8

每一台都要安装 JDK

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/binsource /etc/profileecho $JAVA_HOME
echo $CLASSPATH
echo $PATH

安装 zookeeper

zookeeper默认使用2181端口,集群模式还会用到2888、3888端口,建议zookeeper部署在内网环境中,服务器上关闭防火墙,分别在三台服务器上操作。

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/
cd /usr/local/apache-zookeeper-3.7.1-bin/
cp conf/zoo_sample.cfg conf/zoo.cfgmkdir -p /data/zookeepervim conf/zoo.cfg# 默认端口 8080 可能被占用
admin.serverPort=8888
# zookeeper 数据存储地址
dataDir=/data/zookeeper
# zookeeper 集群地址
server.1=10.82.46.135:2888:3888
server.2=10.82.46.163:2888:3888
server.3=10.82.46.218:2888:3888# 三台机 id
touch /data/zookeeper/myid
echo 1 > /data/zookeeper/myid
echo 2 > /data/zookeeper/myid
echo 3 > /data/zookeeper/myidexport ZK_HOME=/usr/local/apache-zookeeper-3.7.1-bin# 启动
./bin/zkServer.sh start# 查看日志
tail -f logs/zookeeper-root-server-iov-bigdata-autodrive-prod01.out# 停止
./bin/zkServer.sh stop# 查看状态
./bin/zkServer.sh status

Clickhouse 集群安装

rpm 包离线安装

1. 安装依赖包
yum install -y libtool *unixODBC*2. 分别下载client,static,static-dbg,keeper-dbg和server五个安装包,五个包的版本要一致,这里以23.3.2.37版本为例,把下载的五个包放到/usr/local/src 目录下。
wget https://packages.clickhouse.com/rpm/stable/clickhouse-client-23.3.2.37.x86_64.rpmwget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-23.3.2.37.x86_64.rpmwget https://packages.clickhouse.com/rpm/stable/clickhouse-server-23.3.2.37.x86_64.rpm3. 执行安装,如果说我们的机器上有旧版本的 clickhouse,该命令会将旧版本升级为我们当前安装的版本,期间会为我们创建一个 default 用户,我们需要输入default 密码
rpm -Uvh --replacepkgs clickhouse-common-static-23.3.2.37.x86_64.rpm clickhouse-client-23.3.2.37.x86_64.rpm clickhouse-server-23.3.2.37.x86_64.rpm

目录说明

  • /etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等
  • /etc/clickhouse-client:客户端配置,包括conf.d文件夹和config.xml文件
  • /var/lib/clickhouse:默认的数据存储目录,建议修改路径到大容量磁盘
  • /var/log/clickhouse-server:默认保存日志的目录,建议修改路径到大容量磁盘

新建存储目录

mkdir -p /data/clickhouse #数据存储目录mkdir -p /data/clickhouse/log #日志存放目录修改目录权限:chown clickhouse:clickhouse /data/clickhouse -Rchown clickhouse:clickhouse /data/clickhouse/log -Rchmod 755 /data/clickhouse -Rchmod 755 /data/clickhouse/log -R

设置数据库密码,默认用户名是:default

cp /etc/clickhouse-server/users.xml /etc/clickhouse-server/users.xml.bakvi /etc/clickhouse-server/users.xml<password>123456</password>:wq! #保存退出

修改全局配置

修改3台服务器ClickHouse配置文件 /etc/clickhouse-server/config.xml

cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml.bak  #备份

修改全局配置信息
vi /etc/clickhouse-server/config.xml

<timezone>Asia/Shanghai</timezone> <!-- #修改时区 --><listen_host>::</listen_host> <!-- #开启外部访问 --><path>/data/clickhouse/</path> <!-- #修改数据存放路径,默认是<path>/var/lib/clickhouse</path> --><level>information</level>   <!-- # 默认 trace --><log>/data/clickhouse/log/clickhouse-server.log</log><errorlog>/data/clickhouse/log/clickhouse-server.err.log</errorlog><size>1000M</size><count>10</count><!-- <max_open_files>1048576</max_open_files> #文件句柄数量的配置 --><http_port>8123</http_port> <!-- #http默认端口 --><tcp_port>9000</tcp_port> <!-- #tcp默认端口 --><max_concurrent_queries>4096</max_concurrent_queries>  <!-- #限制的是活跃查询的数量,是对正在执行或排队等待执行的查询进行限制 --><max_connections>4096</max_connections> <!-- #限制的是客户端连接的数量,是对同时与 ClickHouse 建立的连接进行限制 -->:wq! #保存退出

zookeeper配置

zookeeper 不一定要和ck的节点安装在同一台机器上,只要ck的节点能够访问zk即可。

<zookeeper><node><host>10.82.46.135</host><port>2181</port></node><node><host>10.82.46.163</host><port>2181</port></node><node><host>10.82.46.218</host><port>2181</port></node></zookeeper>

image.png

Shard和Replica设置

这里使用 1分片3副本演示

<perftest_1shards_3replicas>   <!-- #分片名称,自定义 --><shard><internal_replication>true</internal_replication>  <!--#只写一个副本,其他副本通过zookeeper进行同步,保证数据一致性 --><replica><host>10.82.46.135</host><port>9000</port></replica><replica><host>10.82.46.163</host><port>9000</port></replica><replica><host>10.82.46.218</host><port>9000</port></replica></shard>
</perftest_1shards_3replicas>

image.png添加macros配置

<macros><!-- #分片号3个节点都一样 --><shard>01</shard>   <!-- #副本名称,3个节点不能相同,填写各自的ip地址 --><replica>10.82.46.135</replica>  <!-- <replica>10.82.46.163</replica> --><!-- <replica>10.82.46.218</replica> -->
</macros>

clickhouse_253">启动 clickhouse

启动命令

systemctl start clickhouse-serversystemctl status clickhouse-serversystemctl stop clickhouse-serversystemctl restart clickhouse-serversystemctl enable clickhouse-server

clickhouse_server_267">启动 10.82.46.135 clickhouse server

image.png
进入 local 数据库控制台,查看集群(perftest_1shards_3replicas)信息,密码就是 rpm 安装的时候输入的密码

clickhouse-client --host 10.82.46.135 --port=9000select * from system.clusters where cluster = 'perftest_1shards_3replicas';SELECT * FROM system.zookeeper WHERE path = '/clickhouse';select * from system.macros;

image.png

clickhouse_server_280">启动 10.82.46.163 clickhouse server

image.png
进入 local 数据库控制台,查看集群(perftest_1shards_3replicas)信息,密码就是 rpm 安装的时候输入的密码

clickhouse-client --host 10.82.46.163 --port=9000select * from system.clusters where cluster = 'perftest_1shards_3replicas';SELECT * FROM system.zookeeper WHERE path = '/clickhouse';select * from system.macros;

image.png

clickhouse_server_293">启动 10.82.46.218 clickhouse server

进入 local 数据库控制台,查看集群(perftest_1shards_3replicas)信息,密码就是 rpm 安装的时候输入的密码

clickhouse-client --host 10.82.46.218 --port=9000select * from system.clusters where cluster = 'perftest_1shards_3replicas';SELECT * FROM system.zookeeper WHERE path = '/clickhouse';select * from system.macros;

验证

创建集群数据库

在一台机器上执行创建命令:

CREATE DATABASE db_test_01 ON CLUSTER perftest_1shards_3replicas;

集群安装正常的话,在其他两台机器上 show databases;应该也可以看到这个数据库:
image.png

创建表并写入数据

在其中一台机器上执行:

# 创建集群表
CREATE TABLE db_test_01.tb_test_01 ON CLUSTER 'perftest_1shards_3replicas'
(`id` Int64,`p` Int16
)
ENGINE = ReplicatedMergeTree( '/clickhouse/tables/{shard}/tb_test_01', '{replica}')
PARTITION BY p
ORDER BY id;# 写入数据
INSERT INTO db_test_01.tb_test_01 VALUES(111,111);INSERT INTO db_test_01.tb_test_01 VALUES(222,222);INSERT INTO db_test_01.tb_test_01 VALUES(333,333);INSERT INTO db_test_01.tb_test_01 VALUES(444,444);

在其他节点上查看数据:

select * from db_test_01.tb_test_01;

image.png

验证集群高可用

关闭其中一个节点(10.82.46.135),模拟节点宕机,在另外的节点上写入数据:
systemctl stop clickhouse-server
在另外的节点上写入数据:

INSERT INTO db_test_01.tb_test_01 VALUES(555,555);

重新启动节点(10.82.46.135),查看数据表,发现数据已经同步过来,验证成功:

systemctl start clickhouse-serverclickhouse-client --host 10.82.46.135 --port=9000select * from db_test_01.tb_test_01;

image.png
删库跑路

drop database db_test_01 on cluster perftest_1shards_3replicas;

http://www.ppmy.cn/devtools/85833.html

相关文章

EasyMR如何为服务开启Kerberos

作者&#xff1a;雅泽 一、Hadoop为什么需要安全 最早部署Hadoop集群时并没有考虑安全问题&#xff0c;未开启安全认证时&#xff0c;Hadoop 是以客户端提供的用户名作为用户凭证&#xff0c; 一般即是发起任务的Unix 用户。一般线上机器部署服务会采用统一账号&#xff0c;当…

测试面试宝典(三十三)—— 接口测试有没有测试出什么问题?

在之前的接口测试工作中&#xff0c;确实发现了一些问题。比如&#xff0c;在对某关键业务接口进行测试时&#xff0c;发现当输入的参数值超出正常范围时&#xff0c;接口没有按照预期返回错误提示&#xff0c;而是出现了系统崩溃的情况。 还有一次&#xff0c;在测试一个数据…

STM32高级运动控制系统教程

目录 引言环境准备高级运动控制系统基础代码实现&#xff1a;实现高级运动控制系统 4.1 传感器数据采集模块 4.2 数据处理与运动控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;运动控制与优化问题解决方案与优化收尾与总结 1. 引言 高级运动…

2024.7.29(web、nginx)

一、web基本概念和常识 ■ Web:为用户提供的一种在互联网上浏览信息的服务,Web服务是动态的、可交互的、跨平台的和图形化的。 ■ Web 服务为用户提供各种互联网服务,这些服务包括信息浏览服务,以及各种交互式服务,包括聊天、购物、学习等等内容。 ■ Web 应用开发也经过了几代…

51 单片机的Keil5软件

1. KEIL C51 软件获取 博主网盘下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1YBfrRh2L7SIehS5xLQkAow?pwd4211 提取码&#xff1a;4211 也可以在 KEIL 的官网上下载&#xff1a;http:// https://www.keil.com/download/product/ 打开界面如下图所示&#xff1…

Redis持久化的方式

Redis 是内存数据库&#xff0c;支持持久化&#xff0c;将内存中的数据些到磁盘中&#xff0c;防止服务器宕机内存数据丢失。一种 RDB 方式、一种 AOF 方式&#xff0c;一般两种结合使用。 1. RDB&#xff08;Redis DateBase&#xff09; 1.1. 什么是 RDB RDB 是 redis 默认…

通信原理-思科实验五:家庭终端以太网接入Internet实验

实验五 家庭终端以太网接入Internet实验 一实验内容 二实验目的 三实验原理 四实验步骤 1.按照上图选择对应的设备&#xff0c;并连接起来 为路由器R0两个端口配置IP 为路由器R1端口配置IP 为路由器设备增加RIP&#xff0c;配置接入互联网的IP的动态路由项 5.为路由器R1配置静…

前端学习组件

#开关 <el-switch v-model"form.isShow" active-text"上线" inactive-text"下线" /> <el-table-column label"是否上线" align"center" prop"isShow" ><template slot-scope"scope">…

django基于大数据的电影推荐系统-计算机毕业设计源码71246

目 录 摘 要 1 绪论 1.1 选题背景与意义 1.2研究现状 1.3研究内容 1.4 开发环境 1.5论文结构与章节安排 2 相关理论和技术 2.1 协同过滤算法 2.2 B/S体系结构介绍 2.3 Python爬虫技术 2.4 Django框架介绍 2.5 MySQL数据库 3 电影推荐系统系统分析 3.1 可行性分析…

解密计算机视觉:OpenCV技术详解与实践

引言 在当今的数字化时代&#xff0c;计算机视觉技术越来越受到关注。作为计算机视觉领域的开源库&#xff0c;OpenCV&#xff08;Open Source Computer Vision Library&#xff09;凭借其强大的功能和广泛的应用场景&#xff0c;成为了研究人员和开发者的首选工具。本文将深入…

Kafka之存储设计

文章目录 1. 分区和副本的存储结构1. 分区和副本的分布2. 存储目录结构3. 文件描述 2. 相关配置3. 数据文件类型4. 数据定位原理LogSegment 类UnifiedLog 类 5. 副本数据同步HW水位线LEO末端偏移量HW更新原理 6. 数据清除 1. 分区和副本的存储结构 在一个多 broker 的 Kafka 集…

wpf中轮询显示图片

本文的需求是&#xff0c;在一个文件夹中&#xff0c;放一堆图片的集合&#xff0c;然后在wpf程序中&#xff0c;按照定时的方式&#xff0c;循序显示照片。 全部代码 1.声明一个PictureInfo类 namespace WpfApp1 {public class PictureInfo{public string? FileName { get; …

【FPGA设计】千兆以太网

一. OSI 七层模型 OSI&#xff08;Open Systems Interconnection&#xff09;七层模型是由国际标准化组织&#xff08;ISO&#xff09;制定的一个概念模型&#xff0c;用于描述网络中各部分如何通信。这个模型将网络通信分解为七个不同的层次&#xff0c;每一层都有特定的功能…

C++ 基础(类和对象下)

目录 一. 再探构造函数 1.1. 初始化列表&#xff08;尽量使用列表初始化&#xff09; 二. static成员 2.1static成员初始化 三.友元 3.1友元&#xff1a;提供了⼀种 突破类访问限定符封装的方式. 四.内部类 4.1如果⼀个类定义在另⼀个类的内部&#xff0c;这个内部类就叫…

WINUI——Microsoft.UI.Xaml.Markup.XamlParseException:“无法找到与此错误代码关联的文本。

开发环境 VS2022 .net core6 问题现象 在Canvas内的子控件要绑定Canvas的兄弟控件的一个属性&#xff0c;在运行时出现了下述报错。 可能原因 在 WinUI&#xff08;特别是用于 UWP 或 Windows App SDK 的版本&#xff09;中&#xff0c;如果你尝试在 XAML 中将 Canvas 内的…

android settings提示音开关状态与修改(一)

android系统&#xff0c;settings提示音类型&#xff1a; 提示音开关默认状态&#xff0c;定义文件&#xff1a; frameworks/base/packages/SettingsProvider/res/values/defaults.xml 提示音默认定义&#xff1a; // 锁屏提示音 <integer name"def_lockscreen_sounds_…

测桃花运(算姻缘)的网站系统源码

简介&#xff1a; 站长安装本源码后只要有人在线测算&#xff0c;就可以获得收入哦。是目前市面上最火的变现利器。 本版本无后台&#xff0c;无数据。本版本为开发的逗号联盟接口版本。直接对接逗号联盟&#xff0c;修改ID就可以直接运营收费赚钱。 安装环境&#xff1a;PH…

【HTML — 构建网络】HTML 入门

在本文中,我们将介绍 HTML 的绝对基础知识。为了帮助您入门,本文定义了元素、属性以及您可能听说过的所有其他重要术语。它还解释了这些在 HTML 中的位置。您将学习 HTML 元素的结构、典型的 HTML 页面的结构以及其他重要的基本语言功能。在此过程中,也将有机会玩转 HTML! …

C++ primer plus 第16章string 类和标准模板库, 关联容器

C primer plus 第16章string 类和标准模板库, 关联容器 C primer plus 第16章string 类和标准模板库, 关联容器 文章目录 C primer plus 第16章string 类和标准模板库, 关联容器16.4.4关联容器1.set 示例程序清单 16.13 setops.cpp2.multimap 示例 16.4.4关联容器 关联容器(a…

Vue中!.和?.是什么意思

在Vue&#xff08;或更广泛地说&#xff0c;在JavaScript和TypeScript中&#xff09;&#xff0c;!. 和 ?. 是两个与可选链&#xff08;Optional Chaining&#xff09;和断言非空&#xff08;Non-null Assertion&#xff09;相关的操作符&#xff0c;它们分别用于处理可能为nu…