从入门到高速控制,简介以及linux上的装置

By admin in 美高梅手机版4858 on 2019年4月2日

温馨网上下载安装包,作者下载的是tar.gz安装包直接解压,也足以下载rpm格式

分布式服务协调技术zookeeper种类(1)—— zookeeper 简介以及linux上的安装(单节点),zookeeperlinux

分布式服务协调技术zookeeper笔记——从入门到高速领悟,zookeeper笔记

 

本文重要学习ZooKeeper的系统布局、节点类型、节点监听、常用命令等基础知识,最终还学习了ZooKeeper的高可用集群的搭建与测试。目录如下:

 

ZooKeeper简介与安装

ZooKeeper连串结构

ZooKeeper节点类型

ZooKeeper节点监听

ZooKeeper常用命令

ZooKeeper客户端开发

ZooKeeper高可用集群搭建与测试

 

期望能给想飞快控制ZooKeeper的同室有所支持。

linux安装zookeeper教程,linuxzookeeper教程

第2安装jdk

下一场下载

因为zookeeper是半拉子公投通过,所以1般设置奇数个节点,机器列表如下:

192.168.33.11

192.168.33.12

192.168.33.13

1.解压 tar -zxvf zookeeper-3.4.5.tar.gz

mvzookeeper-3.4.5 ../zookeeper

二.改动配置

cp /zookeeper/conf/zoo_sample.cfg zoo.cfg

vi zoo.cfg

修改:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/logs

clientPort=2181

server.1=192.168.33.11:2881:3881

server.2=192.168.33.12:2882:3882

server.3=192.168.33.13:2883:3883

开拓防火墙:

vi /etc/sysconfig/iptables

## 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

vi /usr/local/zookeeper/data/myid 值为1

启动 ./bin/zkServer.sh start

关闭 ./bin/zkServer.sh stop

jps

1456 QuorumPeerMain

内部,QuorumPeerMain 是 zookeeper 进度,表达运维健康

首先安装jdk 然后下载
因为zookeeper是半拉子大选通过,所以壹般设置奇数个节点,机器列表如下:
1玖贰….

壹.下载zookeeper安装包,放到/usr/local/zookeeper安装包网上下载

ZooKeeper简介

ZooKeeper是八个分布式协调服务框架,平日用于化解分布式项目中相遇的有的管理协调的难题,如统一命名服务、分布式配置管理,分布式锁、集群节点状态协调等等。

ZooKeeper简介与安装

ZooKeeper是1个分布式协调服务框架,日常用于缓解分布式项目中相见的局地管制协调的难题,如统一命名服务、分布式配置管理,分布式锁、集群节点状态协调等等。

二.解压文件tar -zxvf zookeeper-3.4.6.tar.gz

下载

下载

  1. 进入zookeeper-3.4.6目录,创建data文件夹。

  2. 把zoo_sample.cfg改名为zoo.cfg

解压

[[email protected]
ftpuser]# tar -zxvf zookeeper-3.4.9.tar.gz

解压

[[email protected]
ftpuser]# tar -zxvf zookeeper-3.4.9.tar.gz

mv zoo_sample.cfg zoo.cfg

创建数量日志目录

在zookeeper的解压目录下开创以下五个文本夹

 

[[email protected]
zookeeper-3.4.9]# mkdir data

[[email protected]
zookeeper-3.4.9]# mkdir logs

 

创造数量日志目录

在zookeeper的解压目录下创建以下三个文件夹

 

[[email protected]
zookeeper-3.4.9]# mkdir data

[[email protected]
zookeeper-3.4.9]# mkdir logs

 

5.
起步、关闭、查看意况,注意关闭防火墙,这里zookeeper暂不开启,后边布置kafka里运维程序。

拷贝配置文件

到zookeeper的解压目录的conf目录下,将zoo_sample.cfg
文件拷贝壹份,命名字为为 zoo.cfg

 

[[email protected]
conf]# cp zoo_sample.cfg zoo.cfg

拷贝配置文件

到zookeeper的解压目录的conf目录下,将zoo_sample.cfg
文件拷贝壹份,命名叫为 zoo.cfg

 

[roo[email protected]
conf]# cp zoo_sample.cfg zoo.cfg

./zkServer.sh start

修改配置文件

[[email protected]
conf]# vi zoo.cfg

 

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/home/ftpuser/zookeeper-3.4.9/data

dataLogDir=/home/ftpuser/zookeeper-3.4.9/logs

# the port at which the clients will connect

clientPort=2181

server.1=192.168.2.129:2888:3888

# 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.

#

#

#

# 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

 

在zoo.cfg 配置dataDir,dataLogDir,server。

server.A=B:C:D:当中 A 是二个数字,表示那么些是第几号服务器;B 是以此服务

器的 IP 地址;C 代表的是其一服务器与集群中的 Leader
服务器沟通消息的端口;D 表示的是壹旦集群中的 Leader
服务器挂了,供给二个端口来重新开始展览公投,选出三个新的
Leader,而那个端口正是用来实行大选时服务器相互通讯的端口。

 

clientPort 那么些端口便是客户端(应用程序)连接 Zookeeper
服务器的端口,Zookeeper 会监听那几个端口接受客户端的访问请求

修改配置文件

[[email protected]
conf]# vi zoo.cfg

 

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/home/ftpuser/zookeeper-3.4.9/data

dataLogDir=/home/ftpuser/zookeeper-3.4.9/logs

# the port at which the clients will connect

clientPort=2181

server.1=192.168.2.129:2888:3888

# 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.

#

#

#

# 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

 

在zoo.cfg 配置dataDir,dataLogDir,server。

server.A=B:C:D:个中 A 是二个数字,表示那些是第几号服务器;B 是以此服务

器的 IP 地址;C 代表的是其一服务器与集群中的 Leader
服务器调换新闻的端口;D 表示的是只要集群中的 Leader
服务器挂了,须要1个端口来再度进行公投,选出3个新的
Leader,而以此端口正是用来实行公投时服务器相互通讯的端口。

 

clientPort 那么些端口正是客户端(应用程序)连接 Zookeeper
服务器的端口,Zookeeper 会监听那一个端口接受客户端的拜访请求

./zkServer.sh stop

创建 myid 文件

进入/home/ftpuser/zookeeper-3.4.9/data并创建myid文件

 

[[email protected]
conf]# cd /home/ftpuser/zookeeper-3.4.9/data

[[email protected]
data]# vi myid

1

 

从入门到高速控制,简介以及linux上的装置。编排 myid 文件,并在相应的 IP 的机器上输入相应的编号。如在 zookeeper
上,myid

文件内容正是 一。借使只在单点上拓展设置配备,那么唯有多少个 server.一

创建 myid 文件

进入/home/ftpuser/zookeeper-3.4.9/data并创建myid文件

 

[[email protected]
conf]# cd /home/ftpuser/zookeeper-3.4.9/data

[[email protected]
data]# vi myid

1

 

编写 myid 文件,并在相应的 IP 的机械上输入相应的编号。如在 zookeeper
上,myid

文件内容就是 一。尽管只在单点上开始展览设置配备,那么唯有贰个 server.一

./zkServer.sh status

添加环境变量

[[email protected]
data]# vi /etc/profile

 

在文书末尾添加zookeeper 环境变量

 

# zookeeper env

export ZOOKEEPER_HOME=/home/ftpuser/zookeeper-3.4.9/

export PATH=$ZOOKEEPER_HOME/bin:$PATH

 

履行source /etc/profile命令是环境变量生效,执行echo $ZOOKEEPEQX56_HOME查看

拉长环境变量

[[email protected]
data]# vi /etc/profile

 

在文件末尾添加zookeeper 环境变量

 

# zookeeper env

export ZOOKEEPER_HOME=/home/ftpuser/zookeeper-3.4.9/

export PATH=$ZOOKEEPER_HOME/bin:$PATH

 

举行source /etc/profile命令是环境变量生效,执行echo $ZOOKEEPERubicon_HOME查看

陆.zookeeper集群搭建

开拓端口

在防火墙中开拓要用到的端口
21捌一、2888、388八。打开/etc/sysconfig/iptables扩张以下 三 行

 

[[email protected]
data]# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Thu Jun  2 22:41:13 2016

*filter

:INPUT ACCEPT [5:320]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [4:464]

-A INPUT -p udp -m udp –dport 23 -j ACCEPT

-A INPUT -p tcp -m tcp –dport 23 -j ACCEPT

-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 2888 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3888 -j ACCEPT

COMMIT

# Completed on Thu Jun  2 22:41:13 2016

 

[[email protected]
data]#

 

翻看端口运维状态

 

[[email protected]
data]# service iptables status

 

开辟端口

在防火墙中打开要用到的端口
21捌一、288八、388捌。打开/etc/sysconfig/iptables扩大以下 ③ 行

 

[[email protected]
data]# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Thu Jun  2 22:41:13 2016

*filter

:INPUT ACCEPT [5:320]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [4:464]

-A INPUT -p udp -m udp –dport 23 -j ACCEPT

-A INPUT -p tcp -m tcp –dport 23 -j ACCEPT

-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 2888 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3888 -j ACCEPT

COMMIT

# Completed on Thu Jun  2 22:41:13 2016

 

[[email protected]
data]#

 

翻开首口运营状态

 

[[email protected]
data]# service iptables status

 

1.三台机械的IP分别为1九2.16八.一.一、1玖贰.16八.1.2、19二.16八.1.三

启动zookeeper

[[email protected]
zookeeper-3.4.9]# cd bin

[[email protected]
bin]# ll

total 36

-rwxr-xr-x. 1 1001 1001  232 Aug 23 15:39 README.txt

-rwxr-xr-x. 1 1001 1001 1937 Aug 23 15:39 zkCleanup.sh

-rwxr-xr-x. 1 1001 1001 1032 Aug 23 15:39 zkCli.cmd

-rwxr-xr-x. 1 1001 1001 1534 Aug 23 15:39 zkCli.sh

-rwxr-xr-x. 1 1001 1001 1579 Aug 23 15:39 zkEnv.cmd

-rwxr-xr-x. 1 1001 1001 2696 Aug 23 15:39 zkEnv.sh

-rwxr-xr-x. 1 1001 1001 1065 Aug 23 15:39 zkServer.cmd

-rwxr-xr-x. 1 1001 1001 6773 Aug 23 15:39 zkServer.sh

[[email protected]
bin]# zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /home/ftpuser/zookeeper-3.4.9/bin/../conf/zoo.cfg

Starting zookeeper … STARTED

启动zookeeper

[[email protected]
zookeeper-3.4.9]# cd bin

[[email protected]
bin]# ll

total 36

-rwxr-xr-x. 1 1001 1001  232 Aug 23 15:39 README.txt

-rwxr-xr-x. 1 1001 1001 1937 Aug 23 15:39 zkCleanup.sh

-rwxr-xr-x. 1 1001 1001 1032 Aug 23 15:39 zkCli.cmd

-rwxr-xr-x. 1 1001 1001 1534 Aug 23 15:39 zkCli.sh

-rwxr-xr-x. 1 1001 1001 1579 Aug 23 15:39 zkEnv.cmd

-rwxr-xr-x. 1 1001 1001 2696 Aug 23 15:39 zkEnv.sh

-rwxr-xr-x. 1 1001 1001 1065 Aug 23 15:39 zkServer.cmd

-rwxr-xr-x. 1 1001 1001 6773 Aug 23 15:39 zkServer.sh

[[email protected]
bin]# zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /home/ftpuser/zookeeper-3.4.9/bin/../conf/zoo.cfg

Starting zookeeper … STARTED

修改主机名,vi /etc/hosts ,在hosts文件中添加

翻开zookeeper后台日志

[[email protected]
~]# tail -f /home/ftpuser/zookeeper-3.4.9/bin/zookeeper.out

翻看zookeeper后台日志

[[email protected]
~]# tail -f /home/ftpuser/zookeeper-3.4.9/bin/zookeeper.out

192.168.1.1 master

查看zookeeper进程

[[email protected]
bin]# jps

2011 QuorumPeerMain

1245 Bootstrap

2030 Jps

[[email protected]
bin]#

 

当中,QuorumPeerMain 是 zookeeper 进度,运转平常。查看境况

 

[[email protected]
bin]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/ftpuser/zookeeper-3.4.9/bin/../conf/zoo.cfg

Mode: standalone

[[email protected]
bin]#

查看zookeeper进程

[[email protected]
bin]# jps

2011 QuorumPeerMain

1245 Bootstrap

2030 Jps

[[email protected]
bin]#

 

其间,QuorumPeerMain 是 zookeeper 进程,运营健康。查看情形

 

[[email protected]
bin]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /home/ftpuser/zookeeper-3.4.9/bin/../conf/zoo.cfg

Mode: standalone

[[email protected]
bin]#

192.168.1.2 slave1

停止zookeeper进程

[[email protected]
bin]# zkServer.sh stop

ZooKeeper JMX enabled by default

Using config: /home/ftpuser/zookeeper-3.4.9/bin/../conf/zoo.cfg

Stopping zookeeper … STOPPED

[[email protected]
bin]#

停止zookeeper进程

[[email protected]
bin]# zkServer.sh stop

ZooKeeper JMX enabled by default

Using config: /home/ftpuser/zookeeper-3.4.9/bin/../conf/zoo.cfg

Stopping zookeeper … STOPPED

[[email protected]
bin]#

192.168.1.3 slave2

客户端连接zookeeper

[[email protected]
bin]# ./zkCli.sh -server 192.168.2.129:2181

 

输入help命令来查看有哪些命令

 

[zk: 192.168.2.129:2181(CONNECTED) 0] help

ZooKeeper -server host:port cmd args

connect host:port

get path [watch]

ls path [watch]

set path data [version]

rmr path

delquota [-n|-b] path

quit

printwatches on|off

create [-s] [-e] path data acl

stat path [watch]

close

ls2 path [watch]

history

listquota path

setAcl path acl

getAcl path

sync path

redo cmdno

addauth scheme auth

delete path [version]

setquota -n|-b val path

[zk: 192.168.2.129:2181(CONNECTED) 1]

zookeeper
简介以及linux上的安装(单节点),zookeeperlinux ZooKeeper简介
ZooKeeper是一个分布式协调服务框…

客户端连接zookeeper

[[email protected]
bin]# ./zkCli.sh -server 192.168.2.129:2181

 

输入help命令来查看有怎么样命令

 

[zk: 192.168.2.129:2181(CONNECTED) 0] help

ZooKeeper -server host:port cmd args

connect host:port

get path [watch]

ls path [watch]

set path data [version]

rmr path

delquota [-n|-b] path

quit

printwatches on|off

create [-s] [-e] path data acl

stat path [watch]

close

ls2 path [watch]

history

listquota path

setAcl path acl

getAcl path

sync path

redo cmdno

addauth scheme auth

delete path [version]

setquota -n|-b val path

[zk: 192.168.2.129:2181(CONNECTED) 1] 

二.跻身到zookeeper目录,创立文件夹data  mkdir data,

ZooKeeper体系结构

ZooKeeper的类别布局由贰个命名空间组成,类似于三个规范的文件系统。命名空间由称为znodes节点的多少寄存器组成,用ZooKeeper说法,这是类似于文件和目录。不一样于典型的文件系统的是,那是专为存储数据而陈设的,也正是说,ZooKeeper的节点数据是储存在内部存款和储蓄器中中,能够兑现高吞吐量和低顺延的数码。

 

ZooKeeper允许分布式进度(注意,那里强调的是进程,分布式环境中一再是见仁见智主机之间的和谐访问)通过共享ZooKeeper命名空间协会的znodes节点数据来贯彻互相之间协调。

 

 

ZooKeeper命名空间组织示意图

跻身到data并创设文件vi myid,分别写入一,二,叁,ID名称不能够同壹

ZooKeeper节点类型

 

从地点的ZooKeeper命名空间社团示意图中能够见到,ZooKeeper命名空间的根路径是“/”,每二个znode都有投机的path,每二个znode都存储着1份协调数据,那么些多少包括气象音信、配置、地点新闻等等。由于znode维护的多寡主借使用于分布式进程之间和谐的,由此那几个数量一般一点都一点都不大。

命名空间中的每一个znode中的数据都以可读可写的,但各样节点都有3个访问控制列表(ACL),限制谁能够做如何。

取名空间中的每一种znode都有投机的品类,znode的品类首要有上面两种:

(一)PEGL450SISTEN,永久的(只要客户端不删除,则永远存在)

(2)PERSISTENT_SEQUENTIAL,永久且有序号的

(三)EMPEMERAL ,短暂的(只要客户端断开连接,则会被电动删除)

(4)EMPEMERAL_SEQUENTIAL, 短一时有序号的

3.进入到conf目录中,把zoo_sample.cfg文件修改为zoo.cfg,并修改当中的始末

ZooKeeper节点监听

客户端能够对znode举办监听,当znode节点发生变化时,监听事件将会被触发,客户端接收到一个数码包说znode节点已发出变更。

 

ZooKeeper常用命令

ZooKeeper的常用命令相当不难,也就几条,上面我们来上学ZooKeeper的常用命令,加深对ZooKeeper类别结构的知道。

 

(一)ls——查看节点(路径)

 

[zk: 192.168.2.129:2181(CONNECTED) 1] ls /

[dubbo, zookeeper]

[zk: 192.168.2.129:2181(CONNECTED) 2] ls /zookeeper

[quota]

[zk: 192.168.2.129:2181(CONNECTED) 3] ls /dubbo

[com.alibaba.dubbo.monitor.MonitorService,
com.mcweb.api.service.IUserService]

[zk: 192.168.2.129:2181(CONNECTED) 4]

 

(二)create——在命名空间中的有个别路径下创设节点

 

[zk: 192.168.2.129:2181(CONNECTED) 7] create /nodes1 “test node”

Created /nodes1

[zk: 192.168.2.129:2181(CONNECTED) 8] ls /

[dubbo, nodes1, zookeeper]

 

(叁)get——获取命名空间中有个别节点的数量

 

[zk: 192.168.2.129:2181(CONNECTED) 9] get /nodes1

test node

cZxid = 0x227

ctime = Tue Sep 27 04:01:49 CST 2016

mZxid = 0x227

mtime = Tue Sep 27 04:01:49 CST 2016

pZxid = 0x227

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 9

numChildren = 0

[zk: 192.168.2.129:2181(CONNECTED) 10]

 

(四)set——设置命名空间中有个别节点的数额

 

[zk: 192.168.2.129:2181(CONNECTED) 10] set /nodes1 “nodes1 data have
been setted”

cZxid = 0x227

ctime = Tue Sep 27 04:01:49 CST 2016

mZxid = 0x228

mtime = Tue Sep 27 04:07:04 CST 2016

pZxid = 0x227

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 28

numChildren = 0

[zk: 192.168.2.129:2181(CONNECTED) 11] get /nodes1

nodes1 data have been setted

cZxid = 0x227

ctime = Tue Sep 27 04:01:49 CST 2016

mZxid = 0x228

mtime = Tue Sep 27 04:07:04 CST 2016

pZxid = 0x227

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 28

numChildren = 0

[zk: 192.168.2.129:2181(CONNECTED) 12]

 

(5)delete——删除命名空间中有个别节点

 

[zk: 192.168.2.129:2181(CONNECTED) 13] delete /nodes1

[zk: 192.168.2.129:2181(CONNECTED) 14] get /nodes1

Node does not exist: /nodes1

[zk: 192.168.2.129:2181(CONNECTED) 15]

 

删去节点音信还是能够用rmr命令。好了,常用命令介绍完了,其余命令能够经过help命令来查阅。下边我们来上学ZooKeeper
Java客户端的行使。

dataDir=/usr/zookeeper-3.4.10/data

ZooKeeper客户端开发

clientPort=2181

依赖jar

 

initLimit=10

测试代码

public class ZKTest {

 private ZooKeeper zk = null;

 @Before
 public void init() throws Exception {
  zk = new ZooKeeper("192.168.2.129:2181", 2000, new Watcher() {
   /**
    * 监听事件发生时的回调方法
    */
   @Override
   public void process(WatchedEvent event) {
    if (event.getType() == EventType.None) {
     System.out.println("Event:null");
     return;
    }
    System.out.println("EventType:" + event.getType());
    System.out.println("Path" + event.getPath());

    try {
     zk.getData("/nodes1", true, null);
     zk.getChildren("/nodes1", true);

    } catch (KeeperException | InterruptedException e) {

     e.printStackTrace();
    }
   }
  });
 }

 /**
  * 向zookeeper服务(集群)中注册数据,添加znode
  * @throws Exception
  */

 @Test
 public void testCreateZnode() throws Exception {
  zk.create("/nodes1", "nodes1".getBytes("utf-8"), 
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

  // 在一个父节点的范围之内,sequential的顺序是递增的
  zk.create("/nodes1/testNode1", "/nodes1/testNode1".getBytes("utf-8"), 
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
  zk.create("/nodes1/testNode2", "/nodes1/testNode2".getBytes("utf-8"), 
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);

  // 换一个父节点,序号的递增顺序重新开始
  zk.create("/nodes2", "nodes2".getBytes("utf-8"), 
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  zk.create("/nodes2/testNode1", "/nodes2/testNode1".getBytes("utf-8"),
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);

  zk.create("/nodes3", "/nodes3".getBytes("utf-8"), 
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

  zk.close();
 }

 /**
  * 从zookeeper中删除znode
  * @throws Exception
  */
 @Test
 public void testDeleteZnode() throws Exception {

  // 参数1:要删除的节点的路径 参数2:要删除的节点的版本,-1匹配所有版本
  // 只能删除不为空的节点
  zk.delete("/nodes3", -1);
  Stat exists = zk.exists("/nodes3", false);
  System.out.println(exists);

 }

 @Test
 public void testUpdateZnode() throws Exception {
  byte[] data = zk.getData("/nodes1", false, null);
  System.out.println(new String(data, "utf-8"));

  zk.setData("/nodes1", "/nodes1 data changed".getBytes("utf-8"), -1);

  data = zk.getData("/nodes1", false, null);
  System.out.println(new String(data, "utf-8"));

 }

 /**
  * 获取子节点信息
  * @throws Exception
  */
 @Test
 public void testGetChildren() throws Exception {
  List<String> children = zk.getChildren("/nodes1", false);
  for (String child : children) {
   System.out.println(child);
  }
 }

 /**
  * zk的监听机制:
  * 在初始化zk对象的时候定义好回调函数,对znode进行操作时可以注册监听
  * 监听的znode上发生相应事件时,客户端zk会接收到zookeeper的事件通知
  * 客户端zk根据事件调用我们事先定义好的回调函数
  * @throws Exception
  * 
  */
 @Test
 public void testWatch() throws Exception {
  //获取/nodes1的数据时进行监听
         //第二个参数true表示监听
  byte[] data = zk.getData("/nodes1", true, null);

  //获取/nodes1的子节点时进行监听
  List<String> children = zk.getChildren("/nodes1", true);
  Thread.sleep(Long.MAX_VALUE);
 }


 /**
  * 将配置文件上传到zookeeper中进行管理
  * @throws Exception
  */
 @Test
 public void testUploadConfigFileToZookeeper() throws Exception{
  String schema_xml = FileUtils.readFileToString(new File("c:/web.xml"));
  zk.create("/conf", null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  zk.create("/conf/web.xml", schema_xml.getBytes(), 
    Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  zk.close();
 }
}

 

亟待注意的是,创制非叶子节点时,zk会自行抬高序号,所以在操作非叶子节点时,不能够像添加的时候同样以原路径操作,要丰裕序号,如:

 

[zk: localhost:2181(CONNECTED) 50] ls /    

[dubbo, nodes2, conf, nodes1, zookeeper]

[zk: localhost:2181(CONNECTED) 51] ls /nodes1

[testNode20000000001, testNode10000000000]

[zk: localhost:2181(CONNECTED) 52] ls /nodes2

[testNode10000000000]

[zk: localhost:2181(CONNECTED) 53] get /nodes1/testNode1

Node does not exist: /nodes1/testNode1

[zk: localhost:2181(CONNECTED) 54] get /nodes1/testNode10000000000

/nodes1/testNode1

cZxid = 0x26a

…….

[zk: localhost:2181(CONNECTED) 55] delete /nodes1/testNode1      

Node does not exist: /nodes1/testNode1

[zk: localhost:2181(CONNECTED) 56]

 

syncLimit=5

Zookeeper高可用集群搭建与测试

tickTime=2000

服务器集群新闻

Zookeeper
集群的布署目的是高质量、高可用性、严刻有序访问的,当中只要有多数的节点是健康的动静下,那么整个集群对外便是可用的。就是基于这一个天性,要将
ZK 集群的节点数量要为奇数(二n+壹:如 3、伍、7 个节点)较为合适。

 

服务器 1:192.168.2.127  端口:2181、2881、3881

服务器 2:192.168.2.128  端口:2182、2882、3882

服务器 3:192.168.2.130  端口:2183、2883、3883

 

端口表明:

 

21八x:客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper
会监听那一个端

28捌x:该服务器与集群中的 Leader 服务器交流音讯的端口

388x:大选通讯端口,假如集群中的 Leader 服务器挂了,要求选出一个新的
Leader,而这么些端口就是用来施行大选时服务器相互通讯的端口

 

server.一=master:288八:388八   (ZooKeeper会遵执照主人机名找到IP)

安装多回答操作

在操作此前,先把Xshell或然SecureC奥迪Q7T设置成多会话操作,即同时决定多个会话窗口,很方便,打开1二柒,12八,130会话窗口。

 

Xshell:查看-》撰写栏,Xshell的上边就会出现二个编辑框,正是撰写栏,点击左下角撰写栏上的紫水晶色图标,然后选拔【全体会话】。

 

SecureCSportageT:右击任何3个对话窗口上面包车型大巴竞相窗口,选中“发送交互到具有标签”。

 

上面有个别操纵就足以在撰写栏上还要控制3台服务器了。

 

server.2=slave1:2888:3888

下载或上传文件

将zookeeper-3.四.九.tar.gz下载或许上传来3台服务器中的/usr/ftpuser目录

server.3=slave2:2888:3888

解压

mkdir /usr/local/zookeeper

tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local/zookeeper

cd /usr/local/zookeeper

 

 

按节点号对 zookeeper 目录重命名

#127

[[email protected]
zookeeper]# mv zookeeper-3.4.9/ node-127

#128

[[email protected]
zookeeper]# mv zookeeper-3.4.9/ node-128

#130

[[email protected]
zookeeper]# mv zookeeper-3.4.9/ node-130

 

四.在防火墙中加进端口项vi /etc/sysconfig/iptables

始建数量日志目录

在各 zookeeper 节点目录/usr/local/zookeeper/node-*下创建data和logs目录

 

cd node-*

mkdir data

mkdir logs

 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 2888 -j ACCEPT

拷贝修改配置文件

将 zookeeper/node-*/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名称为zoo.cfg

 

cd conf

cp zoo_sample.cfg zoo.cfg

 

#127

[[email protected]
conf]# vi zoo.cfg

#dataDir=/tmp/zookeeper

dataDir=/usr/local/zookeeper/node-127/data

dataLogDir=/usr/local/zookeeper/node-127/logs

# the port at which the clients will connect

clientPort=2181

server.1=192.168.2.127:2881:3881

server.2=192.168.2.128:2882:3882

server.3=192.168.2.130:2883:3883

 

 

#128

[[email protected]
conf]# vi zoo.cfg

#dataDir=/tmp/zookeeper

dataDir=/usr/local/zookeeper/node-128/data

dataLogDir=/usr/local/zookeeper/node-128/logs

# the port at which the clients will connect

clientPort=2182

server.1=192.168.2.127:2881:3881

server.2=192.168.2.128:2882:3882

server.3=192.168.2.130:2883:3883

 

#130

[[email protected]
conf]# vi zoo.cfg

#dataDir=/tmp/zookeeper

dataDir=/usr/local/zookeeper/node-130/data

dataLogDir=/usr/local/zookeeper/node-130/logs

# the port at which the clients will connect

clientPort=2183

server.1=192.168.2.127:2881:3881

server.2=192.168.2.128:2882:3882

server.3=192.168.2.130:2883:3883

 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3888 -j ACCEPT

创建 myid 文件

进入/usr/local/zookeeper/node-*/data,编辑 myid 文件,并在对应的 IP
的机械上输入相应的数码。如在 node-12八 上,myid 文件内容便是一,node-128上就是 贰,node-130 上正是 ③。

 

#127

[[email protected]
data]# vi /usr/local/zookeeper/node-127/data/myid ## 值为 1

#128

[[email protected]
data]# vi /usr/local/zookeeper/node-128/data/myid ## 值为 2

#130

[[email protected]
data]# vi /usr/local/zookeeper/node-130/data/myid ## 值为 3

 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 2181 -j ACCEPT

打开端口

 

在防火墙中开拓要用到的端口 21八x、28八x、38八x。打开vi
/etc/sysconfig/iptables扩展以下 三 行

 

#127

-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

 

#128

-A INPUT -m state –state NEW -m tcp -p tcp –dport 2182 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 2882 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3882 -j ACCEPT

 

#130

-A INPUT -m state –state NEW -m tcp -p tcp –dport 2183 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 2883 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3883 -j ACCEPT

 

重启防火墙

 

service iptables restart

 

重启iptables服务 /bin/systemctl restart iptables.service 或者service
iptables restart

启动zookeeper集群

cd node*/bin

./zkServer.sh start

 

 

查阅zookeeper集群状态

./zkServer.sh status

 

看得出,五个节点中,有一个为Mode: leader,别的多少个为Mode: follower

展示状态报错参考:

 

5.执行命令: bin/zkServer.sh start conf/zoo.cfg,分别运行ZooKeeper

dubbo管理控制台链接集群

亟待先安装dubbo管控台,我们就用事先已经安装好的dubbo的管理控制台(1九2.16八.2.12玖),上边大家修改下布置文件

 

[[email protected]
~]#

vi /usr/local/apache-tomcat-7.0.70/webapps/ROOT/WEB-INF/dubbo.properties

 

dubbo.registry.address=zookeeper://192.168.2.127:2181?backup=192.168.2.128:2182,192.168.2.130:2183

dubbo.admin.root.password=dubbo129

dubbo.admin.guest.password=dubbo129

 

接下来:tail -300f zookeeper.out
查看输出的始末,若是没报错,表明运维成功;

启动dubbo管控台

[[email protected]
~]# cd /usr/local/apache-tomcat-7.0.70/bin/

[[email protected]
bin]# ./startup.sh

 

再接下去翻看集群是搭建成功:

采纳连zookeeper集群以及高可用测试

 

在《基于dubbo创设分布式项目与劳务模块》一文中,大家创设了劳动消费者与劳动提供者,未来大家将服务提供者注册到zookeeper集群。

修改mcweb\mcweb-logic\src\main\resources\spring\dubbo-provider.xml

 

<!– zookeeper注册大旨地址 –>

<dubbo:registry protocol=”zookeeper”

address=”192.168.2.127:2181,192.168.2.128:2182,192.168.2.130:2183″ />

 

开发银行mcweb-logic。在dubbo的“首页 > 服务治理 >
服务”中能够见到曾经注册到 zookeeper
注册中央的服务的连锁事态。看看mcweb-logic的日记:

 

 美高梅手机版4858 1

 

 

可知,应用已经一而再到了zookeeper集群中的12八节点。以后大家把12八的zookeeper甘休,看看mcweb-logic的日志变化:

 

美高梅手机版4858 2 

 

可见,zookeeper集群的场所产生了变动,当12捌节点甘休后,应用重新连接到了zookeeper集群中的1二柒节点。未来集群中还有三个节点可用,集群还可以够对外可用,当再把1二七节点甘休后,集群对外就不可用:

 

美高梅手机版4858 3 

 

假设有过半的节点是平常的情事下,那么一切zookeeper集群对外正是可用的,那是zookeeper集群高可用的底子。

本文主要学习
ZooKeeper的系统布局、节点类型、节点监听、常用命令等…

施行:bin/zkCli.sh -server master:21捌1 (master和slave一,随便选用多个)

进入到ZooKeeper的客户端命令行上面,执行  ls  /,会输出
[zookeeper],那时候创造一个节点 create  /test,然后再查看 get
/test,打字与印刷一下音讯

testValue

cZxid = 0x200000005

ctime = Fri Mar 10 15:07:23 PST 2017

mZxid = 0x200000005

美高梅手机版4858 ,mtime = Fri Mar 10 15:07:23 PST 2017

pZxid = 0x200000005

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 9

numChildren = 0

 

再切换来别的一个IP,在履行实施:bin/zkCli.sh -server master:218壹 ,再 
ls  / 查看,就足以看出刚刚在别的一台机器上创造的节点test。

翻开zookeeper进度状态

  bin/zkServer.sh  status

     Using config: /opt/soft/zookeeper-3.4.8/bin/../conf/zoo.cfg

     Mode: follower   //角色

  jps

     3220 Jps

     2813 QuorumPeerMain   //zookeeper进程名

上述都因而,说明ZooKeeper集群搭建成功!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有