1.节点规划

主机名 IP地址 分片 副本
docker01-node 192.168.56.10 shard1 副本1
docker02-node 192.168.56.11 shard1 副本2
docker03-node 192.168.56.12 shard2 副本1
docker04-node 192.168.56.13 shard2

副本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';

Logo

更多推荐