前置准备

服务器信息

192.168.26.101
192.168.26.102
192.168.26.103

下载如下软件包并传送到指定目录/data/software/clickhouse/
这边采用了clickhouse 23.4.2.11zookeeper 3.8.4版本。
下载地址如下:

https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-23.4.2.11.x86_64.rpm
https://packages.clickhouse.com/rpm/stable/clickhouse-server-23.4.2.11.x86_64.rpm
https://packages.clickhouse.com/rpm/stable/clickhouse-client-23.4.2.11.x86_64.rpm
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz

修改系统如下配置以达到clickhouse的要求

##系统前置配置
sudo vim /etc/security/limits.conf
##末尾加入如下内容
* soft nofile 65535
* hard nofile 65535
* soft nproc 131072
* hard nproc 131072

sudo vim /etc/security/limits.d/20-nproc.conf
##末尾加入如下内容
* soft nofile 65535
* hard nofile 65535
* soft nproc 131072
* hard nproc 131072

##安装依赖
yum install -y libtool
yum install -y *unixODBC*

安装zookeeper集群

cd /data/software/clickhouse/
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz  -C /data/
mv /data/apache-zookeeper-3.8.4-bin  /data/zookerper-3.8.4
mkdir /data/zookerper-3.8.4/zkData
## server对应编号 如2或其他,每台服务器不同【这边我使用了ip最后一位作为myid】
echo "101" > /data/zookerper-3.8.4/zkData/myid
## 配置zoo.cfg
mv /data/zookerper-3.8.4/conf/zoo_sample.cfg /data/zookerper-3.8.4/conf/zoo.cfg
vim /data/zookerper-3.8.4/conf/zoo.cfg
# 修改数据存储路径配置
dataDir=/data/zookerper-3.8.4/zkData/
## 增加集群配置如下:
################cluster##############
server.101=192.168.26.101:2888:3888
server.102=192.168.26.102:2888:3888
server.103=192.168.26.103:2888:3888

## 配置参数解读
# server.A=B:C:D
# A是一个数字,表示这个是第几号服务器,集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里有一个数据就是A的值我这边采用ip最后一位
# zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里的配置信息比较从而判断是哪个server
# B是这个服务器的地址
# C是这个服务器follower与集群中Leader服务器交换信息的端口,默认是2888
# D是集群中Leader服务器挂了以后,用来重新进行选举通信的端口,默认是3888

##启动集群
cd /data/zookerper-3.8.4/
bin/zkServer.sh start
##查看状态
bin/zkServer.sh status

## zookeeper的zoo.cfg 没有做本地适应配置,后续可增加,集群最少需要三台服务器才能完成选举

clickhouse 集群安装

##安装rpm包
cd /data/software/clickhouse/
rpm -ivh *.rpm
##修改配置文件 
vim /etc/clickhouse-server/config.xml
#数据文件路径 <path>/var/lib/clickhouse</path>
#日志文件路径 <log>/var/log/clickhouse-server/clickhouse-server.log</log>
#新增集群指定配置 <include_from>/etc/clickhouse-server/config.d/metrika.xml<include_from>

配置clickhouse集群

vim /etc/clickhouse-server/config.d/metrika.xml

<?xml  version="1.0"?>
<yandex>
  <remote_servers>
    <dq_ck_servers> <!--集群名称-->
      <shard>     <!--集群的第一个分片-->
        <internal_replication>true</internal_replication>
        <replica> <!--第一个replica是分片本体-->
          <host>192.168.110.53</host>
          <port>9002</port>
        </replica>

        <replica> <!--第二个replica是分片一号副本-->
          <host>192.168.110.59</host>
          <port>9002</port>
        </replica>

        <replica> <!--第三个replica是分片二号副本-->
          <host>192.168.110.61</host>
          <port>9002</port>
        </replica>    

      </shard>
    </dq_ck_servers>
  </remote_servers>

  <zookeeper>
    <node index="53">
      <host>192.168.110.53</host>
      <port>2181</port>
    </node>
    <node index="59">
      <host>192.168.110.59</host>
      <port>2181</port>
    </node>
    <node index="61">
      <host>192.168.110.61</host>
      <port>2181</port>
    </node>
  </zookeeper>

  <macros>
    <shard>01</shard>  <!--不同机器放的分片数不一样,这边是只有一分片两副本所以都是01-->
    <replica>rep_1_2</replica>  <!--不同机器放的副本数不一样,这便是一分片两副本_2和_3是副本,_1是本体-->
  </macros>
   <networks>
        <ip>::/0</ip>
    </networks>

</yandex>

启动指令

systemctl start clickhouse-server
systemctl restart clickhouse-server