# Deploy_ClickHouse **Repository Path**: java_svn/deploy_clickhouse ## Basic Information - **Project Name**: Deploy_ClickHouse - **Description**: 部署 ClickHouse 单机/多分片/高可用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-06-09 - **Last Updated**: 2023-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 功能 * 部署单节点 ClickHouse * 部署单副本多分片 CK * 部署多副本多分片副本 * 仅需修改下 install_clickhouse.sh 中集群信息部分 * 基于Clickhouse-Backup备份(未完成) ## 示例环境 - CentOS 7 - 基于 yum 安装 - ClickHouse 21.8 - 架构:单副本多分片 - - zookeeper 集群 - ClickHouse 多分片集群 - 当前实例环境: 示例部署一个3分片集群 | **服务器** | **安装项** | | | -------------- | ---------- | ---------- | | 192.168.66.161 | zookeeper | ClickHouse | | 192.168.66.162 | zookeeper | ClickHouse | | 192.168.66.163 | zookeeper | ClickHouse | ## 限制说明 - 基于CentOS 7验证 - 仅支持单副本多分片集群 - 不支持负载均衡,如需负载均衡请自行部署haproxy ,或前面挂着slb等产品 - 机器不要太差,磁盘不要太小 - 防火墙需关闭或进行对应设置,selinux需关闭 ## 1.安装前准备 ### 1.1 设置host 在所有需安装的服务器上设置好host ```shell vi /etc/hosts # 添加如下信息 192.168.66.161 test01 192.168.66.162 test02 192.168.66.163 test03 ``` ### 1.2 安装JAVA环境 ```shell yum install java-1.8.0-openjdk -y ``` 使用如下命令查看JAVA_HOME ```shell [root@test02 install_clickhouse]# which java /usr/bin/java [root@test02 install_clickhouse]# ls -lrt /usr/bin/java lrwxrwxrwx 1 root root 22 Aug 9 12:06 /usr/bin/java -> /etc/alternatives/java [root@test02 install_clickhouse]# ls -lrt /etc/alternatives/java lrwxrwxrwx 1 root root 73 Aug 9 12:06 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/java ``` ## 2.执行脚本安装 ### 2.1 安装Zookeeper #### 2.1.1 需要修改自定义配置文件的参数 ```shell # 安装hosts,若为single,仅需传入单个IP,若为多个则以英文逗号隔开 HOSTS="192.168.66.161,192.168.66.162,192.168.66.163" # 绝对路径 ZK_INSTALL_DIR=/app # 绝对路径 JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64 # 这边只要名称 ZK_PKG_NAME=apache-zookeeper-3.6.3-bin.tar.gz # ZK端口,默认是2181 ZK_CLIENT_PORT=2181 ``` #### 2.1.2 选装单节点版zookeeper 单节点安装的话,在任意一个机器上执行 ```shell cd /opt/install_clickhouse [root@test01 install_clickhouse]# ./install_zookeeper.sh single 1 2022-06-08 12:06:17 [Note] 检查基础参数是否已设置... 2022-06-08 12:06:17 [Note] 当前模式为集群部署,当前部署节点3 ... 2022-06-08 12:06:17 [Note] 开始安装Zookeeper 2022-06-08 12:06:17 [Note] 检查是否已存在运行的ZK... 2022-06-08 12:06:17 [Note] 检查是否已安装jdk... 2022-06-08 12:06:17 [Note] jdk已安装... 2022-06-08 12:06:17 [Note] 检查ZK安装路径是否存在:/app 2022-06-08 12:06:17 [Note] 安装路径已存在:/app 2022-06-08 12:06:17 [Note] 解压Zookeeper... 2022-06-08 12:06:18 [Note] 文件名更改为zookeeper... 2022-06-08 12:06:18 [Note] 检查ZK数据目录是否为空... 2022-06-08 12:06:18 [Note] 创建zookeeper数据目录和日志目录... 2022-06-08 12:06:18 [Note] 配置Zookeeper参数文件... 2022-06-08 12:06:18 [Note] 添加myid文件 2022-06-08 12:06:18 [Note] 配置Zookeeper systemd启动 2022-06-08 12:06:18 [Note] 重载unit配置文件 2022-06-08 12:06:18 [Note] 使用systemctl命令启动zookeeper 2022-06-08 12:06:19 [Note] 安装完成,Zookeeper已启动... 可使用 systemctl status zookeeper.service 进行查看状态 2022-06-08 12:06:19 [Note] 将zookeeper服务加入开机启动项 Created symlink from /etc/systemd/system/default.target.wants/zookeeper.service to /usr/lib/systemd/system/zookeeper.service. 2022-06-08 12:06:19 [Note] Zookeeper安装完成 ``` #### 2.1.3 选装集群版zookeeper 需要有3个节点,需要修改对应的参数 ```shell # 节点1执行 ./install_zookeeper.sh cluster 1 # 节点2执行 ./install_zookeeper.sh cluster 2 # 节点3执行 ./install_zookeeper.sh cluster 3 ``` 查看集群leader: xxx/zookeeper/bin/zkServer.sh status ## 2.2 CK安装 #### 2.2.1 需要根据需求修改的参数 ```shell # 集群名称 CLICKHOUSE_CLUSTER_NAME="yqtest" # 数据存放路径 CLICKHOUSE_DATA_DIR=/app/clickhouse CLICKHOUSE_LOG_DIR=/app/clickhouse_log # 集群分片节点 CLICKHOUSE_SHARE_IPS="192.168.66.161,192.168.66.162,192.168.66.163" # 默认用户 default 的密码,若设置为 '' ,则表示不设置密码 CLICKHOUSE_DEFAULT_USER_PASSWORD='123456' # CK 常用的两个端口配置 CLICKHOUSE_HTTP_PORT=8123 CLICKHOUSE_TCP_PORT=9000 # ZK 的配置信息 ZOOKEEPER_IPS="192.168.66.161,192.168.66.162,192.168.66.163" ZOOKEEPER_PORT=2181 # query_log 与 query_thread_log 存留日期 LOG_RETENTION_DAYS=30 # 使用内存,默认获取服务器全量的 CK_MEMORY_ALLLOW_GB=`free -g|grep Mem|awk '{print $2}'` # 使用CPU核数,默认获取服务器全量的 CK_CPU_CORES=`cat /proc/cpuinfo| grep "cpu cores"| uniq|awk '{print $4}'` ``` #### 2.2.2 执行安装CK 脚本参数修改完成后,在各服务器上执行如下语句,假设当前有3台服务器,要安装成3分片集群 ```shell # 服务器1 cd /opt/install_clickhouse ./install_clickhouse.sh # 服务器2 cd /opt/install_clickhouse ./install_clickhouse.sh # 服务器3 cd /opt/install_clickhouse ./install_clickhouse.sh ``` #### 2.2.3 安装验证 ```shell # 任意一台登陆 clickhouse-client --password -m Password for user (default): # yqtest 是自定义的集群名称 test03 :) create database yq01 on cluster yqtest; CREATE DATABASE yq01 ON CLUSTER yqtest Query id: e3b14489-85e9-4b67-a0a6-ad93e49d85ca ┌─host───────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ 192.168.66.162 │ 9000 │ 0 │ │ 2 │ 0 │ │ 192.168.66.161 │ 9000 │ 0 │ │ 1 │ 0 │ │ 192.168.66.163 │ 9000 │ 0 │ │ 0 │ 0 │ └────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ 3 rows in set. Elapsed: 0.285 sec. test03 :) show databases; SHOW DATABASES Query id: 3ebd2967-abe6-44ad-90e1-06c0d0c86b11 ┌─name────┐ │ default │ │ system │ │ yq01 │ └─────────┘ 4 rows in set. Elapsed: 0.008 sec. ``` ## 2.3 安装异常处理 ### 2.3.1 停止并删除zookpeer ```shell systemctl stop zookeeper rm -f /lib/systemd/system/zookeeper.service # 修改为实际数据路径 rm -rf /app/zookeeper/data ``` ### 2.3.2 卸载删除CK信息 ```shell yum remove -y clickhouse* rm -rf /app/clickhouse rm -rf /app/clickhouse_log rm -rf /etc/clickhouse-server rm -rf /etc/clickhouse-client rm -rf /var/lib/clickhouse ``` -