基于clickhouse keeper搭建clickhouse集群

服务器信息

主机名 IP
my-db01 192.168.1.214
my-db02 192.168.1.215
my-db03 192.168.1.216
  • hosts设置
# 切换成root
sudo -i
# my-db01 执行
echo '192.168.1.215 my-db02' >> /etc/hosts
echo '192.168.1.216 my-db03' >> /etc/hosts

# my-db02 执行
echo '192.168.1.214 my-db01' >> /etc/hosts
echo '192.168.1.216 my-db03' >> /etc/hosts

# my-db03 执行
echo '192.168.1.214 my-db01' >> /etc/hosts
echo '192.168.1.215 my-db02' >> /etc/hosts

安装

使用admin用户安装:

  • 添加官方镜像
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
  • 安装clickhouse-server和clickhouse-client
sudo yum install -y clickhouse-server clickhouse-client

版本信息:

操作系统:CentOS Linux release 7.9.2009 (Core)

systemd:219

clickhouse-client:23.2.4.12-1.x86_64

clickhouse-server:23.2.4.12-1.x86_64

clickhouse-common-static:23.2.4.12-1.x86_64

  • 安装nc命令,用于检查连通性
yum install -y nc

调整配置

目录调整

# 创建数据目录
sudo mkdir -p /data/clickhouse/lib
# 创建日志目录
sudo mkdir -p /data/clickhouse/log
# 授权
sudo chown -R clickhouse:clickhouse /data/clickhouse
sudo chmod 777 /data

# 备份原始配置文件
sudo cp /etc/clickhouse-server/users.xml ~
sudo cp /etc/clickhouse-server/config.xml ~

# 更改目录配置
## 权限更改
sudo chmod 666 /etc/clickhouse-server/config.xml
sudo chmod 666 /etc/clickhouse-server/users.xml
## 日志目录替换
sudo sed -i 's?/var/log/clickhouse-server?/data/clickhouse/log?g' /etc/clickhouse-server/config.xml
## 数据目录替换
sudo sed -i 's?/var/lib/clickhouse?/data/clickhouse/lib?g' /etc/clickhouse-server/config.xml

启停

  • 修改sudo vi /usr/lib/systemd/system/clickhouse-server.service参考:《问题记录->启动超时》
  • 设置自启动:sudo systemctl enable clickhouse-server
  • 启动命令:sudo systemctl start clickhouse-server
  • 关闭命令:sudo systemctl stop clickhouse-server
  • 启动状态:sudo systemctl status clickhouse-server

参数调整

sudo vi /etc/clickhouse-server/config.xml中的配置:

  • background_pool_size:默认16,可以调整到CPU个数的两倍。本次调整到32

  • max_concurrent_queries:默认100,可以调整到200或者300。本次调整到200

  • 设置外网(ipv4)可访问:
    <listen_host>0.0.0.0</listen_host>
    
    设置interserver_listen_host,因为服务器不支持ipv6
    (如果不设置,配置了clickhouse-keeper后,会无法启动,报错:
    RaftInstance: got exception: open: Address family not supported by protocol
    )
    <interserver_listen_host>0.0.0.0</interserver_listen_host>
    

users.xml中的配置:

  • 密码设置:
# 使用下述命令生成随机密码
PASSWORD=$(base64 < /dev/urandom | head -c12); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
# 明文密码:z+yJwbcWv6MA
# 密文密码:b53ad819c11d5790655464f2d6ec0e78916551b62141fec0d1342a25138082d2
<password_sha256_hex>b53ad819c11d5790655464f2d6ec0e78916551b62141fec0d1
### ClickHouse Keeper介绍 ClickHouse社区自版本21.8起引入了ClickHouse-Keeper,在21.12版本发布公告中提及此功能已基本完成并适用于生产环境部署[^1]。作为ZooKeeper的一种轻量级替代方案,ClickHouse-Keeper旨在提供分布式协调服务,支持高可用性和数据复制等功能。 #### 主要特性 - **兼容性**:完全兼容ZooKeeper协议,现有依赖于ZooKeeper的应用程序无需修改即可无缝切换到ClickHouse-Keeper。 - **性能优化**:相较于原生ZooKeeper有着更优的读写吞吐率以及更低延迟表现。 - **资源占用低**:相比传统解决方案具有较小内存开销和磁盘I/O压力。 - **集成便利**:可以直接安装配置在现有的ClickHouse集群节点上,简化运维管理流程。 ### 使用方法概述 为了启动和使用ClickHouse-Keeper,需按照官方文档指导进行相应设置[^2]: 1. 修改`config.xml`文件中的`<keeper_server>`部分来定义服务器列表和其他必要参数; 2. 启动ClickHouse实例时指定启用Keeper模式; 3. 配置客户端连接字符串指向新搭建好的ClickHouse-Keeper地址; 下面是一个简单的Python脚本示例,用于展示如何通过Kazoo库与ClickHouse-Keeper交互: ```python from kazoo.client import KazooClient zk = KazooClient(hosts='localhost:9181') zk.start() # 创建一个znode if not zk.exists("/example"): zk.create("/example", b"A value") # 获取znode的数据 data, stat = zk.get("/example") print(f"Version: {stat.version}, Data: {data.decode()}") zk.stop() ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值