欢迎光临
我们一直在努力

Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡

文章目录

  • 一、节点规划
  • 二、JDK安装
  • 三、Zookeeper安装
  • 四、ClickHouse安装
      • 1、软件下载
        • (1)tar安装包下载
        • (2)rpm安装包下载
      • 2、前置准备
        • (1)CentOS取消打开文件数限制
        • (2)CentOS取消SELINUX
      • 3、安装
        • (1)tar安装
        • (2)rpm安装
      • 4、配置clickhouse
        • (1)创建必须的目录
        • (2)配置config.xml
          • ①基本配置
          • ②配置集群
          • ③配置节点宏
          • ④配置Zookeeper
      • 5、启动clickhouse集群
        • (1)启动zookeeper
        • (2)启动clickhouse
      • 6、集群验证
        • (1)查看集群信息
        • (2)创建复制表
      • 7、密码配置
        • (1)default用户密码设置
        • (2)新建用户
          • ① 使用文本方式
          • ② 使用SQL命令(官方推荐)
  • 五、chproxy安装
      • 1、软件下载
      • 2、解压
      • 3、配置chproxy
      • 4、启动
  • 六、远程连接

一、节点规划

IP主机名软件
192.168.10.102 node02 jdk,zookeeper,clickhouse,chproxy
192.168.10.103 node03 jdk,zookeeper,clickhouse
192.168.10.104 node04 jdk,zookeeper,clickhouse

二、JDK安装

参考本人此篇文章:Linux软件安装 —— JDK安装


三、Zookeeper安装

参考本人此篇文章:Linux软件安装 —— zookeeper集群安装


四、ClickHouse安装

1、软件下载

本文使用:

clickhouse-client-24.12.1.1614 — ClickHouse 命令行客户端工具;

clickhouse-common-static-24.12.1.1614 — ClickHouse 核心共享库和二进制文件;

clickhouse-common-static-dbg-24.12.1.1614 — 调试符号包;

clickhouse-server-24.12.1.1614 — ClickHouse 服务器主程序。

(1)tar安装包下载

下载地址:https://packages.clickhouse.com/tgz/stable/

在这里插入图片描述

(2)rpm安装包下载

下载地址:https://packages.clickhouse.com/rpm/stable/

在这里插入图片描述

2、前置准备

(1)CentOS取消打开文件数限制

# 查看限制
ulimit -a

vim /etc/security/limits.conf
# 添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

vim /etc/security/limits.d/20-nproc.conf
# 添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

# 重新登录用户再次查看
ulimit -a

第一列:用户; *表示所有用户,正常格式:用户@组,如mysql@mysql; 第二列:soft:软限制; hard:硬限制; 第三列:nofile:打开文件数; nproc:打开进程数; 修改用户配置,退出用户重新登录即可生效

在这里插入图片描述

(2)CentOS取消SELINUX

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现

# 查看是否开启
getenforce

# 临时禁用
setenforce 0

# 永久禁用
vim /etc/selinux/config
SELINUX=disabled

注意:内核级别的配置需要重启虚拟机才能生效,但生产环境一般不支持可设置临时配置,本次有效,下次重启时,配置文件生效

在这里插入图片描述 在这里插入图片描述

3、安装

所有节点都要安装,如果要设密码,所有节点保持一致

(1)tar安装

请按下面顺序安装:

clickhouse-common-static

clickhouse-common-static-dbg

clickhouse-server:需要设置密码,最好从文本粘贴进去,也可以直接回车不设密码

clickhouse-client

tar -zxvf clickhouse-common-static-24.12.1.1614-amd64.tgz
./clickhouse-common-static-24.12.1.1614/install/doinst.sh

tar -zxvf clickhouse-common-static-dbg-24.12.1.1614-amd64.tgz
./clickhouse-common-static-dbg-24.12.1.1614/install/doinst.sh

tar -zxvf clickhouse-server-24.12.1.1614-amd64.tgz
./clickhouse-server-24.12.1.1614/install/doinst.sh
# 需要设密码的话最好从文本粘贴,不需要就直接回车

tar -zxvf clickhouse-client-24.12.1.1614-amd64.tgz
./clickhouse-client-24.12.1.1614/install/doinst.sh

(2)rpm安装

准备好安装包,放入一个空的文件夹,确保文件夹里只有这四个安装包

在这里插入图片描述

# 只需执行这个命令,就会自动安装这个文件夹下的rpm包
rpm -ivh *.rpm –nodeps –force

在这里插入图片描述

4、配置clickhouse

(1)创建必须的目录

# 创建clickhouse数据,日志目录
mkdir -p /opt/module/clickhouse/data
mkdir -p /opt/module/clickhouse/logs

# 需要clickhouse用户
chown -R clickhouse:clickhouse /opt/module/clickhouse/

(2)配置config.xml

此项内容均在config.xml中操作

vim /etc/clickhouse-server/config.xml

①基本配置

<!– 日志级别: trace, debug, information, warning, error –>
<level>information</level>
<log>/opt/module/clickhouse/logs/clickhouse-server.log</log>
<errorlog>/opt/module/clickhouse/logs/clickhouse-server.err.log</errorlog>
<!– 日志文件大小,达到后会轮转 –>
<size>50M</size>

<listen_host>::</listen_host>

<!– 数据存储路径,修改为自定义目录 –>
<path>/opt/module/clickhouse/data/</path>
<!– 临时文件路径 –>
<tmp_path>/opt/module/clickhouse/data/tmp/</tmp_path>

<!– 时区设置 –>
<timezone>Asia/Shanghai</timezone>

②配置集群

<!– 创建集群 –>
<!– 原配置文件是有默认集群的(单节点:本节点)直接注释掉即可 –>
<!– <default>
<shard>
<replica>
<host>localhost</host>
<port>9000</port>
</replica>
</shard>
</default> –>

<!– 创建一分片三副本的集群–>
<myCluster>
<!– 分片 –>
<shard>
<!– 开启节点间复制,数据写入只一个节点,其他两个节点复制它 –>
<internal_replication>true</internal_replication>
<!– 副本一 –>
<replica>
<host>node02</host>
<port>9000</port>
<!– 节点间用于通信的账户密码 –>
<user>default</user>
<password>default_123456</password>
</replica>
<!– 副本二 –>
<replica>
<host>node03</host>
<port>9000</port>
<user>default</user>
<password>default_123456</password>
</replica>
<!– 副本三 –>
<replica>
<host>node04</host>
<port>9000</port>
<user>default</user>
<password>default_123456</password>
</replica>
</shard>
</myCluster>

③配置节点宏

类似节点ID,仅此项三节点单独配置

<!– 配置节点宏,内丝节点ID,三节点单独配置 –>
<!– 一号分片node02节点 –>
<macros>
<shard>01</shard>
<replica>node02</replica>
</macros>
<!– 一号分片node03节点 –>
<macros>
<shard>01</shard>
<replica>node03</replica>
</macros>
<!– 一号分片node04节点 –>
<macros>
<shard>01</shard>
<replica>node04</replica>
</macros>

④配置Zookeeper

<zookeeper>
<node>
<host>node02</host>
<port>2181</port>
</node>
<node>
<host>node03</host>
<port>2181</port>
</node>
<node>
<host>node04</host>
<port>2181</port>
</node>
</zookeeper>

5、启动clickhouse集群

(1)启动zookeeper

# 启动命令:在三个节点分别执行
zkServer.sh start
# 查看集群状态
zkServer.sh status
# 停止命令:在三个节点分别执行
zkServer.sh stop

(2)启动clickhouse

三台节点都启动

# 启动服务
systemctl start clickhouse-server
# 查看状态
systemctl status clickhouse-server
# 停止服务
systemctl stop clickhouse-server
# 关闭开机自启动
systemctl disable clickhouse-server
# 进入客户端
clickhouse-client [-m]

在这里插入图片描述

6、集群验证

(1)查看集群信息

# 登录客户端
clickhouseclient m

# 查询集群信息
select
cluster, shard_num, replica_num, host_name, port
from system.clusters;

在这里插入图片描述

(2)创建复制表

# 建库
create database test_db on cluster myCluster;
# 查询三个节点
use test_db;

# 建表
# ReplicatedMergeTree第一个参数是Zookeeper路径,第二个是副本名称,集群根据Zookeeper中的信息关联,
# 同一路径下的副本会进行复制数据,所以配置文件中shard一致,replica分别为node02,node03,node04
# shard和replica自动映射配置文件中的配置
create table test on cluster myCluster (
id int,
city varchar(5),
date DATE
) ENGINE = ReplicatedMergeTree('/clickhouse/test_db/test/{shard}', '{replica}')
ORDER BY id
COMMENT '测试表';

# 插入数据
insert into test values (1, '上海', '2020-01-01');

# 查询三个节点
select * FROM test;

# 删除表
# clickhouse删除表是异步进行的,删除完只是查不到,并不代表Zookeeper里面信息也删除了
# 再建表的时候可能出现Zookeeper路径已存在报错,所以加上sync实现同步删除
drop table if exists test on cluster myCluster sync;

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

7、密码配置

(1)default用户密码设置

此方法集群所有节点得同步修改,所有节点密码一致

在default用户的"密码本"存在/etc/clickhouse-server/users.d路径下为sha256_hex,修改密码的时候只需要把密码生成sha256_hex译码替换再重启clickhouse即可

echo -n "default_123456" | sha256sum | tr -d '-'

在这里插入图片描述 在这里插入图片描述

(2)新建用户
① 使用文本方式

此方法集群所有节点得同步修改,所有节点密码一致

  • 新建用户

# click用户配置
vim /etc/clickhouse-server/users.xml

# 在现有配置不变的情况下,模仿default配置,在<users></users>标签下添加新用户
<admin01>
<!– 此处不写,配置在单独密码配置中 –>
<password></password>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<!– 允许访问管理 –>
<access_management>1</access_management>
<!– 允许管理命名集合 –>
<named_collection_control>1</named_collection_control>
<!– 可以查看命名集合的列表和配置 –>
<show_named_collections>1</show_named_collections>
<!– 可以查看命名集合中的 敏感信息(如密码、密钥)–>
<show_named_collections_secrets>1</show_named_collections_secrets>
<!– 授予所有权限,此项与上面四个权限相冲突,要么使用上述指定权限,要么只留下面所有权限 –>
<!– <grants>
<query>GRANT ALL ON *.* TO admin01 WITH GRANT OPTION</query>
</grants> –>

</admin01>

  • 创建密码文件

# 编译密码
echo -n "admin01_123456" | sha256sum | tr -d '-'

# 创建密码文件
vim /etc/clickhouse-server/users.d/admin01-password.xml
<clickhouse>
<users>
<admin01>
<password remove='1' />
<password_sha256_hex>3bf185266a5bad05d3f518dc74453151a864275b56c99e7855ab475f087a308c</password_sha256_hex>
</admin01>
</users>
</clickhouse>

# 修改用户组
chown clickhouse:clickhouse admin01-password.xml

  • 重启clickhouse并验证

# 重启clickhouse
systemctl restart clickhouseserver

# 使用admin01用户登录
clickhouseclient m u admin01

# 查看用户
SELECT
name, id, storage, auth_type, host_ip, host_names, default_roles_all
FROM system.users;

# 查看权限
SELECT
user_name, access_type, database, `table`, column, is_partial_revoke
FROM system.grants
ORDER BY user_name, access_type;

在这里插入图片描述

② 使用SQL命令(官方推荐)

因为default用户没有配置赋予用户所有权限的权限,此处用admin01用户创建

clickhouse-client -m -u admin01

  • 创建用户:一个节点执行即可

# 删除用户
DROP USER IF EXISTS 'admin02' ON CLUSTER myCluster;

# 创建用户,使用sha256_password加密
CREATE USER 'admin02' ON CLUSTER myCluster IDENTIFIED WITH sha256_password BY 'admin02_123456' HOST ANY;

# 赋予权限
GRANT ALL ON *.* TO 'admin02' ON CLUSTER myCluster WITH GRANT OPTION;

在这里插入图片描述

  • 查看:所有节点

# 查看用户
SELECT
name, id, storage, auth_type, host_ip, host_names, default_roles_all
FROM system.users;

# 查看权限
SELECT
user_name, access_type, database, `table`, column, is_partial_revoke
FROM system.grants
ORDER BY user_name, access_type;

在这里插入图片描述

在这里插入图片描述

至此ClickHouse复制集群已经搭建完毕,下面是配置chproxy负载均衡器,没需求的就不用操作


五、chproxy安装

1、软件下载

CHProxy:https://github.com/ContentSquare/chproxy/releases/tag/v1.24.0

本文使用:chproxy_1.24.0_linux_amd64.tar.gz

在这里插入图片描述

2、解压

mkdir -p /opt/module/chproxy

tar -zxvf chproxy_1.24.0_linux_amd64.tar.gz -C /opt/module/chproxy/

cd /opt/module/chproxy/

3、配置chproxy

# 创建config.yml增加配置
vim config.yml

# 对外提供服务:chproxy地址
server:
http:
listen_addr: ":8126"
allowed_networks: ["192.168.10.102/0"]

# 对外用户:chproxy用户
users:
– name: "CHProxy"
password: "chproxy_123456"
allowed_networks: ["192.168.10.102/0"]
to_cluster: "CHProxy" # 对应下方配置ClickHouse的集群
to_user: "admin01" # 对应下方配置ClickHouse用户
max_concurrent_queries: 200
max_execution_time: "300s"
max_queue_size: 100
max_queue_time: "300s"

clusters:
– name: "CHProxy" # ClickHouse集群
nodes: [
"192.168.10.102:8123",
"192.168.10.103:8123",
"192.168.10.104:8123"
]
users: # ClickHouse用户
– name: "admin01"
password: "admin01_123456"

4、启动

# 启动
nohup /opt/module/chproxy/chproxy -config=/opt/module/chproxy/config.yml >> /opt/module/chproxy/chproxy.out 2>1 &

# 查看进程
ps -ef | grep chproxy

# 查看端口
telnet 192.168.10.102 8126

在这里插入图片描述


六、远程连接

此处使用datagrip连接chproxy 在这里插入图片描述

赞(0)
未经允许不得转载:171主机测评 » Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址