1、在server01、server02下载镜像
docker pull yandex/clickhouse-server

2、在server01、server02 docker安装 yandex/clickhouse-server
docker run -d --name ch1 --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server:19.15.2.2

3、在server01、server02 copy配置
创建目录:
mkdir -p /opt/ch01/conf /opt/ch01/data /opt/ch01/log
docker cp ch-server:/opt/ch01/conf /etc/clickhouse-server/

4、在server01、server02 停止单机CH、删除CH
docker stop clickhouse-server
docker rm clickhouse-server

5、在server01上安装zk
docker run --restart=always \
--name zookeeper -p 2181:2181 \
-v /opt/zk/conf/:/apache-zookeeper-3.5.6-bin/conf/ \
-v /opt/zk/data/:/data \
-v /opt/zk/log/:/datalog -v /home/allspark/zookeeper/logs/:/logs -d zookeeper

6、在server01、server02起一个CK,这里是将配置、日志、以及数据映射到宿主机
(三个路径依次是:数据存储目录、配置文件目录、日志存放目录)
docker run --restart always \
-d \
--name ch1 \
 --network=host \
--volume=/opt/ch01/data/:/var/lib/clickhouse/ \
--volume=/opt/ch01/conf/:/etc/clickhouse-server/ \
--volume=/opt/ch01/log/:/var/log/clickhouse-server/  \
--add-host server01:192.168.31.147 \
--add-host server02:192.168.31.146 \
yandex/clickhouse-server


 
7、修改config.xml
7.1、找到 interserver_http_host 节点,修改为本机IP 或者 0.0.0.0 ,不要使用127.0.0.1
7.2、listen_host 修改为本机IP,修改为本机IP 或者 0.0.0.0 ,不要使用127.0.0.1
7.3、在该文件的最后的前面一行添加
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
7.4、在下面添加,解决时区问题
<timezone>Asia/Shanghai</timezone>  

<zookeeper inclu="zookeeper-servers">
<remote_servers incl="clickhouse_remote_servers">


7.5、新增文件 metrika.xml
vim /opt/ch01/conf/metrika.xml
内容如下
<yandex>
    <!--ck集群节点-->
    <clickhouse_remote_servers>
        <clickhouse_my_cluster_name>
        <!--分片1-->
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <!--这里写节点1的IP4地址-->
                <host>server01</host> 
                <!--这里写节点1的tcp端口-->
                <port>9000</port>
                <!--这里写节点1的账号-->
                <user>default</user>
                <!--这里写节点1的账号对应的密码-->
                <password>default</password>
            </replica>
        </shard>
        <!--分片2-->
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <!--这里写节点2的IP4地址-->
                <!--这里的地址有点坑,它是docker容器的地址:查看命令:docker inspect 容器ID-->
                <host>server02</host>
                <!--这里写节点2的tcp端口-->
                <port>9000</port>
                <!--这里写节点2的账号-->
                <user>default</user>
                 <!--这里写节点2的账号对应的密码-->
                <password>default</password>
            </replica>
        </shard>
        </clickhouse_my_cluster_name>
    </clickhouse_remote_servers>


    <!--zookeeper相关配置-->
    <zookeeper-servers>
        <node index="1">
            <!--这里写Zookeeper的IP,如果用docker启动的: docker inspect 容器ID  查看docker容器的IPv4 -->
            <host>server01</host>
            <!--这里写Zookeeper的端口-->
            <port>2181</port>
        </node>
    </zookeeper-servers>

    <macros>
        <layer>01</layer>
        <shard>01</shard> <!--这个节点配置的分片号-->
        <replica>cluster-01-1</replica> <!--当前分片为1,副本为1-->
    </macros>

    <networks>
        <ip>::/0</ip>
    </networks>

    <!--压缩相关配置-->
    <clickhouse_compression>
        <case>
            <min_part_size>10000000000</min_part_size>
            <min_part_size_ratio>0.01</min_part_size_ratio>
            <method>lz4</method> <!--压缩算法lz4压缩比zstd快, 更占磁盘-->
        </case>
    </clickhouse_compression>
</yandex>

4、在server01、server02 重启 ch1
docker restart ch1

5、设置密码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'

最后修改于 2021-10-20 11:41:55
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇