clickhouse运维篇(二):多机器手动部署ck集群

熟悉流程并且有真正部署需求可以看一下我的另一篇简化部署的文章,因为多节点配置还是比较麻烦的先要jdk、zookeeper,再ck,还有各种配置文件登录不同机器上手动改配置文件还挺容易出错的。
clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群

多机器手动部署ck集群

  • 1、 安装jdk
  • 2、 zookeeper集群搭建(选举机制,奇数节点部署)
  • 3、 clickhouse集群规划
  • 4、 clickhouse集群搭建
  • 5、 配置nginx代理
  • 6、 集群验证
  • 7、 分布式,本地表测试

1、 安装jdk

上传jdk安装包到各节点

1、解压安装包 (这里举例解压到/opt/jdk8u333)

2、 执行 sh setup.sh install

3、 修改环境变量

vi /etc/profile

vi /etc/profile

在文件末尾加

#java
export JAVA_HOME=/opt/jdk8u333
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}
export PATH=$PATH:${JAVA_HOME}/bin

4、 执行指令生效

source /etc/profile

2、 zookeeper集群搭建(选举机制,奇数节点部署)

举例三个节点:

172.168.1.206

172.168.1.207

172.168.1.208

上传安装包到各节点

解压安装包(这里举例解压到/opt/app/zookeeper-3.7.2)

1、创建目录

mkdir /opt/app/zookeeper-3.7.2/zkData

2、 复制zoo_sample.cfg文件命名为 zoo.cfg

cp zoo_sample.cfg zoo.cfg

3、 在各个节点创建一个id(距离下边在206、207、208三个节点的zkData目录下分别创建)

echo 1 >/opt/app/zookeeper-3.7.2/zkData/myid
echo 2 >/opt/app/zookeeper-3.7.2/zkData/myid
echo 3 >/opt/app/zookeeper-3.7.2/zkData/myid

4、修改zoo.cfg文件

vi zoo.cfg

clientPort为16871

dataDir为上边创建的zkData

server.后边的1、2、3为机器节点id;

server.1=172.168.1.206:2888:3888

server.2=172.168.1.207:2888:3888

server.3=172.168.1.208:2888:3888

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/app/zookeeper-3.7.2/zkData
clientPort=16871
server.1=172.168.1.206:2888:3888
server.2=172.168.1.207:2888:3888
server.3=172.168.1.208:2888:3888

5、 在其余节点重复以上操作,在bin目录下执行启动脚本

sh zkServer.sh start

6、 查看集群状态

./zkServer.sh status

说明集群搭建完成,172.168.1.208是主节点

3、 clickhouse集群规划

在这里插入图片描述

  1. 根据集群部署分配的服务器进行预先考虑

a. 需要多少个分片 【多少台机器多少个分片,最好一个机器不要多分片,会导致查询的负载不平衡,导致短筒效应 (保证分片数<=机器数最佳)】

b. 每个分片多少个副本 【默认同一个分片的副本不要在同一个机器上,不能起到容灾作用,一般情况一个分片内两个实例即可,一主一副】

  1. 同一个实例不能既是主分片又是副本分片,想要部署m分片每个分片内n个实例的集群就需要部署 m*n 个clickhouse实例。

  2. 例如,所以如果只有三台机器,想部署3分片每个分片2实例的集群就需要3*2=6个 实例【遵循上面1.a中 分片数<=机器数】。 如果机器1上有了shard1的分片,副本实例就最好启动在机器2或者机器3上【遵循上面1.b中 同一分片副本不在相同机器】
    在这里插入图片描述

4、 clickhouse集群搭建

举例三个节点:

172.168.1.206

172.168.1.207

172.168.1.208

上传安装包到各节点

1、解压安装包 (这里举例解压到/opt/app/clickhouse-23.4.2.9)

2、 修改配置文件,打开config目录

cd config
vi config.xml

3、 修改config.xml文件

设置clickhouse端口16860

打开所有地址监听

tcp端口默认9000(可以按需修改)

<http_port>16860</http_port>
<listen_host>::</listen_host>
<tcp_port>9000</tcp_port>

添加集群节点信息 【三机器两分片、每个分片两个实例的配置文件】

// clickhose xml需要修改的内容
    <remote_servers>
        <!-- 可自定义clickhouse集群名 -->
        <ck_cluster>
            <!-- 数据分片1  -->
            <shard>
                <internal_replication>true</internal_replication>
                <!-- 副本1 -->
                <replica>
                    <host>172.168.1.206</host>
                    <port>9000</port>
                    <user>default</user>
                    <password>my_password</password>
                </replica>
                <!-- 副本2 -->
                <replica>
                    <host>172.168.1.207</host>
                    <port>9000</port>
                    <user>default</user>
                    <password>my_password</password>
                </replica>
            </shard>
            <!-- 数据分片2  -->
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>172.168.1.207</host>
                    <port>9001</port>
                    <user>default</user>
                    <password>my_password</password>
                </replica>
                <replica>
                    <host>172.168.1.208</host>
                    <port>9000</port>
                    <user>default</user>
                    <password>my_password</password>
                </replica>
            </shard>

        </ck_cluster>
    </remote_servers>

    <macros>
        <shard>02</shard>
        <replica>replica_208</replica>
    </macros>

    <zookeeper>
        <!-- index内容为server.id -->
        <node index="1">
            <host>172.168.1.206</host>
            <port>16871</port>
        </node>
        <node index="2">
            <host>172.168.1.207</host>
            <port>16871</port>
        </node>
        <node index="3">
            <host>172.168.1.208</host>
            <port>16871</port>
        </node>
    </zookeeper>

		<!-- 如果一个机器上部署多个实例这几个端口不要冲突 -->
    <http_port>16860</http_port>
    <tcp_port>9000</tcp_port>
    <interserver_http_host>172.168.1.208</interserver_http_host>
		<interserver_http_port>9009</interserver_http_port>
    <http>
        <max_connections>1024</max_connections>
        <async_insert>1</async_insert> <!-- 启用异步插入 -->
    </http>

		<!-- vim下输入 /clickhouse-23.4  查找path相关tag是否配置正确		-->										<path>/opt/app/my_app-2.4/clickhouse-23.4.2.9/data/</path>
		  <format_schema_path>/opt/app/my_app-2.4/clickhouse-23.4.2.9/data/format_schemas/</format_schema_path>
		    <log>/opt/app/my_app-2.4/clickhouse-23.4.2.9/log/clickhouse-server/clickhouse-server.log</log>
		    <errorlog>/opt/app/my_app-2.4/clickhouse-23.4.2.9/log/clickhouse-server/clickhouse-server.err.log</errorlog>
		    <tmp_path>/opt/app/my_app-2.4/clickhouse-23.4.2.9/tmp/</tmp_path>
		    <user_files_path>/opt/app/my_app-2.4/clickhouse-23.4.2.9/data/user_files/</user_files_path>

4、修改users.xml文件

设置default账号的密码

<password>my_password</password>

5、其余节点重复以上步骤,然后启动服务(注意修改config.xml中的值)

/opt/app/my_app-2.4/clickhouse-23.4.2.9/bin/clickhouse server --config-file /opt/app/my_app-2.4/clickhouse-23.4.2.9/config/config.xml --pid-file /opt/app/my_app-2.4/clickhouse-23.4.2.9/clickhouse.pid --daemon

5、 配置nginx代理

编辑nginx配置文件底部加入clickhouse反向代理供web服务调用

$ vim  /opt/app/my_app-2.4/nginx/conf/my_app.conf

upstream clickhouse_cluster {
    server 172.168.1.206:16860;
    server 172.168.1.207:16860;
    server 172.168.1.207:16861;    
    server 172.168.1.208:16860;
}

# 新增的 ClickHouse 反向代理并配置相应的黑白名单策略, 入的流量应该是访问ck集群的流量,
# 所以应该是访问源的网段也就是my_app对应的网段或者ip
server {
    listen 1442;
    allow localhost;
	 allow 192.168.13.0/24;
	 allow 10.1.5.0/16;    
    deny all;

    location / {
        proxy_pass http://clickhouse_cluster;
    }
}

● nginx反向代理验证

[root@localhost ~]# curl localhost:1442
Ok.

6、 集群验证

这里使用dbever工具验证

1、执行sql,查看ck集群节点状态

SELECT * from system.clusters;

2、执行sql,查看zookeeper中/clickhouse的节点是否存在

SELECT * FROM system.zookeeper WHERE path = '/clickhouse';

如果截图如上则表示分布式集群部署成功
查看各个节点状态,关注最后一列可以看出各个节点的与集群的连接状况【比如第三行数字22就是实例与cluster连接有问题】

7、 分布式,本地表测试

  • 语句加on cluster ck_cluster 就是在所有实例上执行

创建一个表

-- 删除本地表
DROP TABLE IF EXISTS test_table_local on cluster ck_cluster SYNC;

-- 创建本地表
CREATE TABLE test_table_local ON CLUSTER ck_cluster
(
    `tenantId`        UInt64 CODEC (Delta(8), ZSTD(1)),
    `alarmId`         String,
    `grade`           Int32,
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{uuid}/{shard}/audit_log_local', '{replica}');


-- 删除分布式表
DROP TABLE IF EXISTS test_table_all on cluster ck_cluster SYNC;
-- 创建分布式表
CREATE TABLE test_table_all ON CLUSTER ck_cluster as test_table_local ENGINE = Distributed('ck_cluster', 'default', 'test_table_local', rand());

分布式表测试

SELECT count(*) FROM test_table_all;

本地表测试

INSERT INTO test_table_local (id, name, grade) VALUES (1,'jack',60);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905678.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我的电视 左侧列表内置版 | 非常高清,频道丰富的电视直播应用

我的电视是一款专注于电视直播的应用程序&#xff0c;提供丰富且全面的电视频道&#xff0c;包括央视及各大卫视。无论您是想看新闻、体育、电影还是综艺节目&#xff0c;都可以在这里找到。应用支持高清画质播放&#xff0c;确保流畅无卡顿的观看体验。简洁的界面设计和智能推…

Android开发教程viewpager2点击指示标也能切换

Android开发教程viewpager2点击指示标也能切换 viewpager2的使用范例&#xff0c;关键是点击指示标也能切换 一、思路&#xff1a; 用viewpager2加两个imageview 二、效果图&#xff1a; 三、关键代码&#xff1a; public class MainActivity extends AppCompatActivity {…

荣耀独立四周年:以己之名,终至海阔天空

“多少次&#xff0c;迎着冷眼与嘲笑&#xff0c;从没有放弃过&#xff0c;心中的理想……” 10月30日晚&#xff0c;原Beyond成员黄贯中充满激情的《海阔天空》歌声&#xff0c;在荣耀Magic7系列AI旗舰新品发布会上空飘扬。 如歌词所唱&#xff0c;荣耀独立四年以来&#xf…

pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误

一、问题现象&#xff1a; 执行seleniumpytest结束时报: INTERNALERROR> File "D:\workspace\pytestframe\.venv\Lib\site-packages\pytest_html\report_data.py", line 141, in add_test INTERNALERROR> test_data["log"] _handle_ansi(&q…

OpenCV 学习笔记

OpenCV 环境安装 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 显示窗口 cv2.namedWindow 是 OpenCV 库中的一个函数&#xff0c;用于创建一个命名窗口&#xff0c;以便在该窗口中显示图像或进行其他图形操作。这个函数在处理图像和视频时非常…

JavaEE初阶---网络原理/UDP服务器客户端程序

文章目录 1.网络初识2.网络编程2.1TCP/UDP区别介绍2.2UDP的socket api使用2.3UDP协议里面的服务器客户端程序 1.网络初识 网络和计算机类似&#xff1a;都是属于军用》民用&#xff1b; 网络诞生于美苏争霸时期&#xff0c;当时就感觉核战争一触即发&#xff0c;形式非常严峻…

【skywalking】监控 Spring Cloud Gateway 数据

使用Spring Cloud 开发&#xff0c;用Skywalking 监控服务&#xff0c;但是Skywalking 默认是不支持 Spring Cloud Gateway 网关服务的&#xff0c;需要手动将 Gateway 的插件添加到 Skywalking 启动依赖 jar 中。 skywalking相关版本信息 jdk&#xff1a;17skywalking&#x…

开源协议类型及长安链开源协议介绍

截至目前&#xff0c;我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目&#xff0c;是全球开源生态的重要贡献力量&#xff0c;但在开源治理方面我国还处于发展初期&#xff0c;大部分开发者对开源的印象还限于开放代码、免费使用…

胡壮麟《语言学教程》第五版PDF英文版+中文版翻译

胡壮麟《语言学教程》中文版&#xff1a;https://pan.quark.cn/s/9491130ec572 《语言学教程》&#xff08;英文版&#xff09;是一部经典的语言学教材&#xff0c;自 1988 年面世以来&#xff0c;被众多高校广泛采用&#xff0c;长销不衰。该教材自出版以来不断修订&#xff…

AI产品经理实战手册:策略、开发与商业化指南

通过《AI产品经理手册》&#xff0c;将可以了解不同类型的AI&#xff0c;如何将AI整合到产品或业务中&#xff0c;以及支持创建AI产品或将AI集成到现有产品所需的基础设施。熟悉实践管理AI产品开发流程、评估和优化AI模型&#xff0c;以及应对与AI产品相关的复杂伦理和法律问题…

31.安卓逆向-抓包-实战4

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。第一…

FMC ADDA子卡 2 通道 14bit 2 通道 3GS/s ADC +16bit 2 通道 12.6GS/s DAC AD9208/AD9172/AD9689

14bit 2 通道 3/2.6/2GS/s ADC 16bit 2 通道 12.6GS/s DAC FMC AD/DA 子卡 是一款高分辨率、高采样率的 ADCDAC FMC 子板。它同时支持 2 路 14 位 3.0/2.6/2.0GS/s 的 A/D 通道输入和 2 路 16 位 12.6GS/s 的 D/A 通道输出&#xff0c; 全功率模拟 -3dB 输入带宽可达 9GHz。A 为…

红米k50电竞版修复“NV损坏” 刷写工程固件操作步骤解析 去除校验电阻图示

Redmi K50电竞版。机型代码:ingres,高通 骁龙8 Gen1。八核处理器。适用于以下型号的小米机型:21121210C, 21121210G,国外型号称为POGO F4 GT。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此机型刷写工程固件预览界面 3💝�

CSRF与SSRF

csrf(跨站请求伪造)的原理: csrf全称是跨站请求伪造(cross-site request forgery)&#xff0c;也被称为one-click attack 或者 session riding scrf攻击利用网站对于用户网页浏览器的信任&#xff0c;劫持用户当前已登录的web应用程序&#xff0c;去执行分用户本意的操作。 利…

2024版最新Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

通过本篇文章&#xff0c;我们将会学习以下内容&#xff1a; 1、在Windows上安装Metasploit 2、在Linux和MacOS上安装Metasploit 3、在Kali Linux中使用 Metasploit 4、升级Kali Linux 5、使用虚拟化软件构建渗透测试实验环境 6、配置SSH连接 7、使用SSH连接Kali 8、配…

【利器】12个评估大语言模型(LLM)质量的自动化框架

LLM评估是指在人工智能系统中评估和改进语言和语言模型的过程。在人工智能领域&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;及相关领域&#xff0c;LLM评估具有至高无上的地位。通过评估语言生成和理解模型&#xff0c;LLM评估有助于细化人工智能驱动的语言相…

使用GetX实现GetPage中间件

前言 GetX 中间件&#xff08;Middleware&#xff09;是 GetX 框架中的一种机制&#xff0c;用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件&#xff0c;可以有效地控制用户的访问流程&#xff0c;并在适当条件下引导用户到所需页面。 这…

「图文详解」Pycharm 远程服务器Debug

首先声明一点&#xff0c;社区版的无法使用&#xff0c;需要使用 专业版Pycharm 才可以使用&#xff0c;至于密钥可以去TB购入&#xff0c;价格低廉、有效期长 相信很多小伙伴会面临本地电脑显存不够&#xff0c;但是服务器代码又无法直观的调试&#xff0c;只能靠打日志的方法…

spring组件介绍

Spring容器&#xff08;Spring Container&#xff09;&#xff1a; Spring容器是Spring框架的核心&#xff0c;它负责实例化、配置和组装Bean。Spring容器通过读取配置文件&#xff08;如XML文件或基于Java的配置类&#xff09;或注解来识别Bean定义&#xff0c;并在运行时创建…

SemiDrive E3 多核心运行 FreeRTOS 配置介绍

一、概述 本文主要介绍如何通过相关配置&#xff0c;使 Semidrive E3 芯片中的 SF 和 SP0 core 分别运行一套 FreeRTOS 操作系统。 以 multicore-xip 示例作为基础&#xff0c;参考 FreeRTOS-xip 示例的配置&#xff0c;将 FreeRTOS 移植至 SF 和 SP0 core 工程上&#xff0c;…