clickhouse 三种高可用方案

本文详细介绍了ClickHouse的三种高可用方案:通过Nginx代理、使用clickhouse-jdbc的BalancedClickhouseDataSource以及专用代理chproxy。每种方案的原理、配置和测试过程都进行了阐述,最终推荐使用chproxy,因其具备更灵活的配置和健康检查机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 简介

 

本文介绍三种高可用使用,及验证clickhouse的高可用性,三种方案分别如下:

不管是多分片还是多副本都是以集群方式部署,那么对外暴露多台Clickhouse服务,通常会通过LB方式使每台服务器能够均匀的接受到客户端的请求,另外一点就是在其中一台服务发生故障,仍然能通过故障转移方式正常对外提供服务。

 

  1. nginx代理
    客户端连接clickhouse的时候通过nginx做负载均衡,因为本身clickhouse支持http协议,端口号为http端口,所以此种方案直接使用nginx的http代理即可。
  2. clickhouse驱动
    Clickhouse-jdbc是使用负载均衡客户端ru.yandex.clickhouse.BalancedClickhouseDataSource来保证的,本质上是通过后台启动一个线程定时去探测clickhouse服务端,生成可用的地址列表。然后获取连接的时候从可用地址列表中随机选择一个节点来建立连接。
  3. 通过chproxy
    chproxy即专为clickhouse使用的代理,功能更为强大。

测试服务器地址

ip

服务

10.0.10.2:8123 clickhouse(与10.0.10.3互为为主备)
10.0.10.3:8123 clickhouse (与10.0.10.2互为为主备)
10.0.10.5:8123 chproxy  
10.0.10.5:18123 nginx

测试点:

  1. 两台clickhouse服务运行正常,查询分布到2台机器
  2. 任意一台宕机,程序执行正常
  3. 当宕机机器恢复正常,数据能从恢复
前置条件

    创建本地表

CREATE TABLE repl_abc on cluster cluster1

(
`id` String,
`price` Float64,
`create_time` DateTime
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/repl_abc','{replica}')
PARTITION BY toYYYYMM(create_time)
ORDER BY id;

创建分布式表

 CREATE TABLE repl_abc_all on cluster cluster1

(

`id` String,
`price` Float64,
`create_time` DateTime
)
ENGINE = Distributed('cluster1','default','repl_abc', rand());

插入测试数据

insert into repl_abc_all values('01X001',123,'2021-05-01 09:09:00'),('02X002',123,'2021-06-01 09:09:00'),('03W001
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值