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