Linux 下配置zookeeper集群
我们首先准备三台服务器,IP地址分别如下(前提是要先安装JDK)
192.168.100.101
192.168.100.102
192.168.100.103
1、配置主机名到IP地址的映射(此步骤不是必须的,我们可以直接在zk的配置文件中填写IP地址),这样配置的好处是如果某个IP地址发生了变化,我们不需要重启zookeeper,直接修改主机对应的IP地址即可。
直接修改/etc/hosts文件,设置主机zoo-1映射到192.168.100.101,设置主机zoo-2映射到192.168.100.102,设置主机zoo-3映射到192.168.100.103
[root@localhost zookeeper]# vi /etc/hosts
然后在文件末尾追加
192.168.100.101 zoo-
192.168.100.102 zoo-
192.168.100.103 zoo-
这里的映射关系,保存后立即生效的。
2、在其中一台机器上安装zookeeper,下载zookeeper到zoo-1的机器上,此处使用的zookeeper-3.4.9,zookeeper下载解压后,修改配置文件即可使用。
[root@localhost zookeeper]# tar zxvf /usr/local/download/zookeeper-3.4..tar.gz /usr/local/soft/zookeeper
进入conf目录下,将zoo_sample.cfg复制一份重命名为zoo.cfg(zookeeper启动时默认寻找conf下名字为zoo.cfg的配置文件)
[root@localhost zookeeper]# cd /usr/local/soft/zookeeper/zookeeper-3.4./
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
修改zoo.cfg中的配置信息
[root@localhost conf]# vi zoo.cfg
修改配置文件信息如下
# The number of milliseconds of each tick
tickTime=
# The number of ticks that the initial
# synchronization phase can take
initLimit=
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/data/zookeeper #zookeeper数据目录
# the port at which the clients will connect
clientPort=
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=
#设置集群信息,此处的zoo-x可以用ip地址代替
server.=zoo-::
server.=zoo-::
server.=zoo-::
创建zookeeper的数据目录,即我们zoo.cfg中的dataDir对应的目录
[root@localhost conf]# mkdir /usr/local/data/zookeeper
在dataDir目录中,创建一个名为myid的文件,并写入机器对应的数字值,比如我们是在zoo-1的机器上,就将该值设置为1,即集群中sever.1=zoo-1:2888:3888中server.后对应的数字。这是zookeeper用来识别是那一台集群机器的标识。
[root@localhost conf]# echo "" > /usr/local/data/zookeeper/myid
此时我们集群中的一台服务器就配置好了
3、在其余两台机器上也安装zookeeper,可以通过scp命令直接拷贝文件即可。每个机器的都是用相同的配置信息。
[root@localhost conf]# scp -r /usr/local/soft/zookeeper/zookeeper-3.4./ root@192.168.100.102:/usr/local/soft/zookeeper
root@192.168.100.102's password:
输入密码即可将对应的文件传输到要其他集群机器上。
注:此处唯一不同的地方是每个dataDir下的myid中的内容要按照zoo.cfg配置文件中的集群信息设置。比如:192.168.100.102对应集群中的server.2,所以在myid中写入2
到此为止,集群相关配置已经完毕了。下面就可以启动集群了
4、启动zookeeper集群
我的启动顺序是:zoo-1 -> zoo-2 --> zoo-3
[root@localhost zookeeper]# pwd
/usr/local/soft/zookeeper
[root@localhost zookeeper]# zookeeper-3.4./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/soft/zookeeper/zookeeper-3.4./bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
这样表明zoo-1的服务器已经启动,同时在我们当前操作路径下回生成一个zookeeper的日志文件,zookeeper.out
[root@localhost zookeeper]# pwd
/usr/local/soft/zookeeper
[root@localhost zookeeper]# ll
总用量
drwxr-xr-x. 8月 zookeeper-3.4.
-rw-r--r--. root root 10月 : zookeeper.out
文件中记录了集群的日志信息,当只启动zoo-1服务器的时候,日志中会出现异常,应为集群其他服务没启动,所以这个异常是没问题的。大概信息如下
[root@localhost zookeeper]# tailf zookeeper.out
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:)
at java.net.Socket.connect(Socket.java:)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:)
-- ::, [myid:] - INFO [QuorumPeer[myid=]/:::::::::QuorumPeer$QuorumServer@] - Resolved hostname: zoo- to address: zoo-/192.168.100.103
-- ::, [myid:] - INFO [QuorumPeer[myid=]/:::::::::FastLeaderElection@] - Notification time out:
-- ::, [myid:] - WARN [QuorumPeer[myid=]/:::::::::QuorumCnxManager@] - Cannot open channel to at election address zoo-/192.168.100.102:
java.net.ConnectException: 拒绝连接 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:)
at java.net.Socket.connect(Socket.java:)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:)
-- ::, [myid:] - INFO [QuorumPeer[myid=]/:::::::::QuorumPeer$QuorumServer@] - Resolved hostname: zoo- to address: zoo-/192.168.100.102
-- ::, [myid:] - WARN [QuorumPeer[myid=]/:::::::::QuorumCnxManager@] - Cannot open channel to at election address zoo-/192.168.100.103:
接着启动zoo-2和zoo-3,全部启动完毕后,集群会自动选举出一台服务器作为leader,其余服务器为follower。
可以在每台服务器上使用命令查看服务器是什么类型的:
[root@zoo- zookeeper]# zookeeper-3.4./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/soft/zookeeper/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower
[root@zoo- zookeeper]# zookeeper-3.4./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/soft/zookeeper/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: leader
[root@zoo- zookeeper]# zookeeper-3.4./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/soft/zookeeper/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: follower
通过上面状态查询结果可见,zoo-2是集群的Leader,其余的两个结点是Follower。可以通过客户端,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),你可以在任何一个结点上建立到服务集群的连接,例如:
[root@localhost zookeeper]# zookeeper-3.4./bin/zkCli.sh -server 192.168.100.101:
Connecting to 192.168.100.101:
-- ::, [myid:] - INFO [main:Environment@] - Client environment:zookeeper.version=3.4.-, built on // : GMT
-- ::, [myid:] - INFO [main:Environment@] - Client environment:host.name=localhost
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.version=1.8.0_151
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.vendor=Oracle Corporation
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.home=/usr/local/soft/java/jdk1..0_151/jre
-- ::, [myid:] - INFO [main:Environment@] - Client environment:java.class.path=/usr/local/soft/zookeeper/zookeeper-3.4./bin/../build/classes:/usr/local/soft/zookeeper/zookeeper-3.4./bin/../build/lib/*.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../lib/netty-3.10.5.Final.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../lib/log4j-1.2.16.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../lib/jline-0.9.94.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../zookeeper-3.4.9.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../src/java/lib/*.jar:/usr/local/soft/zookeeper/zookeeper-3.4.9/bin/../conf:
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-693.el7.x86_64
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2017-10-28 01:24:49,359 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/usr/local/soft/zookeeper
2017-10-28 01:24:49,360 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.100.101:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@67424e82
2017-10-28 01:24:49,400 [myid:] - INFO [main-SendThread(192.168.100.101:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 192.168.100.101/192.168.100.101:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2017-10-28 01:24:49,544 [myid:] - INFO [main-SendThread(192.168.100.101:2181):ClientCnxn$SendThread@876] - Socket connection established to 192.168.100.101/192.168.100.101:2181, initiating session
2017-10-28 01:24:49,560 [myid:] - INFO [main-SendThread(192.168.100.101:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 192.168.100.101/192.168.100.101:2181, sessionid = 0x15f5ed84b260001, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.100.101:2181(CONNECTED) 0] ls /
[zookeeper]
Linux 下配置zookeeper集群的更多相关文章
- linux下配置tomcat集群的负载均衡
linux下配置tomcat集群的负载均衡 一.首先了解下与集群相关的几个概念集群:集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台.在客户端看来,一个集群就象是一个服 ...
- Linux下搭建ZooKeeper集群
摘要 Zookeeper是针对大型分布式系统的高可靠的协调系统.它基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题. ...
- Linux下安装zookeeper集群
首先,准备三台Linux虚拟机 三台机器 centos01 :192.168.1.168(lxs001) centos03 :192.168.1.178(lxs003) centos03 :1 ...
- Linux下配置Redis集群模式
配置机器1 在演示中,172.16.179.130为当前ubuntu机器的ip 在172.16.179.130上进⼊Desktop⽬录,创建conf⽬录 在conf⽬录下创建⽂件7000.conf,编 ...
- Linux下安装zookeeper集群(奇数个)
1. 解压zookeeper压缩包 2. data里创建“myid”文件(命令touch myid),内容是1(命令 echo 1 >> myid) 3. zoo.cnf里配置dat ...
- Linux下搭建tomcat集群全记录(转)
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...
- Linux下搭建tomcat集群全记录
(转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...
- windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error
windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...
- linux系统搭建zookeeper集群
转载至:https://blog.csdn.net/weixin_38111957/article/details/82927878 一.引言 今天咱们就来搭建一下zookeeper集群,当然搭建集群 ...
随机推荐
- 如何制作微信动态表情包 GIF制作工具哪个好
表情包已经成为我们生活聊天中必不可少的一部分,但是如何制作微信动态表情包呢?自己制作的表情包更加独有个性,今天小编带大家看一波原创表情包的制作方法吧! 使用工具:电脑 操作方法: 1.首先在手机上也是 ...
- 华为P20无线投屏到电脑 绝地求生投射电脑
如今出门在外,必不可少的就是手机,如果没有了手机,每个人都会感觉没有安全感,感觉和世界失去了联系,我们每天每个人都在使用手机,但是作为华为手机用户的你,了解华为P20无线投屏到电脑是怎么操作的吗? 使 ...
- 在viewPager中双指缩放图片,双击缩放图片,单指拖拽图片
我们就把这个问题叫做图片查看器吧,它的主要功能有: (项目地址:https://github.com/TZHANHONG/ImageViewer/releases/tag/1.0,里面的MyImage ...
- WPF控件库:图片按钮的封装
需求:很多时候界面上的按钮都需要被贴上图片,一般来说: 1.按钮处于正常状态,按钮具有背景图A 2.鼠标移至按钮上方状态,按钮具有背景图B 3.鼠标点击按钮状态,按钮具有背景图C 4.按钮处于不可用状 ...
- Android ListView的item背景色设置以及item点击无响应等相关问题
Android ListView的item背景色设置以及item点击无响应等相关问题 在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的ite ...
- LeetCode题解之 Assign Cookies
1.题目描述 2.问题分析 使用贪心算法. 3 代码 class Solution { public: int findContentChildren(vector<int>& g ...
- MySQL 查看用户授予的权限
在MySQL中,如何查看一个用户被授予了那些权限呢? 授予用户的权限可能分全局层级权限.数据库层级权限.表层级别权限.列层级别权限.子程序层级权限.具体分类如下: 全局层级 全局权限适用于一个给定 ...
- spring4笔记----报错publicid systemid之间要有空格的解决方法
<?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www. ...
- The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "SDSSDFCC...
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server ...
- c/c++ 标准库 vector
c/c++ 标准库 vector 标准库 vector的小例子 test1~test7 #include <iostream> #include <vector> using ...