1、部署环境及版本说明
以下部署配置按照生产环境为例进行安装。
操作系统 | 配置 | IP | 版本 |
Centos8 | 32C 128G | 192.168.2.101 | clickhouse_20.9.6.14 zookeeper-3.6.2 |
Centos8 | 32C 128G | 192.168.2.102 | clickhouse_20.9.6.14 zookeeper-3.6.2 |
Centos8 | 32C 128G | 192.168.2.103 | clickhouse_20.9.6.14 zookeeper-3.6.2 |
Centos8 | 32C 128G | 192.168.2.104 | clickhouse_20.9.6.14 |
2、zookeeper安装
2.1 安装包下载并解压
下载地址:https://downloads.apache.org/zookeeper/zookeeper-3.6.2/
2.2 配置修改
1.将 conf/zoo_sample.cfg 文件复制并重命名为 conf/zoo.cfg 文件。
cp zoo_sample.cfg zoo.cfg
2.修改zoo.cfg文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper/data
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
admin.enableServer=false
server.1=192.168.2.101:2888:3888
server.2=192.168.2.102:2888:3888
server.3=192.168.2.103:2888:3888
注:
1. 修改数据存放目录dataDir
2. admin.enableServer=false关闭zookeeper自带的管理服务平台
3. 添加定时清理配置
因clickhouse对zk的依赖较大,会在zk中定期备份快照,为了防止磁盘撑爆,需注意以下两个配置并重启zk集群:
${ZOOKEEPER_HOME}/conf/zoo.cfg
# 从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,默认不开启,需要手动开启。
# 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。
autopurge.snapRetainCount=3
# 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。
autopurge.purgeInterval=1
4.配置集群之间的服务端口
3.创建myid文件
分别需要在三台机的dataDir目录下创建myid文件,内容分别为1/2/3
第一台:echo 1 > myid
第二台:echo 2 > myid
第三台:echo 3 > myid
2.3 启动zookeeper
启动: bin/ zkServer.sh start
查看状态: bin/zkServer.sh status
3、clickhouse集群安装
3.1 环境准备
1)下载以下三个rpm安装包
下载地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/
clickhouse-client-20.9.6.14.noarch.rpm
clickhouse-server-20.9.6.14.noarch.rpm
clickhouse-common-static-20.9.6.14-2.x86_64.rpm
2)修改linux最大进程数和最大文件打开数(需root权限)
vim /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
然后重启,然后用ulimit -a 查看
3.2 安装(需root权限)
执行rpm命令安装以下rpm包:
clickhouse-client-20.9.6.14.noarch.rpm
clickhouse-server-20.9.6.14.noarch.rpm
clickhouse-common-static-20.9.6.14-2.x86_64.rpm
rpm -ivh *.rpm
3.3 配置修改
1)修改 /etc/clickhouse-server/config.xml(红色部分为需要修改部分)
1.修改日志存放路径(根据实际磁盘情况存储)
<!-- 若日志目录为:/data/clickhouse-logs,修改如下: -->
<logger>
<level>error</level>
<log>/data/clickhouse-logs/clickhouse-server.log</log>
<errorlog>/data/clickhouse-logs/clickhouse-server.err.log</errorlog>
<size>1000M</size>
<count>10</count>
</logger>
2.注释mysql端口(暂不需要使用mysql)
<!-- <mysql_port>9004</mysql_port> -->
3.监听地址取消注释
<listen_host>0.0.0.0</listen_host>
4.配置副本节点之间同步的主机地址
<interserver_http_host>主机ip</interserver_http_host>
5.修改数据存储目录(根据实际磁盘情况存储)
<!-- 若数据目录为:/data/clickhouse-data,修改如下: -->
<path>/data/clickhouse-data</path>
<tmp_path>/data/clickhouse-data/tmp/</tmp_path>
<user_files_path>/data/clickhouse-data/user_files/</user_files_path>
<access_control_path>/data/clickhouse-data/access/</access_control_path>
<format_schema_path>/data/clickhouse-data/format_schemas/</format_schema_path>
6.修改分片配置
<remote_servers>
<!-- 2分片 2副本 -->
<ch_2shards_2replicas>
<!--分片1-->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.2.101</host>
<port>9000</port>
<user>default</user>
<password>xxx</password>
</replica>
<replica>
<host>192.168.2.102</host>
<port>9000</port>
<user>default</user>
<password>xxx</password>
</replica>
</shard>
<!--分片2-->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.2.103</host>
<port>9000</port>
<user>default</user>
<password>xxx</password>
</replica>
<replica>
<host>192.168.2.104</host>
<port>9000</port>
<user>default</user>
<password>xxx</password>
</replica>
</shard>
</ch_2shards_2replicas>
</remote_servers>
注: 1.需要将原来<remote_servers>里面的默认配置删掉,替换如上配置
2.需更改生产环境ip
3.xxx配置为明文密码
7.修改zookeeper配置
<zookeeper>
<node index="1">
<host>192.168.2.101</host>
<port>2181</port>
</node>
<node index="2">
<host>192.168.2.102</host>
<port>2181</port>
</node>
<node index="3">
<host>192.168.2.103</host>
<port>2181</port>
</node>
</zookeeper>
注:1.需要将原来<zookeeper incl="zookeeper-servers" optional="true" />的默认配置删掉,替换如上配置,并修改ip和端口
8.别名配置
<macros>
<shard>01</shard>
<replica>192.168.2.101</replica>
</macros>
注:每台服务器的别名配置需相应的修改
192.168.2.101为分片1
<macros>
<shard>01</shard>
<replica>192.168.2.101</replica>
</macros>
192.168.2.102为分片1
<macros>
<shard>01</shard>
<replica>192.168.2.102</replica>
</macros>
192.168.2.103为分片2
<macros>
<shard>02</shard>
<replica>192.168.2.103</replica>
</macros>
192.168.2.104为分片2
<macros>
<shard>02</shard>
<replica>192.168.2.104</replica>
</macros>
9.时区设置
<timezone>Asia/Shanghai</timezone>
10.长连接时间设置
<keep_alive_timeout>30</keep_alive_timeout>
2)修改 /etc/clickhouse-server/users.xml
1.配置查询时使用内存
<profiles>
<default>
<max_memory_usage>107374182400</max_memory_usage>
<max_memory_usage_for_all_queries>107374182400</max_memory_usage_for_all_queries>
<max_bytes_before_external_sort>64424509440</max_bytes_before_external_sort>
<max_bytes_before_external_group_by>64424509440</max_bytes_before_external_group_by>
<background_pool_size>32</background_pool_size>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</default>
<readonly>
<readonly>1</readonly>
</readonly>
</profiles>
注:
max_memory_usage :单次查询单机最大内存使用量,配置为100G,即107374182400字节
max_memory_usage_for_all_queries:所有查询单机最大内存使用量,配置为100G,即107374182400字节
max_bytes_before_external_sort:内存排序单机最大使用量,配置为60G,即64424509440字节
max_bytes_before_external_group_by:内存聚合单机最大使用量,配置为60G,即64424509440字节
background_pool_size: 数据合并后台线程数,根据CPU核数,配置为32
2.密码配置
<users>
<default>
<password_sha256_hex>xxx</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<access_management>1</access_management>
</default>
</users>
注:
1. 密码使用 SHA256 类型
密码生成规则如下(在linux环境下执行):
PASSWORD=yourpassword
echo -n "$PASSWORD" | sha256sum | tr -d '-'
(config.xml里面分片配置的明文密码需要与user.xml里面的密文密码相匹配)
2. access_management改为1,方便default用户通过sql管理用户权限
3.4 分发到其他机器
scp config.xml users.xml root@192.168.2.102:/etc/clickhouse-server/
scp config.xml users.xml root@192.168.2.103:/etc/clickhouse-server/
scp config.xml users.xml root@192.168.2.104:/etc/clickhouse-server/
注: 其他机器只需根据3.3-1)第7点修改macros别名即可
3.5 设置目录权限
# 创建数据目录(config.xml中配置的数据目录)
mkdir /data/clickhouse-data
# 分配数据目录权限(clickhouse用户在安装时会自动创建)
chown clickhouse:clickhouse /data/clickhouse-data
# 创建日志目录(config.xml中配置的日志目录)
mkdir /data/clickhouse-logs
# 分配日志目录权限(clickhouse用户在安装时会自动创建)
chown clickhouse:clickhouse /data/clickhouse-logs
3.6 启动
# 启动
systemctl start clickhouse-server
# 开机启动
systemctl enable clickhouse-server
# 查看状态
systemctl status clickhouse-server
3.7 用户权限分配与管理
1.使用default用户登录并设置参数
clickhouse-client -h 192.168.2.101 --port 9000 -u default --password xxx
set allow_introspection_functions=1;
2.创建角色并赋予default库只读权限
create role analysisRole on cluster ch_2shards_2replicas;
grant select on default.* to analysisRole on cluster ch_2shards_2replicas;
3.创建用户并赋予角色
create user analysis host any IDENTIFIED WITH sha256_password BY 'xxx' on cluster ch_2shards_2replicas;
grant analysisRole to analysis on cluster ch_2shards_2replicas;
4.查看用户权限
Show grants for analysis;
此时,一个用户analysis的只读权限就设置好了。
3.8 导入表结构
选择其中一台clickhouse机器执行:
clickhouse-client -h $host --port $port -u $username --password $password --multiquery < clickhouse.sq
注:$host 修改为clickhouse所在ip,写一个即可
$port 修改为默认端口9000
$username 修改为 default
$password 修改为配置文件中修改的明文密码