Linux下zookeeper集群搭建
Linux下zookeeper集群搭建
部署前准备
下载zookeeper的安装包
http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper-3.4.10。准备三台服务器
ip地址为:172.16.18.198
172.16.18.199
172.16.18.200
检查jdk版本,安装jdk环境,jdk需要1.7以上。
安装zookeeper
1.三台服务器分别上传zookeeper安装包,上传到/opt/目录下,然后tar zxvf zookeeper-3.4.10.tar.gz
2.拷贝zoo_sample.cfg 为zoo.cfg 修改/opt/zookeeper-3.4.10/conf/zoo.cfg配置文件,添加如下内容:
server.1=172.16.18.198:2888:3888
server.2=172.16.18.199:2888:3888
server.3=172.16.18.200:2888:3888
3.修改zookeeper数据文件存放目录
dataDir=/data/zookeeper
此时zoo.cfg 配置文件内容为:
# The number of milliseconds of each tick
tickTime=2000 ##zookeeper单位时间为2ms
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 ##对于从节点最初连接到主节点时的超时时间,单位为tick值的倍数。即20ms
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 ##对于主节点与从节点进行同步操作时的超时时间,单位为tick值的倍数。即10ms
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181 ##客户端链接端口
# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=60 ##客户端最大链接数
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=172.16.18.198:2888:3888
server.2=172.16.18.199:2888:3888
server.3=172.16.18.200:2888:3888
4.新建myid文件
在三台服务器的数据存放目录下新建myid文件,并写入对应的server.num 中的num数字
如:在172.16.18.198上将server.1中1写入myid
echo 1 >/data/zookeeper/myid
5.添加环境变量,方便我们执行脚本命令
vi etc/profile 在最后添加如下两个。
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
保存后重新加载一下:
source /etc/profile
6.修改日志存放目录(可选)
vi /opt/zookeeper/bin/zkEnv.sh 找到ZOO_LOG_DIR 和 ZOO_LOG4J_PROP位置
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
#配置zookeeper日志输出存放路径
ZOO_LOG_DIR="/var/applog/zookeeper"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
#配置日志输出级别,这里把几个级别一并配上
ZOO_LOG4J_PROP="INFO,CONSOLE,ROLLINGFILE,TRACEFILE"
fi
编辑conf目录下log4j.properties
# Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE, TRACEFILE
zookeeper.console.threshold=INFO
zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=ERROR
zookeeper.tracelog.dir=.
zookeeper.tracelog.file=zookeeper_trace.log
log4j.rootLogger=${zookeeper.root.logger}
完成log的日志目录的修改。
7.启动zookeeper服务
zkServer.sh start来启动。
zkServer.sh restart (重启)
zkServer.sh status (查看状态)
zkServer.sh stop (关闭)
zkServer.sh start-foreground (以打印日志方式启动)
三台服务器分别执行:
zkServer.sh start
然后用 status 检查下状态 如果出现 Mode:leader 或者Mode:follower 表示搭建成功。否则前台执行看一下日志。
$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
如出现:
2019-04-29 14:04:05,992 [myid:3] - INFO [ListenerThread:QuorumCnxManager$Listener@739] - My election bind port: /172.16.18.200:3888
2019-04-29 14:04:06,019 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:QuorumPeer@865] - LOOKING
2019-04-29 14:04:06,025 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@818] - New election. My id = 3, proposed zxid=0x0
2019-04-29 14:04:06,056 [myid:3] - WARN [WorkerSender[myid=3]:QuorumCnxManager@588] - Cannot open channel to 1 at election address /172.16.18.198:3888
java.net.NoRouteToHostException: 没有到主机的路由
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
"zookeeper.log" 303L, 35429C
报这种异常一般有三种情况:
1):zoo.cfg配置文件中,server.x:2888:3888配置出现错误;
2):myid文件内容和server.x不对应,或者myid不在data目录下;
3):系统防火墙是否在启动。
我检查了三种原因后发现是防火墙running。
centos7下查看防火墙状态的命令:
firewall-cmd --state
关闭防火墙的命令:
systemctl stop firewalld.service
systemctl disable firewalld.service (禁止开机启动,永久关闭防火墙)
关闭防火墙后重启即可。
8.验证是否成功
在命令行中输入:zkCli.sh -server 172.16.18.198:2181(由于本人在不同的办公地点在修改该文章,所以ip地址也在变化,知道原理即可)即可连接到其中一台ZooKeeper服务器。其他自动实现同步,客户端只需要和一台保持连接即可。出现如下表示链接成功
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 172.16.18.198:2181(CONNECTED) 0]
Linux下zookeeper集群搭建的更多相关文章
- Linux centos7 zookeeper集群搭建
Zookeeper集群搭建 描述:本章节主要单服务器搭建集群,在一个服务器上启动多个不同端口的zookeeper服务,非真实环境. 真实环境下zookeeper集群会搭建在多个物理服务器上,并非单一的 ...
- Linux下kafka集群搭建过程记录
环境准备 zookeeper集群环境kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s- ...
- Linux下kafka集群搭建
环境准备 zookeeper集群环境 kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s ...
- centos下zookeeper集群搭建
单机模式: 1) 首先下载zookeeper压缩包, 这里采用zookeeper3.4.8.... wget http://mirror.bit.edu.cn/apache/zookeeper/zo ...
- Linux下solr集群搭建
第一步:创建四个tomcat实例.每个tomcat运行在不同的端口.8180.8280.8380.8480 第二步:部署solr的war包.把单机版的solr工程复制到集群中的tomcat中. 第三步 ...
- Linux上Zookeeper集群搭建
一.官网 https://zookeeper.apache.org/ 二.下载安装 (1)下载 复制链接地址 http://mirror.bit.edu.cn/apache/zookeeper/zo ...
- Linux 下redis 集群搭建练习
Redis集群 学习参考:https://blog.csdn.net/jeffleo/article/details/54848428https://my.oschina.net/iyinghui/b ...
- linux下Mongodb集群搭建:分片+副本集
三台服务器 192.168.1.40/41/42 安装包 mongodb-linux-x86_64-amazon2-4.0.1.tgz 服务规划 服务器40 服务器41 服务器42 mongo ...
- Linux 下kafka集群搭建
主机的IP地址: 主机IP地址 zookeeper kafka10.19.85.149 myid=1 broker.id=110.19.15.103 myid=2 broker.id=210.19.1 ...
随机推荐
- iOS-代理设计模式delegate和protocol
充当代理的步骤: 首先要明确谁请别人代理,谁当别人的代理 1> 请代理三部曲: 1 写一个协议protoc,把自己不方便做的事列出来(@protocol studentDelegate < ...
- python面向对象学习笔记(一)
粘贴一些自学过程中的笔记大纲,源文本在pycharm里面写的,有点乱整理一下,部分内容有待补充,书写不一定100%正确,全当数据备份了. 1.面向对象的特性 #你写代码时什么使用面向对象 #处理比较复 ...
- 最新 二三四五java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.二三四五等10家互联网公司的校招Offer,因为某些自身原因最终选择了二三四五.6.7月主要是做系统复习.项目复盘.Leet ...
- CentOS 7 安装wordpress
1.安装php 要安装php 7,必须使用下面的命令在Centos7系统上安装并启用epel和remi存储库. 输入一下代码, yum install http://rpms.remirepo.net ...
- Core JSON及JSON解析
JSON (JavaScript Object Notation) 是一种基于文档的标准数据交换格式,它可以让应用程序通过网络交换数据.JSON独立于编程语言(Ruby, Java/EE, JavaS ...
- linux中的pvmove,pvremove,pvs,pvscan
PV,VG,LV的关系和操作 PV,VG,LV构成了一种易于管理拥有一个或多个硬盘的主机的文件系统,这些硬盘可能只有一个分区也可能有多个.通过将这些物理存在的分区(或称为卷)PV(physical v ...
- python线程事件Event(30)
在python项目开发中,线程thread使用是比较常见的,在前面的文章中我们介绍了 python线程的创建 以及 线程互斥锁 ,今天还要额外介绍一个与线程相关的内容 – 事件Event. 一.pyt ...
- cv2---imread---error
when I use the cv2.imred() which is absolute path path = r'C:\\Users\\hp\\Desktop\\常用Python代码\\mycv ...
- opencv根据摄像头名称获取索引值
OpenCV的VideoCapture是一个视频读取与解码的API接口,支持各种视频格式.网络视频流.摄像头读取. 针对一般摄像头的读取,opencv为了实现跨平台读取摄像头时是使用的摄像头索引, V ...
- 详解Cookie、Session和缓存
1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实 ...