一、Centos 集群搭建

服务器 端口
10.30.1.16 2181 2881 3881
10.30.1.37 2181 2881 3881
10.30.1.38 2181 2881 3881

1、 修改操作系统的/etc/hosts文件,添加IP与主机名映射(这一步可以不修改,中zoo.cfg中直接写ip即可):

# zookeeper clusterservers

10.30.1.16  zk_node1

10.30.1.37  zk_node2

10.30.1.38  zk_node3

2、  下载或上传zookeeper-3.4.6.tar.gz到/home/base/目录:

$ cd /home/base

$ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

3、  解压zookeeper安装包,并按节点号对zookeeper目录重命名:

$ tar -zxvf zookeeper-3.4.6.tar.gz

服务器1:

$ mv zookeeper-3.4.6 zookeeper

服务器2:

$ mv zookeeper-3.4.6 zookeeper

服务器3:

$ mv zookeeper-3.4.6 zookeeper

4、  在各zookeeper节点目录下创建以下目录(若没有权限请sudo,若文件为权限不够请修改文件权限,sudo chmod a+wx 文件名 或直接sudo chmod 777 文件名):

$ cd /home/base/zookeeper

$ mkdir data

$ mkdir logs

5、  将zookeeper/conf目录下的zoo_sample.cfg文件拷贝一份,命名为zoo.cfg:

$ cp zoo_sample.cfg zoo.cfg

6、  修改zoo.cfg配置文件:

修改三台服务器的zookeeper的配置(/home/base/zookeeper/conf/zoo.cfg)如下:

tickTime=2000initLimit=10syncLimit=5dataDir=/home/base/zookeeper/datadataLogDir=/home/base/zookeeper/logsclientPort=2181server.1=zk_node1:2881:3881Server.2=zk_node2:2881:3881Server.3=zk_node3:2881:3881

参数说明:

tickTime=2000

tickTime这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。

initLimit=10

initLimit这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

syncLimit=5

syncLimit这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

dataDir=/home/base/zookeeper/data

dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。

clientPort=2181

clientPort这个端口就是客户端(应用程序)连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求。

server.A=B:C:D

server.1=zk_node1:2881:3881

server.2=zk_node2:2881:3881

server.3=zk_node3:2881:3881

A是一个数字,表示这个是第几号服务器;

B是这个服务器的IP地址(或者是与IP地址做了映射的主机名);

C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的Leader服务器交换信息的端口;

D是在leader挂掉时专门用来进行选举leader所用的端口。

注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

7、 在dataDir=/home/base/zookeeper/data下创建myid文件

$  cd/home/base/zookeeper/data

touch myid

编辑myid文件,并在对应的IP的机器上输入对应的编号:

$ vi /home/base/zookeeper/data/myid  ## 16服务器值为1

$ vi /home/base/zookeeper/data/myid  ## 37服务器值为2

$ vi /home/base/zookeeper/data/myid  ## 38服务器值为3

8、  在防火墙中打开要用到的端口2181、2881、3881

切换到root用户权限,执行以下命令:

# chkconfigiptables on

# service iptablesstart

编辑/etc/sysconfig/iptables

# vi/etc/sysconfig/iptables

如服务器01增加以下3行:

## zookeeper-A INPUT -m state --state NEW -m tcp -p tcp--dport 2181 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp--dport 2881 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp--dport 3881 -j ACCEPT

重启防火墙:

# service iptables restart

查看防火墙端口状态:

# service iptables status

9、  启动并测试zookeeper(要用base用户启动,不要用root)。启动的过程中,若遇到文件路径Pid不能创建的情况,并且已经修改了文件的访问权限等。网上有的会叫修改zkServer.sh文件,说原因是增加执行时候还没创建需要while sleep的语句,我修改后不能正常使用,后来在网上重新下载一新版本,ok:

(1)  使用base用户到/home/base/zookeeper/bin目录中执行(启动三台服务器):

$ /home/base/zookeeper/bin/zkServer.sh start

(2)  输入jps命令查看进程:

$ jps

1456QuorumPeerMain

其中,QuorumPeerMain是zookeeper进程,说明启动正常

(3)  查看状态:

$ /home/base/zookeeper/bin/zkServer.sh status

(4)  查看zookeeper服务输出信息:

由于服务信息输出文件在/home/wusc/zookeeper/node-0X/bin/zookeeper.out

$ tail-500f zookeeper.out

10、停止zookeeper进程:

$ zkServer.sh stop

11、配置zookeeper开机使用base用户启动:

编辑三台服务器中的/etc/rc.local文件,加入:

su - base-c '/home/base/zookeeper/bin/zkServer.sh start'

第一:Dubbo管控台链接集群

Dubbo管控台可以对注册到zookeeper注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo服务没有影响,管控台也不需要高可用,因此可以单节点部署。

IP: 10.30.1.38

部署容器:Tomcat7

端口:8080

1、  下载(或上传)最新版的Tomcat7(apache-tomcat-7.0.57.tar.gz)到/home/base/

2、  解压:

$ tar -zxvf apache-tomcat-7.0.57.tar.gz$ mv apache-tomcat-7.0.57 dubbo-admin-tomcat

3、  移除/home/base/dubbo-admin-tomcat/webapps目录下的所有文件:

$ rm -rf *

4、  上传Dubbo管理控制台程序dubbo-admin-2.5.3.war

到/home/base/dubbo-admin-tomcat/webapps

5、  解压并把目录命名为ROOT:

$ unzip dubbo-admin-2.5.3.war -d ROOT

把dubbo-admin-2.5.3.war移到/home/base/tools目录备份

$ mv dubbo-admin-2.5.3.war /home/base/tools

6、  配置dubbo.properties:

$ vi ROOT/WEB-INF/dubbo.properties

dubbo.registry.address=zookeeper://10.30.1.16:2181?backup=10.30.1.37:2181,10.30.1.38:2181

dubbo.admin.root.password=Admin@base

dubbo.admin.guest.password=Admin@guest

(以上密码在正式上生产前要修改)

7、  防火墙开启8080端口,用root用户修改/etc/sysconfig/iptables,

# vi /etc/sysconfig/iptables

增加:

## dubbo-admin-tomcat:8080-A INPUT -m state --state NEW -m tcp -p tcp--dport 8080 -j ACCEPT

重启防火墙:

# service iptables restart

8、  启动Tomat7

$ /home/wusc/dubbo-admin-tomcat/bin/startup.sh

9、  浏览http://192.168.1.81:8080/

10、配置部署了Dubbo管控台的Tomcat开机启动:

在虚拟主机中编辑/etc/rc.local文件,加入:

su - base -c '/home/base/dubbo-admin-tomcat/bin/startup.sh'

 三、Zookeeper组成部分

1、zookeeper的特点

1)顺序一致性

客户端的更新顺序与它们被发送的顺序相一致。

2)原子性

更新操作要么成功要么失败,没有第三种结果。

3)单系统镜像

无论客户端连接到哪一个服务器,客户端将看到相同的 ZooKeeper 视图。

4)可靠性

一旦一个更新操作被应用,那么在客户端再次更新它之前,它的值将不会改变。。这个保证将会产生下面两种结果:

1 .如果客户端成功地获得了正确的返回代码,那么说明更新已经成果。如果不能够获得返回代码(由于通信错误、超时等等),那么客户端将不知道更新操作是否生效。

2 .当从故障恢复的时候,任何客户端能够看到的执行成功的更新操作将不会被回滚。

5)实时性

在特定的一段时间内,客户端看到的系统需要被保证是实时的(在十几秒的时间里)。在此时间段内,任何系统的改变将被客户端看到,或者被客户端侦测到。

基于以上特性, ZooKeeper 更高级功能的设计与实现将会变得非常容易,例如: leader 选举、队列以及可撤销锁等机制的实现。

2、四字命令及常用命令

1、ruok   提供简单的服务器状态信息,如果服务器正在运行中(该节点可能与集群中的节点断开),任然会返回imok,否则不做任何相应。

2、stat   输出关于性能和当前服务器的链接情况。

3、srvr   与stat一样,只是少了连接的服务端的信息。

4、dump  列出活动的会话信息及其过期时间,只能在群首节点上使用该命令。

5、conf   列出服务器启动运行时的基本配置信息。

6、envi   列出服务环境的详细信息。

7、mntr  列出比stat更多的服务器统计信息,输出的格式为key<tab>value(群  首服务还将列出额外参数信息).

8、wchs  列出服务器所跟踪的监视点的简短摘要信息。

9、wchc  列出服务器跟踪监视点的详细信息, 并根据会话进行分组。

10、wchp 列出服务器跟踪监视点的详细信息,并根据被设置监视点的znode节点路  径进行分组。

11、reqs  列出未经过处理的请求。

12、cons  列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括    “接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。

13、crst  将cons中的统计数计为0。

14、客户端常用命令

ls / [true]          # 查看当前节点数据ls2 /                # 查看当前节点数据并能看到更新次数等数据# 指定客户端需要链 接的服务端
zkCli.sh–server 10.30.1.37:2181,10.30.1.38:2181 zkServer.sh status   # 查看具体节点信息,如是否是leader# 查看哪个节点被选择作为follower或者leader
echo stat|nc127.0.0.1 2181 # 是否启动了该Server,回复imok表示启动
echo ruok | nc127.0.0.1 2181 create /zk “myData”  # 创建一个zk节点 内容为myData ,创建内容可以为”” get /zk              # 获取zk节点的内容set /zk "zsl"        # 设置zk节点的内容delete /zk           # 删除zk节点rmr /zk              # 删除zk节点及子节点quit                 # 退出

15、服务器端常用命令

./zkServer.sh start | start-foreground | stop | restart | status

3、生产环境配置

上面提到了服务器的集群搭建的一般参数配置,但是在生产环境中是远远不够的,还需要更多的配置信息:

1)、存储配置

preAllocSize : 预分配的事务日志文件大小,以kb为单位

snapCount  : 每次快照的事务数,默认值为100000

Autopurge.snapRetainCount : 进行数据清理时的快照数量和对应的事务日志文件数量,默认值也是最小值为3。

autopurge.purgeInterval : 快照和日志进行垃圾回收的小时数设置,若设置为0则不会知道清理,需要使用zkClearup.sh脚本手动运行。

fsync.warningthreshouldms : 触发警告的存储同步时间阀值,以毫秒为单位默认为1000毫秒。

weight.x=n : 服务器节点选举header的权重值,默认为1。

traceFile : 持续跟踪zookeeper的操作,并将操作记录到跟踪日志中(文件名为traceFile.year.month.day),还需要设置requestTraceFile选项才有效。

2)、网络配置

zookeeper.globalOutstandingLimit : 待处理的最大请求数,默认值为1000

maxClientCnxns : 运行每个Ip地址并发的socket的最大数,默认为60个

clientPortAddress : 限制客户端链接到指定的接收信息的地址上,默认情况下,一个zookeeper会监听中所有的网络接口地址上等待客户端的链接。

minSessionTimeout : 最小的会话超时时间,单位为毫秒,

maxSessionTimeout : 最大的会话超时时间,单位为毫秒,默认情况下为tickTime的20倍。

3)、集群配置

initLimit : 追随者最初链接到群首的超时值,单位为tickTime的倍数。

syncLimit : 追随者与群首进行sync的超时值,单位为tickTime的倍数。

zookeeper.leaderServers : 群首是否为客户端提供服务,”yes”或”no”

Server.x=[hostname | ip]:port:port:[:observer]

zookeeper.cnxTimeout : 群首选举打开一个新的链接的超时值

electionAlg : 选举算法的配置选项。

4)、认证和授权配置

zookeeper.DigestAuthenticationProvider.superDigest :只适用于java系统属性,指定了super用户的密码摘要信息,默认不起作用。

5)、非安全配置

zookeeper.forceSync : 控制是否将数据信息同步到存储设备上,”yes”或”no”。

juti.maxbuffer : 只适用于java环境的系统属性

zookeeper.skipACL : 跳过ACL检查

readonlymode.enable : 只适用于java,true or false

6)、日志配置

使用conf/log4j.properties配置文件参数

7、重配置

重配置是为了防止在生产环境中由于数据不同步造成的错误。例如:有集群A、B、C三个节点,由于客户端越来越多需要将节点数增加至五个,但是有无网络问题三个节点提示的事务个数不相同,在重启服务的时候A、B重启较慢,C、D、E先启动并且满足法定人的数量,同步了C中的事务数,当A、B链接进来的时候发现数据不同,要求将其多余的进行删除操作,则会造成数据的不正确。若使用重配置则不会造成类似的情况。

在服务器的zoo.cfg中增加

dynamicConfigFile=./dyn.cfg

4、内置鉴权模式

Zookeeper提供了四种内置模式进行ACL处理,分别为OPEN_ACL_UNSAFE、super、digest和ip。可也以扩展org.apache.zookeeper.server.auth.AuthenticationProvider,实现自己的鉴权模式。

Zookeeper的Centos集群搭建相关推荐

  1. 基于zookeeper的solrCloud集群搭建

    转自:https://blog.csdn.net/yougoule/article/details/78445759  基于原文对实践遇到的问题稍作补充 1.安装及搭建相关环境 1.1环境准备 cen ...

  2. 【运维技术】Zookeeper单机以及集群搭建教程

    Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...

  3. 环境搭建-CentOS集群搭建

    环境搭建-CentOS集群搭建 写在前面 最近有许多小伙伴问我,大数据的hadoop分布式集群该如何去搭建.所以,想着,就写一篇博客,帮助到更多刚入门大数据的人.本博客会一步一步带你实现一个Hadoo ...

  4. zookeeper单机和集群搭建过程详细步骤

    文章目录: ▶ 单机环境搭建 ▶ 设置zookeeper为开机服务 ▶ 集群环境搭建 单机环境搭建 要求: 依赖Java环境 单机搭建过程: 进入到/opt目录下,创建zookeeper 文件夹 cd ...

  5. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  6. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  7. zookeeper伪分布式集群搭建

    zookeeper集群搭建注意点: 配置数据文件myid1/2/3对应server.1/2/3 通过zkCli.sh -server [ip]:[port]检测集群是否配置成功. 第一步:首先我们将我 ...

  8. zookeeper 和 kafka 集群搭建

    Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...

  9. Zookeeper理解与集群搭建

    文章目录 前言 介绍 简介 Zookeeper持久化机制 Zookeeper特性 安装与部署 节点znode介绍 Zookeeper如何保存数据 znode节点信息 znode结构 znode类型 Z ...

最新文章

  1. 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件
  2. hdu 1203 I NEED A OFFER!
  3. C# 代理HTTP请求
  4. .NET架构小技巧(4)——反射,架构人员法宝II
  5. 计算机内存比外存容量大吗,内存容量一般比外存容量大吗
  6. 交互式 shell 玩转 Python
  7. flashfxp连接失败,导致flashfxp连接失败的4种原因
  8. Da黄蜂vep云课堂6.05录屏截屏提取为mp4教程
  9. 【数据结构】计算二叉树深度完整C语言代码
  10. 掌控人生的姑娘,从不活在PS里
  11. [转贴]杨式太极拳八十五式通释—3—王志远
  12. Python爬取拉钩招聘网,用数据告诉你这类程序员最赚钱
  13. ERROR 2002 (HY000): Cant connect to local MySQL server through socket的解决方法
  14. 没有网线接口的MacBook电脑怎么连接有线网络?USB外置网卡来帮忙
  15. 不优雅地解决pytorch模型测试阶段显存溢出问题
  16. linux开源社区贡献代码,4岁小萝莉向Linux内核贡献代码修复「漏洞」而且代码已经合并到内核...
  17. MySQL期末考试题目 题目1:查询employee数据表中的第5—8行的数据;题目2:查询每个部门的员工人数以及平均工资;题目3:查询‘孙威’的基本信息,包括员工编号、所在部门名称、岗位等级以及基本
  18. 【统计理论】关于置信度、置信区间的理解
  19. python数据结构之数据类型
  20. 用Labelmx条码打印软件在A4纸上批量打印条码标签

热门文章

  1. 在Typora路上愈走愈远,几乎涵盖所有入门攻略和常见问题以及typora继续探索~
  2. connectbot本地安装php,Android studio下编译connectbot
  3. BaseAdapter的使用
  4. 对基层技术管理者的一些建议
  5. excel白屏未响应_「excel打开空白」Excel 2016 打开后空白的解决方法 - seo实验室
  6. error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: error: (-215) (M0.type
  7. 人工智能 识别医疗票据、医疗结算清单 OCR识别技术
  8. echarts设置坐标轴标题的样式
  9. 【数据分析与挖掘(一)】笔试题汇总(附答案)
  10. 2020.10.20课堂笔记(java8新特性 lambda表达式)