ClickHouse实战-ClickHouse集群构建

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ClickHouse集群构建

注意:我们需要在每台节点中部署ClickHouse部署方式详见ClickHouse安装部署

我们一般配置ClickHouse集群只需要修改Zookeeper存储和节点添加即可。

节点信息


主机 IP
ck1 10.10.0.1
ck2 10.10.0.2
ck3 10.10.0.3

配置Zookeeper


/etc/clickhouse-server/config.xml文件中添加以下配置信息

<zookeeper>
    <node index="1">
        <host>zk1</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>zk2</host>
        <port>2181</port>
    </node>
    <node index="3">
        <host>zk3</host>
        <port>2181</port>
    </node>
</zookeeper>

改配置文件主要配置连接Zookeeper的信息,每个节点的index不可重复

注意要添加到yandex节点中

配置ClickHouse集群


配置ClickHouse集群节点需要配置remote_servers节点

/etc/clickhouse-server/config.xml文件中添加以下配置信息

<remote_servers>
    <ck_cluster>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ck1</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ck2</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ck2</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ck3</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ck3</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ck1</host>
                <port>9000</port>
            </replica>
        </shard>
    </ck_cluster>
</remote_servers>
  • ck_cluster 集群标识,可以自行规定,在创建分布式表(引擎为Distributed)时需要用到。
  • weight 每个分片的写入权重值,数据写入时会有较大概率落到weight值较大的分片,这里全部设为1。
  • internal_replication 是否启用内部复制,即写入数据时只写入到一个副本,其他副本的同步工作靠复制表和ZooKeeper异步进行。

我们在shard分片中设置的是循环分片这样保证我们复制的节点某一个宕机后可以正常运行将配置分发到所有部署ClickHouse的节点中进行服务重启

此时我们的ClickHouse集群已经搭建完成!

我们还可以使用以下方式构建CK集群(也可以实现多集群构建)

修改集群配置


  • 修改vim /etc/clickhouse-server/config.xml配置文件
<zookeeper>
    <node index="1">
        <host>zk1</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>zk2</host>
        <port>2181</port>
    </node>
    <node index="3">
        <host>zk3</host>
        <port>2181</port>
    </node>
</zookeeper>

<remote_servers>
    <ck_cluster>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ck1</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ck2</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ck2</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ck3</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <weight>1</weight>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ck3</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ck1</host>
                <port>9000</port>
            </replica>
        </shard>
    </ck_cluster>
</remote_servers>

删除以上两个配置信息,新增以下内容

<remote_servers incl="clickhouse_remote_servers" />
<zookeeper incl="zookeeper-servers" optional="true" />

<include_from>/etc/clickhouse-server/ck-cluster.xml</include_from>
  • remote_servers 标志我们在外部文件中引用的集群配置节点是clickhouse_remote_servers
  • zookeeper 标志我们在外部文件引用的ZK集群配置节点是zookeeper-servers
  • include_from 标志我们引用的外部配置文件,指定文件的绝对路径

新建集群配置文件


刚刚我们指定了/etc/clickhouse-server/ck-cluster.xml配置文件,此时我们需要去对该文件做配置

  • 创建新的配置文件
touch /etc/clickhouse-server/ck-cluster.xml

在新的配置文件中增加zookeeperclickhouse集群信息

<yandex>
    <zookeeper-servers>
        <node index="1">
            <host>zk1</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>zk2</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>zk3</host>
            <port>2181</port>
        </node>
    </zookeeper-servers>
    
    <clickhouse_remote_servers>
        <ck_cluster>
            <shard_1>
                <weight>1</weight>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>ck1</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>ck2</host>
                    <port>9000</port>
                </replica>
            </shard_1>
            <shard_2>
                <weight>1</weight>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>ck2</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>ck3</host>
                    <port>9000</port>
                </replica>
            </shard_2>
            <shard_3>
                <weight>1</weight>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>ck3</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>ck1</host>
                    <port>9000</port>
                </replica>
            </shard_3>
        </ck_cluster>
    </clickhouse_remote_servers> 

    <networks>
        <ip>::/0</ip>
    </networks>
</yandex>

此处需要注意的是在yandex中配置的相关节点一定到和config.xml中的

                                      <zookeeper incl="zookeeper-servers" optional="true" />这两个属性的incl一致,否则会扫描不到集群标志

修改配置后我们不需要重启服务,ClickHouse会自动加载修改后的配置信息
我们配置多个集群使用多个配置文件即可,多个replica节点配置多个也是可以的

相关文章
|
3月前
|
存储 数据库
云数据库ClickHouse企业版集群费用 | 企业版费用
云数据库ClickHouse企业版集群费用由计算资源费用和存储资源费用两部分组成。本文介绍不同计费项的费用。
39 0
|
7月前
|
存储 Java 数据库
clickhouse集群,双实例多副本集群部署
clickhouse集群,双实例多副本集群部署
|
Linux OLAP 数据安全/隐私保护
CentOS7下搭建ClickHouse集群
CentOS7下搭建ClickHouse集群
403 1
CentOS7下搭建ClickHouse集群
|
存储 SQL 分布式计算
clickhouse集群安装与实践
因项目需要,将阿里云中间件tablestore替换成clickhouse,并将tablestore中的亿级数据迁移到clickhouse
1041 2
|
11月前
|
存储 Kubernetes Java
【数据库】clickhouse 集群安装准备(CentOS 版)(一)
【数据库】clickhouse 集群安装准备(CentOS 版)(一)
296 0
|
SQL 缓存 算法
14.【clickhouse】ClickHouse从入门到放弃-实战
【clickhouse】ClickHouse从入门到放弃-实战
14.【clickhouse】ClickHouse从入门到放弃-实战
|
存储 分布式计算 数据挖掘
clickhouse集群zookeeper平滑搬迁实践
clickhouse集群zookeeper平滑搬迁实践
768 0
clickhouse集群zookeeper平滑搬迁实践
|
SQL Prometheus 监控
一文读懂clickhouse集群监控
一文读懂clickhouse集群监控
2067 2
一文读懂clickhouse集群监控
|
Docker 容器
使用容器编排工具docker swarm安装clickhouse多机集群
1.首先需要安装docker最新版,docker 目前自带swarm容器编排工具 2.选中一台机器作为master,执行命令sudo docker  swarm init [options] 3,再需要加入集群的集群上执行此命令   4.
4175 0
|
SQL 消息中间件 弹性计算
基于Flink+ClickHouse构建实时游戏数据分析最佳实践
本实践介绍如何快速收集海量用户行为数据,实现秒级响应的实时用户行为分析,并通过实时流计算、云数据库ClickHouse等技术进行深入挖掘和分析,得到用户特征和画像,实现个性化系统推荐服务。
基于Flink+ClickHouse构建实时游戏数据分析最佳实践