clickhouse集群部署+用户管理

    公司要部署clickhouse集群,然后想去网上参考参考结果全都写的不简单易懂,就像藏私一手一样,因此决定写这篇文章记录一手实际部署

前期准备

(1)yum源更改

首先是安装clickhouse,三台服务器同样操作

安装阿里源(centos 7系统2024/6/30不维护了所以要更改yum源)

mv CentOS-Base.repo CentOS-Base.repo.bak

cd /etc/yum.repos.d/ 
wget http://mirrors.aliyun.com/repo/Centos-7.repo 
mv Centos-7.repo CentOS-Base.repo

yum clean all && yum makecache

yum repolist #查看是否启动阿里源

安装源

yum install -y yum-utils
yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo

(2)clickhouse安装

安装clickhouse服务端与客户端

 yum install -y clickhouse-server  clickhouse-client

等待安装完成,统一化标准将clickhouse的数据,日志都存储到LVM的/opt路径的逻辑卷下

mkdir -p /opt/clickhouse/{access,data,format_schemas,logs,tmp,top_level_domains,user_files,caches} #创建存储文件夹
chown -R clickhouse:clickhouse /opt/clickhouse #更改所属者与所属组

进入clickhouse文件路径

cd /etc/clickhouse-server #进入路径
#对存储位置进行更改
sed -i "s#/var/lib#/opt#g" /etc/clickhouse-server/config.xml 
sed -i "449s#/opt/clickhouse#/opt/clickhouse/data#g" /etc/clickhouse-server/config.xml
sed -i "s#/var/log/clickhouse-server#/opt/clickhouse/logs#g" /etc/clickhouse-server/config.xml

启动

systemctl start clickhouse-server 
systemctl enable clickhouse-server

这样三台单点搭建完毕了

ZK分布式集群部署

现在进行zookeeper搭建,集群间通信是通过zookeeper实现的,三点的clickhouse即可

部署zookeeper集群部署

第一步:JDK部署

本次将JDK放在/opt目录下 本次资源先unzip解压再用tar解压

#JAVA_HOME=/opt/jdk1.8.0_202 这里的JDK路径根据你实际的写
cat >> /etc/profile << EOF
JAVA_HOME=/opt/jdk1.8.0_202
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
EOF

source /etc/profile
java -version
如果不好使请更换使用该方式

JAVA_HOME=/opt/jdk1.8.0_202
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export PATH

或者使用clickhouse用户
vim /home/clickhouse/.bashrc 
放入上面的变量
并声明

第二步:部署zk分布式集群

(1)更改主机名

#更改主机名
hostnamectl set-hostname k8s1 && su
hostnamectl set-hostname k8s2 && su
hostnamectl set-hostname k8s3 && su

(2)解压压缩包并配置

tar -zxvf zookeeper-3.4.14.tar.gz -C /opt && mv zookeeper-3.4.14 zookeeper
mkdir /opt/zookeeper/{logs,data} && chmod 755 /opt/zookeeper/{logs,data}
mv /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg 


cat > /opt/zookeeper/conf/zoo.cfg  << EOF
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/logs
clientPort=2181
syncLimit=5
initLimit=10
tickTime=2000
server.1=k8s1:2888:3888   #这里的k8s1,k8s2,k8s3换成你的主机名
server.2=k8s2:2888:3888
server.3=k8s3:2888:3888
EOF

#这里的是把你的IP地址和对应主机名写入里面
cat >> /etc/hosts  << EOF  
10.1.1.5 k8s1
10.1.1.6 k8s2
10.1.1.7 k8s3
EOF

#在K8S1中执行
echo "1" > /opt/zookeeper/data/myid
#在K8S2中执行
echo "2" > /opt/zookeeper/data/myid
#在K8S3中执行
echo "3" > /opt/zookeeper/data/myid


cat >> /etc/profiler  << EOF
export ZOOKEEPER_HOME=/opt/zookeeper/bin/
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$ZOOKEEPER_HOME
EOF
source /etc/profile

#依次启动
cd /opt/zookeeper/bin && ./zkServer.sh start 

clickhouse集群搭建

(1)编辑配置文件

    vim /etc/clickhouse-server/config.xml
    #在297行处添加以下内容
    <listen_host>0.0.0.0</listen_host>
    <include_from>/etc/clickhouse-server/metrika.xml</include_from>
    <remote_servers incl="clickhouse_remote_servers" />
    <zookeeper incl="zookeeper-servers" optional="true" />
    <macros incl="macros" optional="true" />

(2)添加配置文件metrika

touch /etc/clickhouse-server/metrika.xml

vim metrika.xml

#将一下内容放入
<yandex>
   <clickhouse_remote_servers>
        <cyy_ck_1shards_3replicas>  <!-- 自定义集群名称 -->
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>k8s1</host> #你的主机名
                    <port>9000</port>
                    <user>你的用户</user>
                    <password>你的密码</password>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>k8s2</host>
                    <port>9000</port>
                    <user>你的用户</user>
                    <password>你的密码</password>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>k8s3</host>
                    <port>9000</port>
                    <user>你的用户</user>
                    <password>你的密码</password>
                </replica>
            </shard>
        </cyy_ck_1shards_3replicas>
    </clickhouse_remote_servers>

    <!--zookeeper相关配置 -->
    <zookeeper-servers>
        <node index="1">
            <host>k8s1</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>k8s2</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>k8s3</host>
            <port>2181</port>
        </node>
    </zookeeper-servers>


    <macros>
        <replica>k8s1</replica> #写你当前主机名
    </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>
        </case>
    </clickhouse_compression>
</yandex>


#传输该文本文件给k8s2与k8s3主机 修改该处,其余地方一致
    <macros>
        <replica>k8s2</replica> #写你当前主机名
    </macros>

    <macros>
        <replica>k8s3</replica> #写你当前主机名
    </macros>

(3)用户账号密码添加

#clickhouse使用的是sha256加密后的密码,账户密码信息存储在users.xml文件中
#举例

echo -n xqweeqsad123213sdfsf | openssl dgst -sha256    #生成加密密码


vim /etc/clickhouse-server/users.xml

#给default用户添加密码
<password_sha256_hex>加密后的密码</password_sha256_hex>这里存放default的管理用户密码

#以为添加用户tongbu为例
<tongbu>        
<password_sha256_hex>生成的加密密码</password_sha256_hex>     
      <networks>
            <ip>IP地址</ip> #允许这个账户登录的地址
      </networks>
      <profile>default</profile>
      <quota>default</quota>
</tongbu>

(4)启动

#三台服务器同时启动
systemctl start clickhouse-server

(5)验证

clickhouse-client
#输入default密码
#查看集群的命令是否搭建成功
	   select * from system.macros;
	   select * from system.clusters;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值