clickhouse集群安装

2023-11-02

环境介绍
准备四台服务器搭建clickhouse集群,(创建两个分片,每个分片一个副本)
在任意三台服务器上安装zookeeper 服务,clickhouse集群依赖zookeeper进行服务器之间的数据同步。

192.168.1.1 ch1.test.com ch1
192.168.1.2 ch2.test.com ch2
192.168.1.3 ch3.test.com ch3
192.168.1.4 ch4.test.com ch4

目录结构设计
1、配置文件的默认目录为/etc/clickhouse-server/
2、数据库数据目录设置为/data/clickhouse/
3、数据库日志的目录设置为/data/clickhouse/

#zookeeper 集群的安装

1、安装zookeeper 集群

1、安装jdk
https://www.oracle.com/java/technologies/downloads/
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

2、优化jdk
3、安装zookeeper
4、使用systemctl 管理zookeeper服务
[Unit]
Description=Zookeeper service
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/zookeeper363/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper363/bin/zkServer.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

下载最新的稳定版
https://packages.clickhouse.com/rpm/stable

wget https://packages.clickhouse.com/rpm/stable/clickhouse-client-21.8.13.6-2.noarch.rpm
wget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-21.8.13.6-2.x86_64.rpm
wget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-dbg-21.8.13.6-2.x86_64.rpm
wget https://packages.clickhouse.com/rpm/stable/clickhouse-server-21.8.13.6-2.noarch.rpm

安装clickhouse

yum localinstall *.prm
或则
rpm -ivh *.rpm

关闭防火墙并检查环境依赖

关闭防火墙
systemctl stop firewalld.service
关闭开机启动防火墙
systemctl disable firewalld.service

设置主机名

hostnamectl --static set-hostname ch1.test.com
验证主机名设置是否生效
hostname -f
ch1.test.com

最后需要配置hosts 文件,配置后的效果如下:
#cat /etc/hosts
192.168.1.1 ch1.test.com ch1
192.168.1.2 ch2.test.com ch2
192.168.1.3 ch3.test.com ch3
192.168.1.4 ch4.test.com ch4

修改配置文件 文件句柄数量

vim /etc/security/limits.d/clickhouse.conf 文件句柄数量的配置

clickhouse soft nofile 262144
clickhouse hard nofile 262144

改配置也可以通过config.xml 的max_open_files参数指定。

设置计划任务 用于恢复因异常原因中断的clickhouse 服务进程,其默认的配置如下

more /etc/cron.d/clickhouse-server
#*/10 * * * * root ((which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart) > /dev/null
2>&1

设置目录权限

chown -R clikchouse.clickhouse /data/clickhouse

修改配置文件xml格式(关键参数说明)

主配置文件config.xml
用户级别的配置文件user.xml

文件注释

说明: 用户及请求相关的设置需要配置在user.xml文件中,如果配置在config.xml,用户相关的配置如果配置到config.xml文件中,服务就无法启动。

NOTE: User and query level settings are set up in “users.xml” file.
If you have accidentally specified user-level settings here, server won’t start.
You can either move the settings to the right place inside “users.xml” file
or add <skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings> here

日志设置
在这里插入图片描述
端口说明:

  • HTTP:8123端口:使用ODBC、JDBC(DataGrip、Dbeaver) 等驱动和一些web接口如embedded UI 、grafana、redash等都需要链接http 8123端口。

  • TCP 9000 : clickhouse的原生工具需要链接9000端口。
    ClickHouse -client和其他本地ClickHouse工具(ClickHouse -benchmark, ClickHouse - copy);
    clickhouse-server与其他clickhouse-server进行分布式查询处理;
    ClickHouse驱动程序和应用程序支持本机协议
    (该协议也被非正式地称为“TCP协议”);

  • TCP 9004 : clickhouse 使用此端口把自己伪装成mysql;

  • TCP 9005 : clickhouse 使用此端口把自己伪装成postgresSQL;

  • https 8443 : 支持使用https

  • <listen_host>::</listen_host> – 监听本机上的所有ipv6 地址
    <listen_host>0.0.0.0</listen_host> – 监听本机上的所有ipv4地址

    监听指定的ip
    <listen_host>127.0.0.1</listen_host>
    <listen_host>10.205.110.37</listen_host>

    并发量比较大时,需要优化此参数,等待链接的数量。
    <listen_backlog>128</listen_backlog>
    最大链接数量
    <max_connections>4096</max_connections>

** http 1.1 保持链接时间**
<keep_alive_timeout>3</keep_alive_timeout>

最大并发链接数
<max_concurrent_queries>400</max_concurrent_queries>

内存设置
<max_server_memory_usage>0</max_server_memory_usage>
如果此次设置为0,可用内存的大小由参数"max_server_memory_usage_to_ram_ratio" * 可用物理内存的大小。
Default is “max_server_memory_usage_to_ram_ratio” of available physical RAM.
If the value is larger than “max_server_memory_usage_to_ram_ratio” of available physical RAM, it will be cut down。如果使用的内存量大于可用内存时,clickhouse-server服务进程就会杀掉。

<max_thread_pool_size>10000</max_thread_pool_size>
最大线程池的大小。

设置最大使用可用物理内存的比例:
<max_server_memory_usage_to_ram_ratio>0.7</max_server_memory_usage_to_ram_ratio>

设置数据存放目录
/export/clickhouse/

设置临时数据目录
<tmp_path>/export/clickhouse/tmp/</tmp_path>

由’file’引擎表函数可访问的用户提供文件的目录。

<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>

<remote_servers>

集群的名字test_shard_localhost

    <test_shard_localhost>  
        <shard>
            <!-- Optional. Whether to write data to just one of the replicas. Default: false (write data to all replicas). -->
            **可选的。是否只向一个副本写入数据。默认值:false(写入所有副本)。**
            <internal_replication>true</internal_replication> -->
            <!-- **数据写入改分片的权重** -->
            <!-- <weight>1</weight> -->
            <replica>
                <host>localhost</host>
                <port>9000</port>
                <!-- Optional. Priority of the replica for load_balancing. Default: 1 (less value has more priority)可选的。load_balancing副本的优先级。缺省值:1(值越小优先级越高). -->
                <!-- <priority>1</priority> -->
            </replica>
        </shard>
    </test_shard_localhost>
    <test_cluster_two_shards_localhost>
         <shard>
             <replica>
                 <host>localhost</host>
                 <port>9000</port>
             </replica>
         </shard>
         <shard>
             <replica>
                 <host>localhost</host>
                 <port>9000</port>
             </replica>
         </shard>
    </test_cluster_two_shards_localhost>
    <test_cluster_two_shards>
        <shard>
            <replica>
                <host>127.0.0.1</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <replica>
                <host>127.0.0.2</host>
                <port>9000</port>
            </replica>
        </shard>
    </test_cluster_two_shards>
    <test_cluster_two_shards_internal_replication>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>127.0.0.1</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>127.0.0.2</host>
                <port>9000</port>
            </replica>
        </shard>
    </test_cluster_two_shards_internal_replication>
    
    <open_service_cluster>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ch1.test.com</host>
                <port>9000</port>
            </replica>

            <replica>
                <host>ch2.test.com</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>ch3.test.com</host>
                <port>9000</port>
            </replica>
            <replica>
                <host>ch4.test.com</host>
                <port>9000</port>
            </replica>
        </shard>
    </haigeek_open_service_cluster>
</remote_servers>

zookeeper设置

<zookeeper>
    <node>
        <host>ch1.test.com</host>
        <port>2181</port>
    </node>
    <node>
        <host>ch1.test.com</host>
        <port>2181</port>
    </node>
    <node>
        <host>ch1.test.com</host>
        <port>2181</port>
    </node>
</zookeeper>

给服务器设置一个集群内的喂一次标识
第一台服务器

<macros>
    <shard>01</shard>
    <replica>app-01-1</replica>
</macros>

第二台服务器

 <macros>
    <shard>01</shard>
    <replica>app-01-2</replica>
</macros>

第三台服务器

<macros>
    <shard>02</shard>
    <replica>app-02-1</replica>
</macros>

第四台服务器

 <macros>
    <shard>02</shard>
    <replica>replica-02-2</replica>
</macros>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

clickhouse集群安装 的相关文章

  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 后台分叉无法正常工作[重复]

    这个问题在这里已经有答案了 我运行这个程序 在前景和背景中 int main int pid printf App Start pid d n getpid while 1 pid fork if pid 0 printf Child n
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • 如何从 C 程序中获取 NIC 详细信息?

    我想要获取连接到我的计算机的所有 NIC 的以下详细信息 1 接口名称 例如eth0 2 接口编号 如Windows http answers yahoo com question index qid 20080517041705AAOmJ
  • linux命令中括号的用途是什么[重复]

    这个问题在这里已经有答案了 我在 Linux 终端中运行以下命令 谁能告诉我 Linux 终端中括号和以下命令的用途是什么 echo GET HTTP 1 0 echo 主机 www google com echo 数控 www googl
  • pprof 和 ps 之间的内存使用差异

    我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况 这pprof工具显示如下 Flat Flat Sum Cum Cum Name Inlined 1 58GB 49 98 49 98 1 58GB 49 98 os Read
  • C - 为什么我无法映射较小(256UL 或更小)的内存?

    请告诉我 为什么我的简单应用程序无法映射较小的内存 而且 为什么有这样一个特定的边界 257UL define MAP SIZE 256UL or below fail define MAP SIZE 257UL ok include
  • 从c调用汇编函数

    我试图从 c 调用汇编函数 但我不断收到错误 text globl integrate type integrate function integrate push ebp mov esp ebp mov 0 edi start loop
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 如何在gnuplot中将字符串转换为数字

    有没有办法将表示数字 以科学格式 的字符串转换为 gnuplot 中的数字 IE stringnumber 1 0e0 number myconvert stringnumber plot 1 1 number 我可能使用 shell 命令
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 如何确定代码是否在信号处理程序上下文中运行?

    我刚刚发现有人正在从信号处理程序调用我编写的绝对不是异步信号安全的函数 所以 现在我很好奇 如何避免这种情况再次发生 我希望能够轻松确定我的代码是否在信号处理程序上下文中运行 语言是 C 但该解决方案不适用于任何语言吗 int myfunc
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t

随机推荐

  • Spring Boot学习之旅:(四)springboot 整合 fastjson

    springboot 默认使用的 jackson 但是听说某宝的fastjson 性能很好 而且平时用的习惯 所以来整合一下 首先在pom 中导入依赖
  • QT登陆注册界面练习

    一 界面展示 二 主要功能界面代码 include widget h include ui widget h Widget Widget QWidget parent QMainWindow parent ui new Ui Widget
  • 【Shell牛客刷题系列】SHELL13 去掉所有包含this的句子:awk与gawk命令的进阶使用

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 首先学习了用于模式扫描和处理语言的gawk命令 然
  • Django 静态文件

    静态文件 1 什么是静态文件 对于前端已经写好了的文件 我们只是拿过来使用 那么这些文件都可以称之为叫 静态文件 静态文件可以是 bootstrap一类的前段框架 已经写好了的图片 css js 静态文件默认全都放在static文件夹下 s
  • vue使用Monaco editor

    1 项目中使用monaco editor首先要安装 npm install monaco editor S 2 在组件中引用并使用 初始化 更改内容 销毁
  • day 7

    封装一个学生的类 定义一个学生这样类的vector容器 里面存放学生对象 至少3个 再把该容器中的对象 保存到文件中 再把这些学生从文件中读取出来 放入另一个容器中并且遍历输出该容器里的学生 include
  • windows系统中用Python调用linux系统shell脚本

    一 windows系统先安装 1 安装python3 5 2 安装paramiko pip install paramiko 3 卸载cryptography 2 5 python m pip uninstall cryptography
  • linux+rwx+权限值,linux权限管理:rwx

    权限管理简介 r w x 对文件及目录进行权限管理 从而达到文件及目录管理 1 rwx对于文件而言 r 可读 可以使用类似cat等命令查看文件内容 w 可写 可以编辑或删除此文件 x 可执行 exacutable 可以命令提示符下当作命令提
  • 华为机试题70-矩阵乘法计算量估算

    描述 矩阵乘法的运算量与矩阵乘法的顺序强相关 例如 A是一个50 10的矩阵 B是10 20的矩阵 C是20 5的矩阵 计算A B C有两种顺序 AB C 或者 A BC 前者需要计算15000次乘法 后者只需要3500次 编写程序计算不同
  • 新手必看!最简单的MySQL数据库详解

    本篇文章主要跟大家介绍的是详解MySQL数据库 对于新手来说帮助很大的 而且MySQL是最流行的关系型数据库管理系统 在web应用方面 MySQL也是最好的RDBMS应用软件之一 因此 感兴趣的朋友记得要看完 是什么数据库 数据库 Date
  • 微信商户平台结算周期T+1是什么意思

    我们在商户平台的管理后台 有的时候 用户支付了 可是却没有看到有资金信息 这个一般是因为您的账户类似的T 1的原因 那结算周期T 1是什么意思呢 通俗的理解就是 交易日的次日 T就是today 今天的意思 的第一个字母的大写 T 1 T 2
  • C语言中的static的用法(超级详细)

    作者 云小逸 个人主页 云小逸的主页 码云 云小逸 YunXiaoYi003 motto 要敢于一个人默默的面对自己 强大自己才是核心 不要等到什么都没有了 才下定决心去做 种一颗树 最好的时间是十年前 其次就是现在 学会自己和解 与过去和
  • yii2 ajax增删改查,Yii2 中常用的增删改查操作总结

    一 新增 1 使用save model newUser model gt name test model gt phone 13000000000 model gt email 123456 qq com model gt save 2 使
  • c语言24点核心算法,24点游戏的核心算法时.doc

    24点游戏的核心算法时 24点游戏的核心算法 时间 2010 10 15 15 10 点击 873 次 24 点游戏 就是在给定的几个数字之间加入数学运算符号 使最终结果等于 24 如下图所示 算法的思路是 1 考虑没有括号的情况 运算符为
  • 「面试」拿到B站的意向书

    此次B站服务端开发面试之旅可谓惊险 不过通过对大部分面试题套路的掌握 不出意外还是拿下了 下面我们来看看这些骚题是不是常见的不能再常见的了 这些面试题看了就能面上 当然不是 只是通过这些题让自己知道所欠缺的是什么 以及可以去看看哪些资料 1
  • React 从零开始学习(二)—— JSX

    接上一篇 搭建的项目基本结构如下 上面可以看到 React 应用程序是由 组件 组成的 一个组件是 UI 用户界面 的一部分 有自己的逻辑和外观 组件可以小到一个按钮 也可以大到整个页面 JSX React 组件是返回标签的 JavaScr
  • MySQL 用户管理

    目录 用户管理 用户 用户信息 创建用户 删除用户 修改用户密码 数据库的权限 给用户 注意 如果发现赋权限后 没有生效 执行如下指令 回收权限 用户管理 如果我们只能使用 root 用户 这样存在安全隐患 这时 就需要使用 MySQL 的
  • 【正点原子STM32连载】 第三十章 PVD电压监控实验 摘自【正点原子】APM32F407最小系统板使用指南

    1 实验平台 正点原子stm32f103战舰开发板V4 2 平台购买地址 https detail tmall com item htm id 609294757420 3 全套实验源码 手册 视频下载地址 http www openedv
  • [951]numpy.concatenate()函数

    numpy concatenate 官方文档 numpy concatenate a1 a2 axis 0 out None 将具有相同结构的array序列结合成一个array axis是拼接方向 0为横轴 1为纵轴 axis 0 拼接方向
  • clickhouse集群安装

    环境介绍 准备四台服务器搭建clickhouse集群 创建两个分片 每个分片一个副本 在任意三台服务器上安装zookeeper 服务 clickhouse集群依赖zookeeper进行服务器之间的数据同步 192 168 1 1 ch1 t