您的位置:首页 > 科技 > IT业 > centos(或openEuler系统)安装clickhouse集群

centos(或openEuler系统)安装clickhouse集群

2024/11/17 15:23:21 来源:https://blog.csdn.net/china_xuelei/article/details/140513757  浏览:    关键词:centos(或openEuler系统)安装clickhouse集群

192.168.9.60、192.168.9.63、192.168.9.64三台centos(或openEuler系统)安装clickhouse集群(数据分散,不是1主2备)

一、安装clickhouse集群

以下操作在每台机器上一摸一样的执行:

关闭防火墙:
防火墙状态:service firewalld status
关闭防火墙:systemctl stop firewalld && systemctl disable firewalld

下载离线安装包

https://packages.clickhouse.com/rpm/stable/?directoryListingLimit=5000&cursor=1-JTdCJTIydiUyMiUzQTElMkMlMjJzdGFydEFmdGVyJTIyJTNBJTIycnBtJTJGc3RhYmxlJTJGY2xpY2tob3VzZS1jb21tb24tc3RhdGljLTIzLjMuMTEuNS54ODZfNjQucnBtJTIyJTJDJTIydXVpZCUyMiUzQSUyMjdlNzVjM2UwNmI2ZDAxN2Q5YzA5ZmMwYTVkZWMxNzk1JTIyJTdE


安装:
sudo yum localinstall -y /usr/clickhouse/clickhouse-common-static-24.2.3.70.x86_64.rpm /usr/clickhouse/clickhouse-server-24.2.3.70.x86_64.rpm /usr/clickhouse/clickhouse-client-24.2.3.70.x86_64.rpm
验证:
clickhouse-server --version
clickhouse-client --version

修改配置文件(3台一摸一样):
vi /etc/clickhouse-server/config.xml
修改部分:

<remote_servers><my_cluster><shard><replica><host>192.168.9.60</host><port>9000</port></replica></shard><shard><replica><host>192.168.9.63</host><port>9000</port></replica></shard><shard><replica><host>192.168.9.64</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>

修改部分:
<!-- 允许监听所有网络接口 -->
<listen_host>::</listen_host>

增加用户:
修改 /etc/clickhouse-server/users.xml
<users></users>中增加:

        <root><password>Sn@123456</password><!-- 在这里填写明文密码 --><networks><ip>::/0</ip></networks></root>


    

重启:
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server

sudo systemctl status clickhouse-server


查看端口9000和8123是否开放:
sudo ss -nlpt

连接验证(比如在62连接60或63):
clickhouse-client --host 192.168.9.60 --port 9000 --user root --password 'Sn@123456'
clickhouse-client --host 192.168.9.63 --port 9000 --user root --password 'Sn@123456'


二、安装zookeeper集群


ZooKeeper 依赖于 Java:
sudo yum install -y java-1.8.0-openjdk

下载和解压 ZooKeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
sudo mv apache-zookeeper-3.6.3-bin /opt/zookeeper

创建一个名为 zoo.cfg 的配置文件(3台机器配置一摸一样):
sudo mkdir -p /opt/zookeeper/data
sudo vi /opt/zookeeper/conf/zoo.cfg
添加以下内容:

tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.9.60:2888:3888
server.2=192.168.9.63:2888:3888
server.3=192.168.9.64:2888:3888

重点:在每个 ZooKeeper 节点上,创建一个 myid 文件并添加相应的 ID(1、2 或 3):
例如,在 192.168.9.60 节点上:
echo "1" > /opt/zookeeper/data/myid

在 192.168.9.63 节点上:
echo "2" > /opt/zookeeper/data/myid

在 192.168.9.64 节点上:
echo "3" > /opt/zookeeper/data/myid

分别启动各自的zookeeper,建议从后往前启动
/opt/zookeeper/bin/zkServer.sh start

配置clickhouse的zookeeper:
每台修改/etc/clickhouse-server/config.xml 文件,添加以下内容(添加位置可搜索zookeeper):

<zookeeper><node><host>192.168.9.60</host><port>2181</port></node><node><host>192.168.9.63</host><port>2181</port></node><node><host>192.168.9.64</host><port>2181</port></node>
</zookeeper>

重启clickhouse
sudo systemctl restart clickhouse-server

验证:
/opt/zookeeper/bin/zkServer.sh status
查看端口2181是否开放:
sudo ss -nlpt
查看启动日志:
/opt/zookeeper/logs/zookeeper-root-server-master-01.out
(启动失败,可能是myid没建好,重建,重启每个机器)
测试连接:
/opt/zookeeper/bin/zkCli.sh -server 192.168.9.60:2181


dbveaver连接每个库,分别执行:

CREATE DATABASE res;-- res.rm_metric_data_history definition
CREATE TABLE res.rm_metric_data_history
(`resid` String,`respara` String,`item_code` String,`value` String,`coltime` DateTime,`gentime` DateTime DEFAULT now(),`company_code` String
)
ENGINE = MergeTree
ORDER BY coltime
TTL coltime + toIntervalDay(180)
SETTINGS index_granularity = 8192
COMMENT '性能历史表';INSERT INTO res.rm_metric_data_history
(resid, respara, item_code, value, coltime, gentime, company_code)
VALUES('9a82222a12d54c2a8c775147200d07b9', '-1', 'kafka.topic.net.bytes_in.rate', '1471.964798', '2024-07-12 18:13:00', '2024-07-12 18:11:50', '');
INSERT INTO res.rm_metric_data_history
(resid, respara, item_code, value, coltime, gentime, company_code)
VALUES('9a82222a12d54c2a8c775147200d07b9', '-1', 'kafka.topic.net.bytes_out.rate', '2943.929595', '2024-07-12 18:14:00', '2024-07-12 18:11:50', '');

在某机器执行创建分布式表:

CREATE TABLE res.rm_metric_data_history_distributed ON CLUSTER my_cluster
AS res.rm_metric_data_history
ENGINE = Distributed(my_cluster, res, rm_metric_data_history, rand());


仅仅在1个机器执行了,但是另外2个机器也有了这个表了。因为你使用了 ON CLUSTER 语句在 ClickHouse 中创建表。这意味着 ClickHouse 会自动在集群中的所有节点上创建该表。ON CLUSTER 语句会将 DDL 操作(如创建表、修改表、删除表等)广播到集群中所有的节点,因此你只需在一个节点上执行 DDL 操作,就会在整个集群中生效。

select * from res.rm_metric_data_history_distributed;
在63查这个表数据,能查到3个库的所有rm_metric_data_history表数据。


插入数据同理:
INSERT INTO res.rm_metric_data_history_distributed
(resid, respara, item_code, value, coltime, gentime, company_code)
VALUES('9a82222a12d54c2a8c775147200d07b9', '-1', 'mysql.performance.com_selecte', '1', '2024-07-14 18:14:00', '2024-07-13 18:14:00', 'zhejiang');
在某台机器执行插入,数据会根据主键coltime分散到3台机器的res.rm_metric_data_history表里。


备注(clickhouse集群内机器关系):
这种配置是啥意思

<remote_servers><my_cluster><shard><replica><host>server1</host><port>9000</port></replica><replica><host>server2</host><port>9000</port></replica></shard><shard><replica><host>server3</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>


Shard:是数据的水平分片,每个 shard 存储数据的一个子集。
Replica:是数据的副本,每个 shard 可以有多个副本,副本之间的数据是相同的,用于高可用性和负载均衡。
在你的配置中,将 server1 和 server2 放在同一个 shard 里,而 server3 单独放在一个 shard,意味着:

Shard 1 包含 server1 和 server2,它们是彼此的副本,存储相同的数据。
Shard 2 包含 server3,它独立存储数据。
理解这种配置的原因
高可用性:通过将多个副本放在一个 shard 里,可以确保即使一个副本失败,其他副本依然可用。
负载均衡:多个副本可以分担读请求的负载,提高查询性能。
常见的配置模式
每个 Shard 多个 Replica:

适用于需要高可用性和负载均衡的场景。
例如:

<remote_servers><my_cluster><shard><replica><host>server1</host><port>9000</port></replica><replica><host>server2</host><port>9000</port></replica></shard><shard><replica><host>server3</host><port>9000</port></replica><replica><host>server4</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>


每个 Shard 一个 Replica:

适用于数据分布要求明确,不需要副本的场景。
例如:

<remote_servers><my_cluster><shard><replica><host>server1</host><port>9000</port></replica></shard><shard><replica><host>server2</host><port>9000</port></replica></shard><shard><replica><host>server3</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com