Zookeeper的Centos集群搭建
一、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集群搭建相关推荐
- 基于zookeeper的solrCloud集群搭建
转自:https://blog.csdn.net/yougoule/article/details/78445759 基于原文对实践遇到的问题稍作补充 1.安装及搭建相关环境 1.1环境准备 cen ...
- 【运维技术】Zookeeper单机以及集群搭建教程
Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...
- 环境搭建-CentOS集群搭建
环境搭建-CentOS集群搭建 写在前面 最近有许多小伙伴问我,大数据的hadoop分布式集群该如何去搭建.所以,想着,就写一篇博客,帮助到更多刚入门大数据的人.本博客会一步一步带你实现一个Hadoo ...
- zookeeper单机和集群搭建过程详细步骤
文章目录: ▶ 单机环境搭建 ▶ 设置zookeeper为开机服务 ▶ 集群环境搭建 单机环境搭建 要求: 依赖Java环境 单机搭建过程: 进入到/opt目录下,创建zookeeper 文件夹 cd ...
- 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- zookeeper伪分布式集群搭建
zookeeper集群搭建注意点: 配置数据文件myid1/2/3对应server.1/2/3 通过zkCli.sh -server [ip]:[port]检测集群是否配置成功. 第一步:首先我们将我 ...
- zookeeper 和 kafka 集群搭建
Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...
- Zookeeper理解与集群搭建
文章目录 前言 介绍 简介 Zookeeper持久化机制 Zookeeper特性 安装与部署 节点znode介绍 Zookeeper如何保存数据 znode节点信息 znode结构 znode类型 Z ...
最新文章
- 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件
- hdu 1203 I NEED A OFFER!
- C# 代理HTTP请求
- .NET架构小技巧(4)——反射,架构人员法宝II
- 计算机内存比外存容量大吗,内存容量一般比外存容量大吗
- 交互式 shell 玩转 Python
- flashfxp连接失败,导致flashfxp连接失败的4种原因
- Da黄蜂vep云课堂6.05录屏截屏提取为mp4教程
- 【数据结构】计算二叉树深度完整C语言代码
- 掌控人生的姑娘,从不活在PS里
- [转贴]杨式太极拳八十五式通释—3—王志远
- Python爬取拉钩招聘网,用数据告诉你这类程序员最赚钱
- ERROR 2002 (HY000): Cant connect to local MySQL server through socket的解决方法
- 没有网线接口的MacBook电脑怎么连接有线网络?USB外置网卡来帮忙
- 不优雅地解决pytorch模型测试阶段显存溢出问题
- linux开源社区贡献代码,4岁小萝莉向Linux内核贡献代码修复「漏洞」而且代码已经合并到内核...
- MySQL期末考试题目 题目1:查询employee数据表中的第5—8行的数据;题目2:查询每个部门的员工人数以及平均工资;题目3:查询‘孙威’的基本信息,包括员工编号、所在部门名称、岗位等级以及基本
- 【统计理论】关于置信度、置信区间的理解
- python数据结构之数据类型
- 用Labelmx条码打印软件在A4纸上批量打印条码标签
热门文章
- 在Typora路上愈走愈远,几乎涵盖所有入门攻略和常见问题以及typora继续探索~
- connectbot本地安装php,Android studio下编译connectbot
- BaseAdapter的使用
- 对基层技术管理者的一些建议
- excel白屏未响应_「excel打开空白」Excel 2016 打开后空白的解决方法 - seo实验室
- error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: error: (-215) (M0.type
- 人工智能 识别医疗票据、医疗结算清单 OCR识别技术
- echarts设置坐标轴标题的样式
- 【数据分析与挖掘(一)】笔试题汇总(附答案)
- 2020.10.20课堂笔记(java8新特性 lambda表达式)