当前位置: 首页>移动开发>正文

clickhouse docker搭建集群 clickhouse集群搭建2副本

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 修改为配置文件中修改的明文密码

 

 

 


https://www.xamrdz.com/mobile/4du1935657.html

相关文章: