基于clickhouse keeper搭建clickhouse集群

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

服务器信息

主机名 IP
my-db01 192.168.1.214
my-db02 192.168.1.215
my-db03 192.168.1.216
  • hosts设置
# 切换成root
sudo -i
# my-db01 执行
echo '192.168.1.215 my-db02' >> /etc/hosts
echo '192.168.1.216 my-db03' >> /etc/hosts

# my-db02 执行
echo '192.168.1.214 my-db01' >> /etc/hosts
echo '192.168.1.216 my-db03' >> /etc/hosts

# my-db03 执行
echo '192.168.1.214 my-db01' >> /etc/hosts
echo '192.168.1.215 my-db02' >> /etc/hosts

安装

使用admin用户安装:

  • 添加官方镜像
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
  • 安装clickhouse-server和clickhouse-client
sudo yum install -y 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-common-static:23.2.4.12-1.x86_64

  • 安装nc命令,用于检查连通性
yum install -y nc

调整配置

目录调整

# 创建数据目录
sudo mkdir -p /data/clickhouse/lib
# 创建日志目录
sudo mkdir -p /data/clickhouse/log
# 授权
sudo chown -R clickhouse:clickhouse /data/clickhouse
sudo chmod 777 /data

# 备份原始配置文件
sudo cp /etc/clickhouse-server/users.xml ~
sudo cp /etc/clickhouse-server/config.xml ~

# 更改目录配置
## 权限更改
sudo chmod 666 /etc/clickhouse-server/config.xml
sudo chmod 666 /etc/clickhouse-server/users.xml
## 日志目录替换
sudo sed -i 's?/var/log/clickhouse-server?/data/clickhouse/log?g' /etc/clickhouse-server/config.xml
## 数据目录替换
sudo sed -i 's?/var/lib/clickhouse?/data/clickhouse/lib?g' /etc/clickhouse-server/config.xml

启停

  • 修改sudo vi /usr/lib/systemd/system/clickhouse-server.service参考:《问题记录->启动超时》
  • 设置自启动:sudo systemctl enable clickhouse-server
  • 启动命令:sudo systemctl start clickhouse-server
  • 关闭命令:sudo systemctl stop clickhouse-server
  • 启动状态:sudo systemctl status clickhouse-server

参数调整

sudo vi /etc/clickhouse-server/config.xml中的配置:

  • background_pool_size:默认16,可以调整到CPU个数的两倍。本次调整到32

  • max_concurrent_queries:默认100,可以调整到200或者300。本次调整到200

  • 设置外网(ipv4)可访问:
    <listen_host>0.0.0.0</listen_host>
    
    设置interserver_listen_host,因为服务器不支持ipv6
    (如果不设置,配置了clickhouse-keeper后,会无法启动,报错:
    RaftInstance: got exception: open: Address family not supported by protocol
    )
    <interserver_listen_host>0.0.0.0</interserver_listen_host>
    

users.xml中的配置:

  • 密码设置:
# 使用下述命令生成随机密码
PASSWORD=$(base64 < /dev/urandom | head -c12); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
# 明文密码:z+yJwbcWv6MA
# 密文密码:b53ad819c11d5790655464f2d6ec0e78916551b62141fec0d1342a25138082d2
<password_sha256_hex>b53ad819c11d5790655464f2d6ec0e78916551b62141fec0d1342a25138082d2</password_sha256_hex>

上述配置在每个节点都需要设置

服务器调整

  • 不禁用overcommit
echo 0 | sudo tee /proc/sys/vm/overcommit_memory
  • 始终禁用透明大页(transparent huge pages)。 它会干扰内存分配器,从而导致显着的性能下降。
# 使用root
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
sudo chmod +x /etc/rc.d/rc.local
  • 禁用swap(官方建议:We recommend to disable the operating system’s swap file in production environments.)
1. sudo swapoff -a
2. echo "vm.swappiness = 0">> /etc/sysctl.conf
3. sudo sysctl -p
4. sudo vi /etc/fstab # 注释swap那一行

集群搭建

  • 最小三台为一个集群
  • 基于clickhouse-keeper搭建集群
  • 搭建集群之前,三台服务器都需要按照上文所示,安装好clickhouse

clickhouse-keeper配置

在每台clickhouse服务器中的/etc/clickhouse-server/config.d/目录下新建clickhouse-keeper.xml,内容如下:

<clickhouse>
<keeper_server>
    <tcp_port>9181</tcp_port>
    <server_id>1</server_id>
    <log_storage_path>/data/clickhouse/lib/coordination/log</log_storage_path>
    <snapshot_storage_path>/data/clickhouse/lib/coordination/snapshots</snapshot_storage_path>

    <coordination_settings>
        <operation_timeout_ms>10000</operation_timeout_ms>
        <session_timeout_ms>30000</session_timeout_ms>
        <raft_logs_level>warning</raft_logs_level>
    </coordination_settings>

    <raft_configuration>
        <server>
            <id>1</id>
            <hostname>my-db01</hostname>
            <port>9444</port>
        </server>
        <server>
            <id>2</id>
            <hostname>my-db02</hostname>
            <port>9444</port>
        </server>
        <server>
            <id>3</id>
            <hostname>my-db03</hostname>
            <port>9444</port>
        </server>
    </raft_configuration>
</keeper_server>
      <zookeeper>
        <node>
            <host>my-db01</host>
            <port>9181</port>
        </node>
        <node>
            <host>my-db02</host>
            <port>9181</port>
        </node>
        <node>
            <host>my-db03</host>
            <port>9181</port>
        </node>
    </zookeeper>
</clickhouse>

注意事项:

  1. 每个节点server_id配置正确
  2. log_storage_path和snapshot_storage_path目录正确
  3. 端口能访问
  4. 文件授权:chown clickhouse:clickhouse /etc/clickhouse-server/config.d/clickhouse-keeper.xml

本次搭建情况如下:

  1. my-db01的server_id为1、my-db02的server_id为2、my-db03的server_id为3
  2. 开放端口9181、9444
  • 检查keeper是否正常,返回imok表示正常
echo ruok | nc localhost 9181; echo
# imok

集群配置

集群设置为:0分片3副本的结构

配置如下(将该配置追加到clickhouse-keeper.xml文件中):

   <!-- <macros>
        <shard>${建议设置成集群名+分片名},例如:cluster_3S_1R_01</shard>
        <replica>${建议设置为主机名},例如:my-db01</replica>
    </macros> -->
		<macros>
        <shard>cluster_1S_3R_01</shard>
        <replica>my-db01</replica>
    </macros>
		<remote_servers>
        <cluster_1S_3R>
            <shard>
                <replica>
                    <host>my-db01</host>
                    <port>9000</port>
                    <user>default</user>
                </replica>
                <replica>
                    <host>my-db02</host>
                    <port>9000</port>
                    <user>default</user>
                </replica>
                <replica>
                    <host>my-db03</host>
                    <port>9000</port>
                    <user>default</user>
                </replica>
            </shard>
        </cluster_1S_3R>
    </remote_servers>

问题记录

启动超时

安装完之后,通过命令sudo systemctl start clickhouse-server无法正常启动,日志如下:

● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/usr/lib/systemd/system/clickhouse-server.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: timeout) since Tue 2023-03-21 16:59:02 CST; 6s ago
  Process: 12585 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=%t/%p/%p.pid (code=killed, signal=TERM)
 Main PID: 12585 (code=killed, signal=TERM)

Mar 21 16:59:02 my-db02 systemd[1]: Failed to start ClickHouse Server (analytic DBMS for big data).
Mar 21 16:59:02 my-db02 systemd[1]: Unit clickhouse-server.service entered failed state.
Mar 21 16:59:02 my-db02 systemd[1]: clickhouse-server.service failed.

看出是timeout导致的,翻阅资料后发现问题:

  1. /usr/lib/systemd/system/clickhouse-server.service文件中超时设置,使用的是:TimeoutStartSec=infinity

  2. 通过systemctl --version查看systemd的版本为219

  3. TimeoutStartSecinfinity设置是229版本之后才有的,229之前设置为0,来禁用超时

这里提供一份修改过的clickhouse-server.service文件,可供参考

[Unit]
Description=ClickHouse Server (analytic DBMS for big data)
Requires=network-online.target
# NOTE: that After/Wants=time-sync.target is not enough, you need to ensure
# that the time was adjusted already, if you use systemd-timesyncd you are
# safe, but if you use ntp or some other daemon, you should configure it
# additionaly.
After=time-sync.target network-online.target
Wants=time-sync.target

[Service]
Type=notify
# NOTE: we leave clickhouse watchdog process enabled to be able to see OOM/SIGKILL traces in clickhouse-serv
er.log files.
# If you wish to disable the watchdog and rely on systemd logs just add "Environment=CLICKHOUSE_WATCHDOG_ENABLE=0" line.
User=clickhouse
Group=clickhouse
Restart=always
RestartSec=30
# Since ClickHouse is systemd aware default 1m30sec may not be enough
# TimeoutStartSec=infinity
TimeoutStartSec=0
# %p is resolved to the systemd unit name
RuntimeDirectory=%p 
ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=%t/%p/%p.pid
# Minus means that this file is optional.
EnvironmentFile=-/etc/default/%p
# Bring back /etc/default/clickhouse for backward compatibility
EnvironmentFile=-/etc/default/clickhouse
LimitCORE=infinity
LimitNOFILE=500000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_NICE CAP_NET_BIND_SERVICE

[Install]
# ClickHouse should not start from the rescue shell (rescue.target).
WantedBy=multi-user.target

注意事项:

如果已经启动失败,修改后systemd相关文件后,需要执行systemctl daemon-reload

参考文档

安装:https://clickhouse.com/docs/en/install#from-rpm-packages

使用建议:https://clickhouse.com/docs/en/operations/tips

关闭swap:https://blog.csdn.net/weixin_43224440/article/details/111556962

参数调优:https://blog.csdn.net/qq_35128600/article/details/125897196

集群搭建参考:https://clickhouse.com/docs/en/guides/sre/keeper/clickhouse-keeper#clickhouse-keeper-user-guide

不支持ipv6参考:https://github.com/ClickHouse/ClickHouse/issues/33381文章来源地址https://www.toymoban.com/news/detail-657758.html

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

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

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

相关文章

  • 基于Linux的服务器搭建

    Linux操作系统搭建服务器,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它在服务器方面保持着强劲的发展势头,在目前,由

    2024年02月04日
    浏览(45)
  • C++项目——集群聊天服务器项目(一)项目介绍、环境搭建、Boost库安装、Muduo库安装、Linux与vscode配置

    今天开始想更新一个C++项目,实现一个 支持跨服务器通信、支持负载均衡的集群聊天服务器项目 。项目会应用muduo网络库、CMake编译、MySQL数据库、JSon序列化与反序列化、Redis消息订阅模式以及Nginx负载均衡功能。 有兴趣的宝可以跟我一起实操起来,巩固自己的C++学习吧~ 本项

    2024年04月14日
    浏览(38)
  • clickhouse优化使用clickhouse-keeper替代zookeeper

    ClickHouse Keeper 是 ZooKeeper 的替代品,与 ZooKeeper 不同,ClickHouse Keeper 是用 C++ 编写的,并使用 RAFT 算法实现,该算法允许对读写具有线性化能力。 clikhouse-keeper目的在于替换zookeeper,使用clickhouse后,服务器性能,提升了一大截,只需要在配置zookeeper的地方,改成clickhouse-keeper即

    2024年02月17日
    浏览(30)
  • Linux -- 进阶 Web服务器 搭建基于 https 协议的静态网站 ( 预备知识 )

                什么是 HTTPS ?   HTTPS  协议背景 ?         ===                  HTTP 协议  即  超文本传输协议 ,                 它出生的很早,在早期,网络服务的相关攻击呢,或者病毒啥的几乎没有,安全类的问                  题也是少之又少。   

    2024年02月06日
    浏览(39)
  • Linux -- 进阶 Web服务器 搭建基于 HTTPS 协议的静态网站 (实验实操)

                  现在我们想架设一个 互联网网站的话,我们就得想法认证自己是官方的,得产生一个证书         这个证书呢,我们使用的是 X.509  格式的证书                                该证书 包含三个文件 :  key , csr , crt 。           先介绍下 :  PKI(

    2024年02月07日
    浏览(33)
  • 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现。可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施,尤其是点播功能,所以我把我工作中验证成功

    2024年02月02日
    浏览(54)
  • ClickHouse Keeper: 一个用 C++ 编写的 ZooKeeper 替代品

    。 本文字数:9915;估计阅读时间:25 分钟 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 ClickHouse 是用于实时应用和分析的最快且资源利用率最高的开源数据库。ClickHouse Keeper 是 ClickHouse 的一个组件,是 ZooKeeper 的快速、更节省资源和功能丰富的替代品。这个开源

    2024年02月05日
    浏览(24)
  • 华为云云服务器评测|基于华为云云耀云服务器L实例开展性能评测,例如 MySQL、Clickhouse、Elasticsearch等等

    在当今云计算时代,越来越多的企业和个人开始选择将应用部署在云服务器上,以便更好地满足高性能、可靠性和可扩展性等需求。而华为云云耀云服务器L实例不仅提供了高性能和可靠性的计算和存储资源,而且具有灵活和高效的成本控制,深受广大用户的青睐。在这个背景

    2024年02月11日
    浏览(46)
  • ubuntu服务器版本搭建Hadoop集群

    实验环境: 虚拟化软件:VMware® Workstation 16 Pro 镜像:ubuntu-22.04.2-live-server-amd64.iso Hadoop版本:hadoop-3.3.4.tar.gz ubuntu镜像链接 hadoop文件链接 配置虚拟机 (1)新建虚拟机,选择实验镜像【ubuntu-22.04.2-live-server-amd64.iso】 (2)调整硬件配置,配置如图 安装操作系统 (1)选择虚拟

    2024年02月08日
    浏览(41)
  • Nginx(7)Nginx实现服务器端集群搭建

    前面课程已经将Nginx的大部分内容进行了讲解,我们都知道了Nginx在高并发场景和处理静态资源是非常高性能的,但是在实际项目中除了静态资源还有就是后台业务代码模块,一般后台业务都会被部署在Tomcat,weblogic或者是websphere等web服务器上。那么如何使用Nginx接收用户的请

    2024年02月09日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包