首页 > 其他分享 >ClickHouse集群+ZooKeeper集群架构下的ZooKeeper集群迁移

ClickHouse集群+ZooKeeper集群架构下的ZooKeeper集群迁移

时间:2023-04-17 14:36:45浏览次数:49  
标签:zk 2888 ZooKeeper 3888 192.168 echo 2181 集群 ClickHouse

 

ClickHouse集群+ZooKeeper集群架构下的ZooKeeper集群迁移

 

目前测试环境的ck集群+zk集群架构如下:

ClickHouse ZooKeeper

192.168.1.171

192.168.1.172

192.168.1.173

192.168.1.174

192.168.1.171

192.168.1.172

192.168.1.173

由于ck和zk混搭在一块,存在较为严重的性能问题,计划将zk从171,172,173迁移到34,35,36上。

通过向现有的zk集群中添加成员34,35,36变为6个节点的集群后,在剔除171,172,173这三个成员达到迁移目的,即扩容然后缩容。

最终结构如下:

ClickHouse ZooKeeper

192.168.1.171

192.168.1.172

192.168.1.173

192.168.1.174

192.168.1.34

192.168.1.35

192.168.1.36

 

 

启用动态配置功能

由于目前zk(171,172,173)并没有启动动态配置功能,需要停机修改配置。

先停止ck全部节点,在停止zk全部节点。(略)

修改171,172,173的zk配置:

vi /usr/local/zookeeper/conf/zoo.cfg
删除server列表配置:
server.1=192.168.1.171:2888:3888
server.2=192.168.1.172:2888:3888
server.3=192.168.1.173:2888:3888
追加:
skipACL=yes
reconfigEnabled=true
dynamicConfigFile=/usr/local/zookeeper/conf/zoo.cfg.dynamic

 

添加文件zoo.cfg.dynamic,指定原来的server列表节点:

vi /usr/local/zookeeper/conf/zoo.cfg.dynamic
server.1=192.168.1.171:2888:3888:participant;2181
server.2=192.168.1.172:2888:3888:participant;2181
server.3=192.168.1.173:2888:3888:participant;2181

 

启动171,172,173的zk,然后启动ck集群。(略)

 

安装配置zk服务器

按照企业规范对新的34,35,36安装配置zk软件,但先不启动zk服务(略)。

特别需要注意:ck集群(171-174),旧zk集群(171-173),新zk集群(34-36)的/etc/hosts要对应有全部节点的解析。

cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.171 dev-app76
192.168.1.172 dev-app77
192.168.1.173 dev-app78
192.168.1.174 dev-app79

192.168.1.34 zk01
192.168.1.35 zk02
192.168.1.36 zk03

 

 

 

zk集群扩容

添加新节点zk01(34)

vi /usr/local/zookeeper/conf/zoo.cfg.dynamic
server.1=192.168.1.171:2888:3888:participant;2181
server.2=192.168.1.172:2888:3888:participant;2181
server.3=192.168.1.173:2888:3888:participant;2181
server.4=192.168.1.34:2888:3888:participant;2181
启动zk01:
zkServer.sh start
或者:systemctl start zookeeper

 

 

旧的zk服务器171,172,173随便挑选一台执行。

[zk: localhost:2181(CONNECTED) 0] reconfig -add 4=192.168.1.34:2888:3888;2181
Committed new configuration:
server.1=192.168.1.171:2888:3888:participant;0.0.0.0:2181
server.2=192.168.1.172:2888:3888:participant;0.0.0.0:2181
server.3=192.168.1.173:2888:3888:participant;0.0.0.0:2181
server.4=192.168.1.34:2888:3888:participant;0.0.0.0:2181
version=630000e4be

 

 

检查各个节点zk状态。

echo conf | nc zk01 2181 | grep server.
echo conf | nc 192.168.1.171 2181 | grep server.
echo conf | nc 192.168.1.172 2181 | grep server.
echo conf | nc 192.168.1.173 2181 | grep server.

 

样例:

[root@zk01 conf]# echo conf | nc zk01 2181 | grep server.
serverId=4
server.4=192.168.1.34:2888:3888:participant;0.0.0.0:2181
server.5=192.168.1.35:2888:3888:participant;0.0.0.0:2181
server.6=192.168.1.36:2888:3888:participant;0.0.0.0:2181
View Code

 

 

检查ck读写是否异常。

参考语句:(关于gv$parts,参考clickhouse集群跨节点查询其他节点系统表信息

CREATE TABLE default.zkm on cluster ceb_cluster
(
    `id` String DEFAULT 'NULL' COMMENT '用户编号',
    `repo` String DEFAULT 'NULL' COMMENT '仓库编号'
)
ENGINE = Distributed('ceb_cluster', 'default', 'zkm_local', rand());


CREATE TABLE default.zkm_local on cluster ceb_cluster
(
    `id` String DEFAULT 'NULL' COMMENT '用户编号',
    `repo` String DEFAULT 'NULL' COMMENT '仓库编号'
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/ceb_cluster-{shard}/default/zkm_local', '{replica}')
ORDER BY id
SETTINGS index_granularity = 8192;

insert into zkm values('a','b');
insert into zkm select * from zkm settings insert_deduplicate=0; --这条多次执行


SELECT
    host AS `主机名`,
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM `gv$parts`
WHERE (database = 'default') AND (table = 'zkm_local') AND (active = 1) AND (engine = 'ReplicatedMergeTree')
GROUP BY host
ORDER BY host ASC;
View Code

 

 

添加新节点zk02(35)

同上诉添加zk01。略。

 

添加新节点zk03(36)

同上诉添加zk01。略。

 

 

修改ck服务器zk配置

将ck作为客户端连接的原zk(171,172,173)替换为新的zk节点(34,35,36)。

所有的ck(171,172,173,174)节点:

vi /etc/clickhouse-server/config.d/zks.xml 
<?xml version="1.0"?>
<clickhouse>
    <zookeeper>
        <node index="1">
            <host>zk01</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>zk02</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>zk03</host>
            <port>2181</port>
        </node>
    </zookeeper>
</clickhouse>

 

服务器跟踪配置文件中的更改,以及执行替换和复盖时使用的文件和ZooKeeper节点,并动态重新加载用户和集群的设置。 这意味着您可以在不重新启动服务器的情况下修改群集、用户及其设置。

确认新配置信息是否实时生效(在ck的数据文件所在根目录):

cat /clickhouse/preprocessed_configs/config.xml

 

 

zk集群缩容

从zk服务器34,35,36随便挑选一台执行。

zkCli.sh进去交互式:
reconfig -remove 1
reconfig -remove 2
reconfig -remove 3

 

 

检查各个节点zk状态。

echo conf | nc zk01 2181 | grep server.
echo conf | nc zk02 2181 | grep server.
echo conf | nc zk03 2181 | grep server.
echo conf | nc 192.168.1.171 2181 | grep server.
echo conf | nc 192.168.1.172 2181 | grep server.
echo conf | nc 192.168.1.173 2181 | grep server.

 

 

关闭旧的zk节点(171,172,173):

zkServer.sh stop

 

 

检查各个节点zk状态。

echo conf | nc zk01 2181 | grep server.
echo conf | nc zk02 2181 | grep server.
echo conf | nc zk03 2181 | grep server.

 

 

检查ck是否有会话连接到zk:

echo cons | nc zk01 2181
echo cons | nc zk02 2181
echo cons | nc zk03 2181
或者
echo srvr | nc zk01 2181
echo srvr | nc zk02 2181
echo srvr | nc zk03 2181

最终如下:
[root@zk03 clickhouse]# echo conf | nc zk01 2181 | grep server.
serverId=4
server.4=192.168.1.34:2888:3888:participant;0.0.0.0:2181
server.5=192.168.1.35:2888:3888:participant;0.0.0.0:2181
server.6=192.168.1.36:2888:3888:participant;0.0.0.0:2181

 

 

 

 

卸载旧的集群zk节点171,172,173:

绿色安装的zk,按照安装文档反向操作进行卸载即可。

略。

 

参考文档:

https://www.cnblogs.com/taiyang-li/p/14594208.html

https://zookeeper.apache.org/doc/r3.7.0/zookeeperReconfig.html

https://clickhouse.com/docs/zh/operations/configuration-files#implementation-details

 

标签:zk,2888,ZooKeeper,3888,192.168,echo,2181,集群,ClickHouse
From: https://www.cnblogs.com/PiscesCanon/p/17325739.html

相关文章

  • Nacos笔记(四):Nacos集群搭建
    Nacos集群部署的准备工作-Nacos持久化已完成,详见: Nacos笔记(三):Nacos配置持久化,下面介绍Nacos的集群部署。部署三个nacos节点:nacos、nacos01、nacos02。1、设置集群配置文件1.1、复制集群配置文件cpcluster.conf.examplecluster.conf1.2、修改集群配置在clus......
  • 玩转RuoYi-Cloud-Plus--6.搭建高可用Nacos集群
    Nacos高可用「集群部署」注册中心,在微服务中是核心基础组件,当然要保证服务高可用,避免单节点故障。官方部署文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html由于资源有限,在一台windows机器上,启动三个端口不同的节点测试。解压安装后,复制出三个节点文件夹 ......
  • 第3章 高可用负载均衡集群规划
    作者:田逸(formyz) 开篇之初,先举几个反例,来说明事前规划的重要性。案例一:某广告媒体公司,需要部署一套媒体播放系统,由一台应用服务器和一台数据库服务器组成,让人没想到的是,为了这两台服务器,花了几十万采购了一台网络端口超过96个的三层核心交换机。询问相关人员,这样配备是基于什么考虑......
  • Zookeeper介绍&集群部署
    一、Zookeeper简介Zookeeper是一个开源的分布式框架,可用于解决分布式系统中常见的命名服务、状态同步、配置中心、集群管理等问题。它具有如下特性:顺序一致性:从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到Zookeeper中;原子性:所有事务请求的处理结果在整个集群中......
  • 将TiDB各服务组件混布到物理机集群和K8S环境
    前提条件K8S集群外的服务器节点和K8S集群内的Pod网络必须保持互通(本文采用将物理机节点加入K8S集群然后打污点并驱逐该服务器里边的pod的方式来实现)K8S机器外的服务器节点必须可以通过添加解析的方式来解析K8S集群内部Pod域名(具体见第一步)待迁移集群没有开启组件间TLS加密通信......
  • kubernets 集群证书过期解决方式
    查看证书过期时间kubeadmcertscheck-expiration解决方案手动更新证书#更新证书kubeadmcertsrenewall#重启相关服务dockerrestart$(dockerps|grep-E'kube-apiserver|kube-controller-manager|kube-scheduler|etcd'|awk'{print$1}')原文链接https://www.c......
  • 集群中几种session同步方案
    集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。1.客户端cookie加密这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。问题:session中数......
  • nginx集群和nginx主备不是同一个概念
    Nginx 集群搭建 https://huaweicloud.csdn.net/63560e7dd3efff3090b591dc.html?spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-14-117463438-blog-127292749.235^v28^pc_relevant_default&dept......
  • kafka集群部署教程
    ####部署zookeeper集群1、先部署zookeeper集群一般是3个节点,安装zookeeper依赖java环境先安装jdk   yuminstalljava-1.8.0-openjdk-devel-y    java-version#查看jdk版本2、创建工作目录(3个节点都需要执行)   mkdir-p/usr/local/zookeeper  ......
  • Prometheus监控zookeeper集群(1)
    因为zookeeper版本较低为3.4.x版本,所有采用zookeeper_exporter方式采集数据1.下载(zookeeper_exporter采集器)https://github.com/carlpett/zookeeper_exporter/releases/download/v1.1.0/zookeeper_exporter2.传到liunx上/opt目录下,没有目录可以自行创建3.授予权限chmod755......