clickhouse分布式集群部署

1.节点规划

主机名IP地址分片副本
docker01-node192.168.56.10shard1副本1
docker02-node192.168.56.11shard1副本2
docker03-node192.168.56.12shard2副本1
docker04-node192.168.56.13shard2

副本2

规划4个节点, 2个分片, 每个分片2个副本。 分片1的副本在主机clickhouse1和clickhouse2上, 2分片的副本在主机clickhouse3和clickhouse4上。 

2.操作系统准备工作

1)修改主机名

      hostname按照上面主机名进行修改。

2)关闭防火墙、selinux等。

关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl is-enabled firewalld.service

selinux的配置:
vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled

检查SELinux的状态
[root@localhost etc]# getenforce
Disabled
[root@localhost etc]#

3)配置/etc/hosts

        必须在/etc/hosts配置主机名和ip地址映射关系, 否则副本之间的数据不能同步。

3.安装配置zookeeper

下载zookeeper,zookeeper版本要求3.4.5以上。

1)将下载的安装包上传到Linux上

      

2)将conf目录下的zoo_sample.cfg复制一份,命名为:zoo.cfg

      

      在zoo.cfg增加配置:

      

    上面配置目录需要手工创建。

3)环境配置:

export ZOOKEEPER_HOME=/opt/zk/apache-zookeeper-3.6.2-bin/
export PATH=$PATH:$ZOOKEEPER_HOME/bin

4)然后启动zookeeper即可。

     启动命令: ./bin/zkServer.sh start

     

4.在所有的主机安装clickhouse,参考之前的安装即可

5.修改clickhouse的网络相关配置

修改配置文件:/etc/clickhouse-server/config.xml

打开以下注释,并做相关修改:

clickhouse1上的修改如下:

Clickhouse2上的修改如下:

Clickhouse3上的修改如下:

Clickhouse4上的修改如下:

6.增加配置文件:/etc/metrika.xml

docker01-node的配置如下:

<?xml version="1.0" encoding="utf-8"?>

<yandex> 
  <clickhouse_remote_servers> 
    <mycluster> 
      <shard> 
        <internal_replication>true</internal_replication>  
        <replica> 
          <host>192.168.56.10</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.11</host>  
          <port>9000</port> 
        </replica> 
      </shard>  
      <shard> 
        <internal_replication>true</internal_replication> 
        <replica> 
          <host>192.168.56.12</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.13</host>  
          <port>9000</port> 
        </replica> 
      </shard> 
    </mycluster> 
  </clickhouse_remote_servers>  
  <zookeeper-servers> 
    <node index="1"> 
      <host>192.168.56.10</host>  
      <port>2181</port> 
    </node> 
  </zookeeper-servers>  
  <macros> 
    <layer>01</layer>  
    <shard>01</shard>  
    <replica>192.168.56.10</replica> 
  </macros>
</yandex>

docker02-node的配置如下:

<?xml version="1.0" encoding="utf-8"?>

<yandex> 
  <clickhouse_remote_servers> 
    <mycluster> 
      <shard> 
        <internal_replication>true</internal_replication>  
        <replica> 
          <host>192.168.56.10</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.11</host>  
          <port>9000</port> 
        </replica> 
      </shard>  
      <shard> 
        <internal_replication>true</internal_replication> 
        <replica> 
          <host>192.168.56.12</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.13</host>  
          <port>9000</port> 
        </replica> 
      </shard> 
    </mycluster> 
  </clickhouse_remote_servers>  
  <zookeeper-servers> 
    <node index="1"> 
      <host>192.168.56.10</host>  
      <port>2181</port> 
    </node> 
  </zookeeper-servers>  
  <macros> 
    <layer>01</layer>  
    <shard>01</shard>  
    <replica>192.168.56.11</replica> 
  </macros>
</yandex>

docker03-node的配置如下:

<?xml version="1.0" encoding="utf-8"?>
<yandex> 
  <clickhouse_remote_servers> 
    <mycluster> 
      <shard> 
        <internal_replication>true</internal_replication>  
        <replica> 
          <host>192.168.56.10</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.11</host>  
          <port>9000</port> 
        </replica> 
      </shard>  
      <shard> 
        <internal_replication>true</internal_replication> 
        <replica> 
          <host>192.168.56.12</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.13</host>  
          <port>9000</port> 
        </replica> 
      </shard> 
    </mycluster> 
  </clickhouse_remote_servers>  
  <zookeeper-servers> 
    <node index="1"> 
      <host>192.168.56.10</host>  
      <port>2181</port> 
    </node> 
  </zookeeper-servers>  
  <macros> 
    <layer>01</layer>  
    <shard>02</shard>  
    <replica>192.168.56.12</replica> 
  </macros>
</yandex>

docker04-node的配置如下:

<?xml version="1.0" encoding="utf-8"?>
<yandex> 
  <clickhouse_remote_servers> 
    <mycluster> 
      <shard> 
        <internal_replication>true</internal_replication>  
        <replica> 
          <host>192.168.56.10</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.11</host>  
          <port>9000</port> 
        </replica> 
      </shard>  
      <shard> 
        <internal_replication>true</internal_replication> 
        <replica> 
          <host>192.168.56.12</host>  
          <port>9000</port> 
        </replica>  
        <replica> 
          <host>192.168.56.13</host>  
          <port>9000</port> 
        </replica> 
      </shard> 
    </mycluster> 
  </clickhouse_remote_servers>  
  <zookeeper-servers> 
    <node index="1"> 
      <host>192.168.56.10</host>  
      <port>2181</port> 
    </node> 
  </zookeeper-servers>  
  <macros> 
    <layer>01</layer>  
    <shard>02</shard>  
    <replica>192.168.56.13</replica> 
  </macros>
</yandex>

其中如下这段配置在每个节点是不相同的:

<macros> 
    <layer>01</layer>  
    <shard>01</shard>  
    <replica>192.168.56.10</replica> 
</macros>

layer表示分层, shard表示分片的编号, 按照配置顺序从1开始。这里的01表示第一个分片。 replica配置副本的标识, 这里配置为本机的主机名。 使用这三个参数可以唯一表示一个副本分片。 这里表示layer为01的分片1的副本,副本标识:192.168.106.103。

配置完成后, 在每个节点启动ClickHouse服务。
systemctl start clickhouse-server

查看状态:systemctl status clickhouse-server

7.进入docker01-node查看系统表

命令:clickhouse-client -h 服务器ip地址

查看系统表命令:select * from system.clusters where cluster='mycluster';

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值