1.集群节点信息

10.12.110.201 ch201

10.12.110.202 ch202

10.12.110.203 ch203

2. 搭建一个zookeeper集群

在这三个节点搭建一个zookeeper集群(如果搭建可以直接忽略这一步),先在一个节点上根据以下配置

2.1. 下载 zookeeper-3.4.12.tar.gz 安装包,放置到上面三台服务器一个目录下(/apps/)

2.2. 进入到/apps/目录下,解压tar包,tar -zxvf zookeeper-3.4.12.tar.gz

2.3. 进入zookeeper的conf目录,拷贝zoo_sample.cfg为zoo.cfg,cp zoo_sample.cfg zoo.cfg 修改zoo.cfg文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir= /apps/zookeeper-3.4.13/data/zookeeper
dataLogDir= /apps/zookeeper-3.4.13/log/zookeeper
clientPort=2182
autopurge.purgeInterval=0
globalOutstandingLimit=200
server.1=ch201:2888:3888
server.2=ch202:2888:3888
server.3=ch203:2888:3888

2.4. 创建需要的目录

$:mkdir -p /apps/zookeeper-3.4.13/data/zookeeper
$:mkdir -p /apps/zookeeper-3.4.13/log/zookeeper

配置完成后将当前的zookeeper目录scp到其他两个节点

2.5. 设置myid

$:vim /data/zookeeper/myid #ch201为1,ch202为2,ch203为3

2.6. 进入zookeeper的bin目录,启动zookeeper服务,每个节点都需要启动

$: ./zkServer.sh start

2.7. 启动之后查看每个节点的状态

$: ./zkServer status

其中有一个节点是leader,有两个节点是follower,证明zookeeper集群是部署成功的

2.8. 测试zookeeper

$:./zkCli.sh -server ch201:2182

如果出现拒绝连接,查看防火墙是否关闭,关闭防火墙service iptables stop重启zookeeper,或排查是否配置有误

3. 在三个节点分别搭建单机版,单机版以一个为例

3.1. 查看当前linux版本

$: cat /proc/version
Linux version 2.6.32-573.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu Jul 23 15:44:03 UTC 2015

3.2. 下载对应的linux版本的clickhouse rpm版本,上面版本对应的版本如下:

clickhouse-client-19.9.5.36-1.el6.x86_64.rpm
clickhouse-common-static-19.9.5.36-1.el6.x86_64.rpm
clickhouse-server-19.9.5.36-1.el6.x86_64.rpm
clickhouse-server-common-19.9.5.36-1.el6.x86_64.rpm

如果你的linux是下面版本:

Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018

对应的clickhouse版本是:

clickhouse-client-19.16.3.6-1.el7.x86_64.rpm
clickhouse-common-static-19.16.3.6-1.el7.x86_64.rpm
clickhouse-server-19.16.3.6-1.el7.x86_64.rpm
clickhouse-server-common-19.16.3.6-1.el7.x86_64.rpm

官网下载地址:https://repo.yandex.ru/clickhouse/deb/stable/main/

3.3. 通过rpm方式按下面顺序依次安装:

进入rpm所在目录:/home/clickhouse/pack/6/

$:rpm -ivh clickhouse-common-static-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-server-common-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-server-19.9.5.36-1.el6.x86_64.rpm
$:rpm -ivh clickhouse-client-19.9.5.36-1.el6.x86_64.rpm

3.4. rpm安装完毕无误后,clickhouse-serverclickhouse-client配置目录如下

$: ll /etc/clickhouse-server/
-rw-r--r-- 1 root root 17642 Nov 15 11:44 config.xml
-rw-r--r-- 1 root root 5609 Jul 21 18:16 users.xml
$: ll /etc/clickhouse-client/
drwxr-xr-x 2 clickhouse clickhouse 4096 Nov 15 10:55 conf.d
-rw-r--r-- 1 clickhouse clickhouse 1568 Jul 21 17:27 config.xml

3.5. 对于目前性能压测只需要关注/etc/clickhouse-server/config.xml

只修改数据存放的目录:

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

注意这个配置的目录磁盘空间必须足够大

其他配置可以根据自己的实际情况而定,注意配置端口是否被占用

3.6. 启动clickhouse-server

$: /etc/init.d/clickhouse-server start

注意:执行这个命令需要安装libicu

如果没有安装会报以下错误:

Start clickhouse-server service: /usr/bin/clickhouse-extract-from-config: error while loading shared libraries: libicui18n.so.42: cannot open shared object file: No such file or directoryCannot obtain value of path from config file: /etc/clickhouse-server/config.xml

安装libicu方法:

下载libicu的rpm包:

libicu-4.2.1-14.el6.x86_64.rpm
libicu-devel-4.2.1-14.el6.x86_64.rpm

存放在linux的一个目录,在当前目录执行:

$: rpm –ivh libicu-4.2.1-14.el6.x86_64.rpm
$: rpm –ivh libicu-devel-4.2.1-14.el6.x86_64.rpm

注意这个包也必须对应linux版本

安装完毕后启动:

$: /etc/init.d/clickhouse-server start

如果出现以下信息证明成功:

Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE

3.7. 停止clickhouse-server

$: /etc/init.d/clickhouse-server stop

3.8. 进入clickhouse-client

$: clickhouse-client --host ch201 --port 9000

出现以下:

注意:默认没有改端口登录方式为clickhouse-client localhost 9000,但当更改非默认端口后,这种方式无法登录,所以推荐用上面的方法。同时登录参数很多,可以通过官网查

证明进入客户端成功

通过查询验证:select 1

证明clickhouse完全安装成功并可以正确使用

4.集群部署

三个节点全部按照上面的指导部署单节点成功后开始配置部署集群需要的配置

4.1.首先以一个节点为例配置,vim /etc/metrika.xml,添加配置信息如下:

<yandex>
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch201</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>ch202</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>ch203</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers> <!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<host>ch201</host>
<port>2182</port>
</node>
<node index="2">
<host>ch202</host>
<port>2182</port>
</node>
<node index="3">
<host>ch203</host>
<port>2182</port>
</node>
</zookeeper-servers> <macros>
<replica>ch203</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>
</case>
</clickhouse_compression> </yandex>
<!-- 其中大部分配置一样,以下的配置根据节点的IP/域名具体配置 -->
<macros>
<replica>ch203</replica>
</macros>

注意:为什么直接vim /etc/metrika.xml一个新文件,这里很难去理解,有点莫名其妙,其实如果仔细看过clickhouse的配置文件/etc/clickhouse-server/config.xml就能明白,有这么一段被注释的配置说明:

<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
Values for substitutions are specified in /yandex/name_of_substitution elements in that file.
-->

配置一个节点完成之后,将/etc/metrika.xml文件scp到其他两个节点并配置

<macros>
<replica>ch203</replica>
</macros>

对应的IP/域名

5.按照上面的指导配置完成之后,在每个节点都启动clickhouse的服务,和单节点启动一样,当出现无误后,查看clickhouse的log文件,如果出现以下信息,就基本没有问题

6.进一步验证

在每个节点启动clickhouse客户端,和单节点启动完全一样,查询集群信息

select * from system.clusters;

ch201节点应该是以下信息:

ch202节点应该是以下信息:

ch203节点应该是以下信息:

可以看到红框内的信息基本相同,但是也有细微差别,红框外是之前的单节点的信息

至此,clickhouse的集群部署完全成功,生产环境针对数据量可能还需要一些额外的配置

Clickhouse集群部署的更多相关文章

  1. Clickhouse单机及集群部署详解

    一.ClickHouse简介 ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域.目前国内社区火热,各个大厂纷纷跟进大规模使用: 今日头条 内部用ClickHous ...

  2. Clickhouse Docker集群部署

    写在前面 抽空来更新一下大数据的玩意儿了,起初架构选型的时候有考虑Hadoop那一套做数仓,但是Hadoop要求的服务器数量有点高,集群至少6台或以上,所以选择了Clickhouse(后面简称CH). ...

  3. ClickHouse(04)如何搭建ClickHouse集群

    ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么 ...

  4. 手把手教你:将 ClickHouse 集群迁至云上

    前言 随着云上 ClickHouse 服务完善,越来越多的用户将自建 ClickHouse 服务迁移至云上.对于不同数据规模,我们选择不同的方案: 对于数据量比较小的表,通常小于10GB 情况下,可以 ...

  5. Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署

    Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...

  6. 一文读懂clickhouse集群监控

    更多精彩内容,请关注微信公众号:后端技术小屋 一文读懂clickhouse集群监控 常言道,兵马未至,粮草先行,在clickhouse上生产环境之前,我们就得制定好相关的监控方案,包括metric采集 ...

  7. Quartz.net持久化与集群部署开发详解

    序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...

  8. Openfire 集群部署和负载均衡方案

    Openfire 集群部署和负载均衡方案 一.   概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...

  9. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

随机推荐

  1. Quartz.Net 任务调度之日志(5)

    Quartz.框架的监听器和日志 1.JobListener  任务日志 新建一个类,继承IJobListener public class CustomJobListener : IJobListe ...

  2. kvm搭建

    今日做公司项目时恰好是这个,然后就做一个博客,希望可以帮助到你们 1.把虚拟机zmedu63内存调成6G以上,因为我们要在VMware虚拟中安装KVM,然后在KVM中再安装虚拟机,需要内存大一些.zm ...

  3. SpringDataJpa全部依赖

    <properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version& ...

  4. POJ 2251 Dungeon Master(dfs)

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  5. LOJ 2720 「NOI2018」你的名字——后缀自动机

    题目:https://loj.ac/problem/2720 自己总是分不清 “SAM上一个点的 len[ ] ” 和 “一个串的前缀在 SAM 上匹配的 len ”. 于是原本想的 68 分做法是, ...

  6. 根据一个经纬度坐标获取周边最近经纬。Java实现

    1.需求:指定一个经纬度坐标,如:(31.2121751783,121.4411213954).周围有一堆经纬度坐标,找出与它最近的那个. 2.实现思路:将给出经纬度看成原点(0,0).周围经纬度定位 ...

  7. Linux内核学习-进程

    先说几个术语: 一.Linux进程的五个段 下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么的.重点:代码段.数据段.堆栈段,这是一个概念堆.栈.全局区.常量区,这是另一个 ...

  8. What is the difference between UserControl, WebControl, RenderedControl and CompositeControl?

    What is the difference between UserControl, WebControl, RenderedControl and CompositeControl? UserCo ...

  9. Spring Boot 报错记录

    Spring Boot 报错记录 由于新建的项目没有配置数据库连接启动报错,可以通过取消自动数据源自动配置来解决 解决方案1: @SpringBootApplication(exclude = Dat ...

  10. 如何在vim中同时编辑多个文件

    参考:http://stackoverflow.com/a/53668/941650 Why not use tabs (introduced in Vim 7)? You can switch be ...