目录
ClickHouse-keeper集群部署方式(不推荐,目前性能较差)
注:主从部署是基于每台单机的基础上,通过zookeeper负责协调,修改各节点的配置文件得以实现的。因此关于每个节点的部署和基础配置,完全参考单机版即可,以下仅提供有区别的部分内容的介绍。
clickhouse的副本不会自动同步新创建的表,即不会同步DDL操作。此问题需要格外注意,当添加表时,需在每个节点上依次创建新表。
ClickHouse的分片、副本等高可用集群部署,可使用自身的keeper实现,亦可使用zookeeper来实现。以下两种方式分别介绍,但推荐使用自身的keeper实现集群部署。
- 若启用TLS安全通信,此章可仅学习使用,直接跳转至安全配置部分进行配置
ClickHouse-keeper集群部署方式(不推荐,目前性能较差)
配置集群信息
- 进入配置文件目录,编辑config.xml配置文件
vim /etc/clickhouse-server/config.xml
- 找到<zookeeper>选项,解除注释并修改zookeeper信息(这里为了与zookeeper区分开来,建议使用9181端口)
<zookeeper>
<node>
<host>big1</host>
<port>9181</port>
</node>
<node>
<host>big2</host>
<port>9181</port>
</node>
<node>
<host>big3</host>
<port>9181</port>
</node>
</zookeeper>
配置文件中添加keeper_server标签
- 如下内容
<keeper_server>
<tcp_port>9181</tcp_port>
<server_id>1</server_id>
<log_storage_path>/data/clickhouse/coordination/log</log_storage_path>
<snapshot_storage_path>/data/clickhouse/coordination/snapshots</snapshot_storage_path>
<coordination_settings>
<operation_timeout_ms>10000</operation_timeout_ms>
<session_timeout_ms>30000</session_timeout_ms>
<raft_logs_level>trace</raft_logs_level>
<snapshots_to_keep>10</snapshots_to_keep>
</coordination_settings>
<raft_configuration>
<server>
<id>1</id>
<hostname>big1</hostname>
<port>9444</port>
</server>
<server>
<id>2</id>
<hostname>big2</hostname>
<port>9444</port>
</server>
<server>
<id>3</id>
<hostname>big3</hostname>
<port>9444</port>
</server>
</raft_configuration>
</keeper_server>
- 配置介绍
- Keeper 配置有以下这些参数:
- tcp_port — 客户端连接的端口(应与zookeeper标签的<port>保持一致).
- tcp_port_secure — client 和 keeper-server之间的SSL连接的安全端口.
- server_id — 唯一的服务器ID, ClickHouse Keeper 集群的每个参与组件都必须有一个唯一的编号(1, 2, 3, 等等).
- log_storage_path — 协调日志的路径, 最好存放在不繁忙的机器上 (和ZooKeeper一样).
- snapshot_storage_path — 协调快照的路径
- <coordination_settings>部分:
- operation_timeout_ms — 单个客户端操作的超时时间(ms)(默认值:10000)。
- min_session_timeout_ms — 客户端会话的最小超时时间(ms)(默认值:10000)。
- session_timeout_ms — 客户端会话最大超时时间(ms)(默认100000)。
- dead_session_check_period_ms — ClickHouse Keeper检查死会话并删除它们的频率(毫秒)(默认值:500)。
- heart_beat_interval_ms — ClickHouse Keeper的leader发送心跳频率(毫秒)(默认为500)。
- election_timeout_lower_bound_ms — 如果follower在此间隔内没有收到leader的心跳,那么它可以启动leader选举(默认为1000).
- election_timeout_upper_bound_ms — 如果follower在此间隔内没有收到leader的心跳,那么它必须启动leader选举(默认为2000)。
- rotate_log_storage_interval — 单个文件中存储的日志记录数量(默认100000条)。
- reserved_log_items — 在压缩之前需要存储多少协调日志记录(默认100000)。
- snapshot_distance — ClickHouse Keeper创建新快照的频率(以日志记录的数量为单位)(默认100000)。
- snapshots_to_keep — 保留多少个快照(默认值:3)。
- stale_log_gap — 当leader认为follower过时并发送快照给follower而不是日志时的阈值(默认值:10000)。
- fresh_log_gap — 当节点变成新鲜时的间隔(默认值:200)。
- max_requests_batch_size - 发送到RAFT之前的最大批量请求数(默认值:100)。
- force_sync — 在每次写入协调日志时是否调用' fsync '(默认值:true)。
- quorum_reads — 通过整个RAFT共识以类似的速度执行读请求和写请求(默认值:false)。
- raft_logs_level — 关于协调的文本日志级别 (trace, debug, 等等) (默认: system default).
- auto_forwarding — 允许将follower的请求转发到leader (默认: true).
- shutdown_timeout — 等待内部连接完成并关闭(ms)(默认值:5000)。
- startup_timeout — 如果服务器在指定的超时时间内没有连接到其他仲裁参与者,它将终止(ms)(默认值:30000)。
- four_letter_word_white_list — 4个字母的白名单列表 (默认: "conf,cons,crst,envi,ruok,srst,srvr,stat,wchc,wchs,dirs,mntr,isro").
- 每个<server>的主要参数是:
- id — 仲裁中的服务器标识符。
- hostname — 放置该服务器的主机名。
- port — 服务器监听连接的端口。
- Keeper 配置有以下这些参数:
创建以上配置中keeper服务的快照与日志目录
mkdir /data/clickhouse/coordination/snapshots -p
mkdir /data/clickhouse/coordination/log
chown clickhouse:clickhouse -R /data/clickhouse