推广

从0开始搭建ClickHouse高可用集群

iseeyu2年前 (2024-02-21)推广124

虚拟机网络设置

设置网络,连接外网

  1. 进入要修改网络相关的配置文件目录
cd /etc/sysconfig/network-scripts/
  1. ls目录找到ifcfg-eth**文件

网络设置目录

  1. vi ifcfg-ens33设置ONBOOT=yes:wq保存并退出

ONBOOT=yes

service network restart` #(重启网路服务)

ClickHouse配置

安装

参考ClickHouse官方文档,RPM安装包

添加官方存储库,需要确认选y

sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64

运行安装命令,需要确认选y回车:

sudo yum install clickhouse-server clickhouse-client

启动

如果没有service,可以运行如下命令在后台启动服务:

sudo /etc/init.d/clickhouse-server start

如果提示:Init script is already running则使用下面命令启动

systemctl start clickhouse-server.service

日志文件将输出在/var/log/clickhouse-server/文件夹。

如果服务器没有启动,检查/etc/clickhouse-server/config.xml中的配置。

您也可以手动从控制台启动服务器:

clickhouse-server --config-file=/etc/clickhouse-server/config.xml

在这种情况下,日志将被打印到控制台,这在开发过程中很方便。

如果配置文件在当前目录中,则不需要指定——config-file参数。默认情况下,它的路径为./config.xml

ClickHouse支持访限制设置。它们位于users.xml文件(与config.xml同级目录)。
默认情况下,允许default用户从任何地方访问,不需要密码。可查看user/default/networks

启动服务后,您可以使用命令行客户端连接到它:

clickhouse-client

默认情况下,使用default用户并不携带密码连接到localhost:9000。还可以使用--host参数连接到指定服务器。

终端必须使用UTF-8编码。

局域网内访问

开启ck外部访问配置

 cd /etc/clickhouse-server/
 vim config.xml  # 放开<listen_host>::</listen_host>注释
 systemctl restart clickhouse-server.service # 重启服务
 

查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

防火墙端口操作

firewall-cmd --query-port=8123/tcp  #查询指定端口是否已开 yes表示开启;no表示未开启。

firewall-cmd --zone=public --add-port=8123/tcp --permanent   # 开放8123端口

firewall-cmd --zone=public --remove-port=8123/tcp --permanent  #关闭8123端口

firewall-cmd --reload   # 重新加载配置

netstat -anp  #查询已开放的端口 

关闭防火墙

如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估

systemctl stop firewalld.service

查看防火墙状态

firewall-cmd --state

查看监听的端口

netstat -lnpt

安装zookeeper

采用wget方式安装

  1. yum方式安装wget
yum -y install wget
  1. 创建/opt 文件夹:
mkdir -p /apps
  1. 进入到 /opt 目录中:
cd /apps
  1. 下载 zookeeper-3.4.9.tar.gz:
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
  1. 解压缩 zookeeper-3.4.9.tar.gz:
tar -zxvf zookeeper-3.4.9.tar.gz
  1. 进入到 /usr/local/services/zookeeper/zookeeper-3.4.9/conf 目录中:
cd zookeeper-3.4.9/conf/
  1. 复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:
cp zoo_sample.cfg zoo.cfg
  1. 编辑zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir= /apps/zookeeper-3.4.9/data/zookeeper
dataLogDir= /apps/zookeeper-3.4.9/log/zookeeper
clientPort=2182
autopurge.purgeInterval=0
globalOutstandingLimit=200
server.1=10.10.7.143:2888:3888
server.2=10.10.7.193:2888:3888
server.3=10.10.7.152:2888:3888
  1. 创建相关目录
mkdir -p /apps/zookeeper-3.4.9/data/zookeeper
mkdir -p /apps/zookeeper-3.4.9/log/zookeeper
  1. 设置myid
vim /apps/zookeeper-3.4.9/data/zookeeper/myid # 三个节点各配置为1/2/3
  1. 进入zookeeper的bin目录,启动zookeeper服务,每个节点都需要启动
./zkServer.sh start
./zkServer.sh status # 查看节点状态

ClickHouse高可用集群方案

简单说一下ck表引擎,共有十几个,这里推荐3个

  • MergeTree,是CK里最Advanced的引擎,性能超高,单机写入可以达到50w峰值,查询性能非常快
  • ReplicatedMergeTree,基于MergeTree,同时引入ZK,做了复制
  • Distributed,分布式引擎,本身不存储数据,可认为就是一张View,如果写入,会把请求丢到集群里的节点(有算法控制),如果查询,会帮你做查询转发再聚合返回

查看更改主机名

hostnamectl set-hostname XXX #更改主机名为 XXX

hostname #查看主机名

集群配置

安装成功后,在/etc/clickhouse-server/ 目录下生成配置文件config.xml及user.xml、自定义配置目录config.d及users.d,推荐在config.d及users.d下新建配置文件,然后在config.xml及user.xml中引入config.d及users.d下的配置文件。

  1. 编辑config.xml
vim /etc/clickhouse-server/config.xml

<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from> <!--添加该参数-->
  1. 配置集群节点

简单介绍一下配置关键字,可以参考ClickHouse官网

每个服务器需要指定 hostport,和可选的 userpasswordsecurecompression 的参数:

  • host – 远程服务器地址。可以域名、IPv4或IPv6。如果指定域名,则服务在启动时发起一个 DNS 请求,并且请求结果会在服务器运行期间一直被记录。如果 DNS 请求失败,则服务不会启动。如果你修改了 DNS 记录,则需要重启服务。
  • port – 消息传递的 TCP 端口(「tcp_port」配置通常设为 9000)。不要跟 http_port 混淆。
  • user – 用于连接远程服务器的用户名。默认值:default。该用户必须有权限访问该远程服务器。访问权限配置在 users.xml 文件中。更多信息,请查看«访问权限»部分。
  • password – 用于连接远程服务器的密码。默认值:空字符串。
  • secure – 是否使用ssl进行连接,设为true时,通常也应该设置 port = 9440。服务器也要监听 <tcp_port_secure>9440</tcp_port_secure> 并有正确的证书。
  • compression – 是否使用数据压缩。默认值:true。

数据分片配置:

  • internal_replicationtrue写操作只选一个正常的副本写入数据。如果分布式表的子表是复制表(*ReplicaMergeTree),请使用此方案。换句话说,这其实是把数据的复制工作交给实际需要写入数据的表本身而不是分布式表;false(默认值)写操作会将数据写入所有副本。实质上,这意味着要分布式表本身来复制数据。这种方式不如使用复制表的好,因为不会检查副本的一致性,并且随着时间的推移,副本数据可能会有些不一样。

  • 分片是指包含数据不同部分的服务器(要读取所有数据,必须访问所有分片)。

  • 副本是存储复制数据的服务器(要读取所有数据,访问任一副本上的数据即可)。

/etc/clickhouse-server/config.d目录创建metrika.xml

/etc/clickhouse-server/config.d/metrika.xml
<yandex>
<!--ck集群节点-->
<remote_servers>
    <test_ck_cluster>
        <!--分片1-->
        <shard>
            <weight>1</weight>
            <internal_replication>false</internal_replication>
            <replica>
                <host>10.10.7.143</host>
                <port>9000</port>
                <user>default</user>
                <password></password>
               <compression>true</compression>
            </replica>
            <replica>
                <host>10.10.7.193</host>
                <port>9000</port>
                <user>default</user>
                <password></password>
                <compression>true</compression>
            </replica>
        </shard>
        <!--分片2-->
        <shard>
            <weight>1</weight>
            <internal_replication>false</internal_replication>
            <replica>
                <host>10.10.7.152</host>
                <port>9000</port>
                <user>default</user>
                <password></password>
                <compression>true</compression>
            </replica>
            <replica>
                <host>10.10.7.101</host>
                <port>9000</port>
                <user>default</user>
                <password></password>
                <compression>true</compression>
            </replica>
        </shard>
    </test_ck_cluster>
</remote_servers>

<!--zookeeper相关配置-->
<zookeeper>
    <node index="1">
        <host>10.10.7.143</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>10.10.7.193</host>
        <port>2181</port>
    </node>
    <node index="3">
        <host>10.10.7.152</host>
        <port>2181</port>
    </node>
</zookeeper>

<macros>
    <replica>10.10.7.152</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> <!--压缩算法lz4压缩比zstd快, 更占磁盘-->
    </case>
</clickhouse_compression>
</yandex>

上述配置中三个节点中不同的地方在于:

<macros>
  <replica>10.10.7.XXX</replica>
</macros>

配置完成重启服务。

集群配置验证

select * from system.clusters;

集群信息

可视化工具

官网地址,笔者使用DBeaver,大家可自行选择。

参考连接:

https://clickhouse.tech/docs/en/getting-started/tutorial/

https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/

疑问点:

  1. internal_replicationtrue*ReplicaMergeTree每个分片下面的副本数据不能复制?

    答:端口 9009 用于复制。防火墙需要开启9009

    端口复制

后续学习点:

  1. 分布式表分片方案目前使用rand(),后续学习了解其它分片方案。链接

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57573.html

相关文章

经验分享地方门户网站运营的方法。

经验分享地方门户网站运营的方法。

在几年的地方门户网站运营中,小编总结以下观点与站长朋友们分享。 一、网站好用好看:做好美工细节、优化交互效果,持续改善用户体验 地方门户网站精美的UI设计与良好用户体验,给用户一个好印象。 常言道:筑好巢,引凤凰。网站的UI尽量做到统一,不杂乱,顺眼。当你打开UI风格杂乱的网站,立马...

什么是转化率营销?

什么是转化率? 这是转化率优化的完整指南。本指南将带您了解什么是转化率营销以及提高转化率的。 无论您在哪个行业,您的业务成功取决于您将在线访问者转变为客户的能力。转化营销提供了一种提高访问者成为买家的速度的方法。在本指南中,我将为您详细介绍...

销售技巧及话术 业务员拜访八个步骤

销售技巧及话术 业务员拜访八个步骤

销售及话术 业务员拜访八个步骤中国智慧是推崇“无招胜有招”的,无招不是不 用招,更不是没有招,而是能够因敌之势而生招 、出招,自然招招可以指敌命门,以最小的代价 克敌制胜。从而看到我们现实的销售中,任何渠 道销售都需要这克敌之招“销售技巧。渠道销售技巧一、强调需求 很多渠道...

淘宝客如何进行店铺推广(怎么吸引淘宝客为店铺推广)

淘宝客如何进行店铺推广(怎么吸引淘宝客为店铺推广)

现在的消费者群体也是比较复杂的,不同的买家可能也有不同的消费需求,因此我们在进行推广的时候,也绝对不可能做到让我们的活动吸引到所有的买家前来参与。...

小编分享网站推广都能带来哪些好处。

小编分享网站推广都能带来哪些好处。

在当今的商业环境中,是一个非常流行的概念。如今,大多数线下公司都将注意力转向在线业务。拥有一个代表品牌或业务的网站是在互联网市场迈出正确第一步的正确途径。如果我们谈论在线业务,显然,网站是必要的。但是网站有什么影响呢?毕竟,你正在与数以百万计的网站竞争,他们正试图在现有市场上获得一个可盈利的地位。...

网站目录和页面优化SEO不仅能带来排名还能使每个页面带来流量。

网站目录和页面优化SEO不仅能带来排名还能使每个页面带来流量。

技巧不是几个简单的命题,而是一个需要满足耐心和细致的脑力劳动。一般来说,SEO优化主要分为八个步骤:过程/方法。关键词分析(又称关键词定位)是SEO优化中最重要的部分。关键词分析包括:关键词重点分析、竞争对手分析、关键词与网站相关性分析、关键词放置、关键词排名猜测。分析网站架构,网站布局适合搜索引...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片