环境信息
主机名
IP地址
角色
软件版本
ch01
192.168.1.17
zookeeper、clickhouse
zookeeper 3.9.2 clickhouse 21.7.3.14
ch02
192.168.1.18
zookeeper、clickhouse
zookeeper 3.9.2 clickhouse 21.7.3.14
ch03
192.168.1.19
zookeeper、clickhouse
zookeeper 3.9.2 clickhouse 21.7.3.14
基础环境配置 修改主机名添加hosts
hostnamectl set-hostname ch01 bash cat /etc/hosts 192.168.1.17 ch01 192.168.1.18 ch02 192.168.1.19 ch03
安装jdk
tar xf jdk-8u212-linux-x64.tar.gz -C /usr/local/ cat >/etc/profile.d/java.sh << 'EOF' export JAVA_HOME=/usr/local/jdk1.8.0_212 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH EOF source /etc/profile java -version
修改最大文件数限制
cat >> /etc/security/limits.conf <<EOF soft nofile 65536 hard nofile 65536 soft nproc 131072 hard nproc 131072 EOF cat >> /etc/security/limits.d/20-nproc.conf <<EOF soft nofile 65536 hard nofile 65536 soft nproc 131072 hard nproc 131072 EOF
ZooKeeper 下载软件包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
解压压缩包
tar xf apache-zookeeper-3.9.2-bin.tar.gz -C /opt/ mv /opt/apache-zookeeper-3.9.2-bin/ /opt/apache-zookeeper-3.9.2
配置环境变量
cat >/etc/profile.d/zookeeper.sh << 'EOF' export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.9.2 export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH EOF source /etc/profile
创建配置文件
cp /opt/apache-zookeeper-3.9.2/conf/zoo_sample.cfg /opt/apache-zookeeper-3.9.2/conf/zoo.cfg
创建目录
mkdir -p /opt/apache-zookeeper-3.9.2/{data,log}
编辑配置文件
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper clientPort=2181 dataDir=/opt/apache-zookeeper-3.9.2/data dataLogDir=/opt/apache-zookeeper-3.9.2/logs server.0=192.168.1.17:2888:3888 server.1=192.168.1.18:2888:3888 server.2=192.168.1.19:2888:3888
创建节点id,ch01:0,ch02:1,ch03:2
echo $id >/opt/apache-zookeeper-3.9.2/data/myid
创建systemd配置文件
cat > /etc/systemd/system/zookeeper.service << EOF [Unit] Description=Apache ZooKeeper Server After=network.target [Service] User=root Group=root Type=forking Environment=JAVA_HOME=/usr/local/jdk1.8.0_212 ExecStart=/opt/apache-zookeeper-3.9.2/bin/zkServer.sh start ExecStop=/opt/apache-zookeeper-3.9.2/bin/zkServer.sh stop ExecReload=/opt/apache-zookeeper-3.9.2/bin/zkServer.sh restart RestartSec=10 Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target EOF
启动zk服务
systemctl enable zookeeper systemctl start zookeeper
ClickHouse 部署架构图 本集群采用 1 分片 3 副本(1 Shard, 3 Replicas) 架构,所有节点同时承担 ZooKeeper 和 ClickHouse 角色:
+---------+ +---------+ +---------+ | ch01 | | ch02 | | ch03 | | (R1) | | (R2) | | (R3) | |---------| |---------| |---------| | Shard 1 |<--->| Shard 1 |<--->| Shard 1 | | Replica | | Replica | | Replica | +---------+ +---------+ +---------+
Shard 1:逻辑数据分片
Replica R1/R2/R3:同一分片的三个副本,提供高可用
所有节点均运行 ZooKeeper,组成 ZooKeeper 集群(Quorum)
分布式表可通过 default 集群名访问此拓扑
部署 安装包下载地址:https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.3.14-stable
安装软件
rpm -ivh clickhouse-client-21.7.3.14-2.noarch.rpm clickhouse-common-static-21.7.3.14-2.x86_64.rpm clickhouse-server-21.7.3.14-2.noarch.rpm
创建数据目录
mkdir -p /data/clickhouse/chown -R clickhouse:clickhouse /data/clickhouse/chmod 750 /data/clickhouse
手动清理/etc/clickhouse-server/config.xml文件中以下配置
<remote_servers> ... </remote_servers>
创建配置文件
sudo tee /etc/clickhouse-server/config.d/cluster.xml <<'EOF' <yandex> <listen_host>0.0.0.0</listen_host> <path>/data/clickhouse/</path> <zookeeper> <node> <host>192.168.1.17</host> <port>2181</port> </node> <node> <host>192.168.1.18</host> <port>2181</port> </node> <node> <host>192.168.1.19</host> <port>2181</port> </node> </zookeeper> <remote_servers> <default> <shard> <replica><host>192.168.1.17</host><port>9000</port></replica> <replica><host>192.168.1.18</host><port>9000</port></replica> <replica><host>192.168.1.19</host><port>9000</port></replica> </shard> </default> </remote_servers> <!-- 启用分布式 DDL --> <distributed_ddl> <path>/clickhouse/task_queue/ddl</path> </distributed_ddl> </yandex> EOF chmod 644 /etc/clickhouse-server/config.d/cluster.xml
创建macros.xml
sudo tee /etc/clickhouse-server/config.d/macros.xml <<'EOF' <yandex> <macros> <shard>01</shard> <replica>10.232.15.158</replica> </macros> </yandex> EOF
编辑配置文件/etc/clickhouse-server/users.xml
<yandex > <user > <default > <password > 123456</password > </default > </user > </yandex >
赋予权限
sudo chown clickhouse:clickhouse /etc/clickhouse-server/config.d/macros.xmlsudo chmod 640 /etc/clickhouse-server/config.d/macros.xml
启动服务
systemctl enable clickhouse-server systemctl start clickhouse-server
验证 登录CH
clickhouse-client --password ClickHouse client version 21.7.3.14 (official build). Password for user (default): Connecting to localhost:9000 as user default. Connected to ClickHouse server version 21.7.3 revision 54449. ch01 :)
查看集群状态
ch01 :) select cluster,shard_num,shard_weight,replica_num,host_address,port from system.clusters; SELECT cluster, shard_num, shard_weight, replica_num, host_address, port FROM system.clusters Query id: 7119c4c2-ac7d-4b78-b4ea-128f8b94c7ff ┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_address─┬─port─┐ │ default │ 1 │ 1 │ 1 │ 192.168.1.17 │ 9000 │ │ default │ 2 │ 1 │ 1 │ 192.168.1.18 │ 9000 │ │ default │ 3 │ 1 │ 1 │ 192.168.1.19 │ 9000 │ └─────────┴───────────┴──────────────┴─────────────┴──────────────┴──────┘ 3 rows in set. Elapsed: 0.005 sec.
参考链接:https://blog.csdn.net/qq_44700578/article/details/134859622