clickhouse集群部署

这篇具有很好参考价值的文章主要介绍了clickhouse集群部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、集群部署简介

部署的详情可以看官网
先部署两个server,三个keeper[zookeeper]
clickhouse之前依赖的存储是zookeeper,后来改为了keeper,官网给出了原因
所以这就决定了clickhouse有两种安装方式,依赖于keeper做存储或者依赖于zookeeper做存储

二、zookeeper作为存储

1.zookeeper安装

zookeeper安装可以看之前的文章

2.clickhouse部署

修改配置文件

2.1 修改listen_host

<!-- Same for hosts without support for IPv6: -->
<listen_host>0.0.0.0</listen_host>  <!-- 把这里注释去掉,允许所有地址可以访问 -->

2.2 修改存储路径

<!-- Path to data directory, with trailing slash. -->
    <path>/var/lib/clickhouse/</path>

2.3 添加集群配置

<!--这属于两个分片,每个分片语一个副本的架构-->
<remote_servers>
        <cluster_2S_1R> <!--定义的集群名字-->
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>chnode1</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>chnode2</host>
                    <port>9000</port>
                </replica>
            </shard>
        </cluster_2S_1R>
    </remote_servers>

<!--
注意,上面的写法是放到两个shard里,也可放到一个shard,下面是单一分片两副本的写法,如果放到不同的shard里macros的配置就得不同了
<remote_servers>
        <cluster_2S_1R> <!--定义的集群名字-->
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>chnode1</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>chnode2</host>
                    <port>9000</port>
                </replica>
            </shard>
        </cluster_2S_1R>
    </remote_servers>


-->

2.4配置zookeeper

<zookeeper>
        <node>
            <host>example1</host>
            <port>2181</port>
        </node>
        <node>
            <host>example2</host>
            <port>2181</port>
        </node>
        <node>
            <host>example3</host>
            <port>2181</port>
        </node>
</zookeeper>

2.5配置macros

<!--如果是单分片量副本的配置-->
<!-- 配置分片macros变量,在用client创建表的时候会自动带入,第一台ck的配置 -->
    <macros>
      <shard>01</shard>
      <replica>chnode1</replica> <!-- 这里指定当前集群节点的名字或者IP -->
    </macros>
<!-- 配置分片macros变量,在用client创建表的时候会自动带入,第二台ck的配置 -->
  <macros>
      <shard>01</shard>
      <replica>chnode2</replica> <!-- 这里指定当前集群节点的名字或者IP -->
    </macros>

3.启动clickhouse

systemctl start clickhouse-server.service
systemctl enable clickhouse-server.service

4.登录机器并检查集群

4.1登录

# 登录
clickhouse-client
# 查看集群信息
select * from system.clusters

4.2建表

CREATE TABLE t1 ON CLUSTER cluster_2S_1R
(
    `ts` DateTime,
    `uid` String,
    `biz` String
)
ENGINE = ReplicatedMergeTree('/clickhouse/test1/tables/{shard}/t1', '{replica}')
PARTITION BY toYYYYMMDD(ts)
ORDER BY ts
SETTINGS index_granularity = 8192


# 出现如下报错
Received exception from server (version 23.6.2):
Code: 159. DB::Exception: Received from localhost:9000. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000004 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 2 unfinished hosts (0 of them are currently active), they are going to execute the query in background. (TIMEOUT_EXCEEDED)
# 这个报错是某些ck服务异常才出现的报错,我这是因为我配置文件里的remote_server里的host ip写错了,相当于找不到服务了,修改后重启就好了

4.3 测试dml

目前DDL生效,但是插入数据在其他节点不生效
查看节点2的clickhouse日志,其中会有如下报错

2023.08.10 15:49:54.836507 [ 8514 ] {} <Error> test1.t1 (*****-48d4-44ed-9bad-2a03410321a9): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(LogEntryPtr &) const: Code: 198. DB::Exception: Not found address of host: bj-ck3. (DNS_ERROR), Stack trace (when copying this message, always include the lines below):

可以看到这里是因为域名无法解析,因为ZooKeeper 里面存储的是hosts域名,不是IP,所以需要配置/etc/hosts

192.168.1.1    bj-ck1
192.168.1.2    bj-ck2
192.168.1.3    bj-ck3

ps: /etc/hosts的配置里,如果配置多个的话,是以第一个为准,其他都类似别名么
比如192.168.1.1配置如下:192.168.1.1 bj-1 bj-2
如果别的机器是以域名访问192.168.1.1,如果别的机器只配置了192.168.1.1 bj-2,其实是解析不到192.168.1.1的

三、keeper作为存储

ClickHouse Keeper 提供数据复制和分布式 DDL 查询执行的协调系统。 ClickHouse Keeper 与 Apache ZooKeeper 兼容。 此配置在端口 9181 上启用 ClickHouse Keeper。

注意:
如果出于任何原因更换或重建 Keeper 节点,请勿重复使用现有的 server_id。 例如,如果重建了server_id为2的Keeper节点,则将其server_id设置为4或更高。

分片和副本降低了分布式 DDL 的复杂性。 配置的值会自动替换到您的 DDL 查询中,从而简化您的 DDL。

1.安装并启动keeper

# 安装clickhouse-keeper
sudo apt-get install -y clickhouse-keeper
# 启用并启动clickhouse-keeper
sudo systemctl enable clickhouse-keeper
sudo systemctl start clickhouse-keeper
sudo systemctl status clickhouse-keeper

2.修改keeper配置文件keeper_config.xml

 <keeper_server>
            <tcp_port>9181</tcp_port>

            <!-- 这里是主要的修改位置,保证集群中每个几点的id是唯一的 -->
            <server_id>1</server_id>

            <log_storage_path>/var/lib/clickhouse/coordination/logs</log_storage_path>
            <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>

            <coordination_settings>
                <operation_timeout_ms>10000</operation_timeout_ms>
                <min_session_timeout_ms>10000</min_session_timeout_ms>
                <session_timeout_ms>100000</session_timeout_ms>
                <raft_logs_level>information</raft_logs_level>
                <!-- All settings listed in https://github.com/ClickHouse/ClickHouse/blob/master/src/Coordination/CoordinationSettings.h -->
            </coordination_settings>

            <!-- enable sanity hostname checks for cluster configuration (e.g. if localhost is used with remote endpoints) -->
            <hostname_checks_enabled>true</hostname_checks_enabled>
            
            <!-- 这里是第二处需要变更的位置,需要把集群中的keeper配置上 -->
            <raft_configuration>
                <server>
                    <id>1</id>
                    <!-- Internal port and hostname -->
                    <hostname>192.168.1.1</hostname>
                    <port>9234</port>
                </server>
                <server>
                    <id>2</id>
                    <!-- Internal port and hostname -->
                    <hostname>192.168.1.2</hostname>
                    <port>9234</port>
                </server>
                <server>
                    <id>3</id>
                    <!-- Internal port and hostname -->
                    <hostname>192.168.1.3</hostname>
                    <port>9234</port>
                </server>
                <!-- Add more servers here -->

            </raft_configuration>
    </keeper_server>

	    <zookeeper>
	        <node index="1">
	            <host>chnode1</host>
	            <port>9181</port>
	        </node>
	        <node index="2">
	            <host>chnode2</host>
	            <port>9181</port>
	        </node>
	        <node index="3">
	            <host>chnode3</host>
	            <port>9181</port>
	        </node>
	    </zookeeper>

3.clickhouse的配置

clickhouse的配置与zookeeper作为存储时的配置几乎一致,只需要把zookeeper的配置注释掉即可

ps: 这里还有个小插曲,使用keeper的时候发现dml的数据又一次不同步了,查看clickhouse-server.err.log,发现有如下报错

2023.08.16 11:19:00.782071 [ 8566 ] {} <Error> ConfigReloader: Error updating configuration from '/etc/clickhouse-server/config.xml' config.: Code: 999. Coordination::Exception: Connection loss, path: All connection tries failed while connecting to ZooKeeper

使用telnet后发现确实telnet不通,于是修改keeper的配置文件keeper_config.xml,添加如下内容

<listen_host>0.0.0.0</listen_host>

重启keeper文章来源地址https://www.toymoban.com/news/detail-661834.html

systemctl restart clickhouse-keeper

到了这里,关于clickhouse集群部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 企业 Tomcat 运维 部署tomcat反向代理集群

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器 , Tomcat和Nginx、Apache(httpd)、Web服务器一样,具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器 一个tomcat默认并发是200(官方),可以修改,但实际用的时候也就200并发左右。 h

    2024年02月06日
    浏览(43)
  • 1+X 云计算运维与开发(中级)案例实战——分布式部署集群应用商城系统

    学而不思则罔,思而不学则殆。 IP 主机名 节点 192.168.200.10 mycat Mycat 中间件服务节点 192.168.200.20 db1 MariaDB 数据库集群主节点 192.168.200.30 db2 MariaDB 数据库集群从节点 192.168.200.40 zookeeper1 集群节点 192.168.200.50 zookeeper2 集群节点 192.168.200.60 zookeeper3 集群节点 192.168.200.70 redis 消息队

    2023年04月23日
    浏览(67)
  • 【运维工程师学习】Debian安装

    选择镜像文件 进入安装选择界面 graphical install 图形安装 Install 安装系统 advanced options 高级选项 Help 帮助 accessible dark contrast installer menu 无障碍暗色对比度安装程序菜单 (旨在为视力有障碍的用户提供更好的可访问性,提供了: 高对比度主题、大字体选项、屏幕阅读器支持) In

    2024年02月12日
    浏览(57)
  • clickhouse 常用运维命令

    介绍 ClickHouse 是俄罗斯的 Yandex 于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL 查询实时生成分析数据报告。 官网 部署参考 常用命令 可以通过两种方式来配置参数: 直接在命令行执行参数 通过配置文件指定 集群操作 DDL操作

    2024年02月10日
    浏览(39)
  • 基于clickhouse keeper搭建clickhouse集群

    主机名 IP my-db01 192.168.1.214 my-db02 192.168.1.215 my-db03 192.168.1.216 hosts设置 使用 admin 用户安装: 添加官方镜像 安装 clickhouse-server和clickhouse-client 版本信息: 操作系统:CentOS Linux release 7.9.2009 (Core) systemd:219 clickhouse-client:23.2.4.12-1.x86_64 clickhouse-server:23.2.4.12-1.x86_64 clickhouse-commo

    2024年02月12日
    浏览(44)
  • 【运维知识大神篇】超详细的ELFK日志分析教程4(ES读写文档原理+集群角色+master节点与数据节点分离+Logstash安装部署+Logstash采集本地文件+采集Nginx日志)

    本篇文章继续给大家介绍ELFK日志分析的有关内容,我们的ES和Kibana都介绍的差不多了,所以本篇文章重点介绍Logstash的有关内容,介绍完毕后,我们的ELFK架构将初步形成,此外还有ES读写文档的原理,了解原理,更深层次的理解,使用ES,集群角色和master节点与数据节点分离,

    2024年02月02日
    浏览(56)
  • Debian下Hadoop集群安装

    配置环境变量 修改 PermitRootLogin yes 至少需要完成从node1 - node1,node2,node3的免密登录 hadoop-env.sh 在文件末尾加上以下内容 core-site.xml 在configuration标签中添加以下内容 mapred-site.xml 在configuration标签中添加以下内容 yarn-site.xml 在configuration标签中添加以下内容 workers 在 workers 文件中添

    2024年02月09日
    浏览(40)
  • ClickHouse集群搭建及ODBC配置

    192.168.122.100  BCEuler01 192.168.122.101  BCEuler02 192.168.122.102  BCEuler03 # systemctl disable firewalld # systemctl stop firewalld # /etc/selinux/config SELINUX=disabled 将BCEuler01设置为时钟同步源 BEEuler01的/etc/chrony.conf: 修改的部分: server 192.168.122.100 iburst allow 192.168.0.0/16 local stratum 10 BCEuler02的/etc/chrony.co

    2024年02月10日
    浏览(41)
  • ClickHouse高可用集群分片-副本实操(四)

    目录 一、ClickHouse高可用之ReplicatedMergeTree引擎 二、 ClickHouse高可用架构准备-环境说明和ZK搭建  三、高可用集群架构-ClickHouse副本配置实操 四、ClickHouse高可用集群架构分片 4.1 ClickHouse高可用架构之两分片实操  4.2 ClickHouse高可用架构之两分片建表实操 什么是CK的副本引擎

    2023年04月20日
    浏览(36)
  • 烂sql导致clickhouse集群memory_tracking直线飙升触发熔断

    版 本 v e r s i o n   1 9 . 1 7 . 4 . 1 1     c l i c k h o u s e   集 群 , 主 要 存 日 志 数 据 与 监 控 数 据 。 架 构 为 4 台 主 机 1 2 个 实 例 数 , 数 据 为 单 副 本 。 近 日 , 该 c l i c k h o u s e 集 群 有 一 台 物

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包