文档库 最新最全的文档下载
当前位置:文档库 › ZooKeeper入门简介及配置使用

ZooKeeper入门简介及配置使用

ZooKeeper入门简介及配置使用
ZooKeeper入门简介及配置使用

ZooKeeper系列之?一:ZooKeeper简介

ZooKeeper 是?一个为分布式应?用所设计的分布的、开源的协调服务。分布式的应?用可以建?立在同步、配置管理、分组和命名等服务的更?高级别的实现的基础之上。ZooKeeper 意欲设计?一个易于编程的环境,它的?文件系统使?用我们所熟悉的?目录树结构。ZooKeeper 使?用 Java 所编写,但是?支持 Java 和 C 两种编程语?言。

众所周知,协调服务?非常容易出错,但是却很难恢复正常,例如,协调服务很容易处于竞态以?至于出现死锁。我们设计 ZooKeeper 的?目的是为了减轻分布式应?用程序所承担的协调任务。

ZooKeeper系列之?二:ZooKeeper数据模型、命名空间以及节点的概念

ZooKeeper数据模型和层次命名空间

提供的命名空间与标准的?文件系统?非常相似。?一个名称是由通过斜线分隔开的路径名序列所组成的。ZooKeeper中的每?一个节点是都通过路径来识别。

下图是Zookeeper中节点的数据模型,这种树形结构的命名空间操作?方便且易于理解。

图:ZooKeeper层次命名空间

ZooKeeper中节点和临时节点

ZooKeeper的节点是通过像树?一样的结构来进?行维护的,并且每?一个节点通过路径来标?示以及访问。除此之外,每?一个节点还拥有?自?身的?一些信息,包括:数据、数据长度、创建时间、修改时间等等。从这样?一类既含有数据,又作为路径表标?示的节点的特点中,可以看出,ZooKeeper的节点既可以被看做是?一个?文件,又可以被看做是?一个?目录,它同时具有?二者的特点。为了便于表达,今后我们将使?用Znode来表?示所讨论的ZooKeeper节点。

具体地说,Znode维护着数据、ACL(access control list,访问控制列表)、时间戳等交换版本号等数据结构,它通过对这些数据的管理来让缓存?生效并且令协调更新。每当Znode中的数据更新后它所维护的版本号将增加,这?非常类似于数据库中计数器时间戳的操作?方式。

另外Znode还具有原?子性操作的特点:命名空间中,每?一个Znode的数据将被原?子地读写。读操作将读取与Znode相关的所有数据,写操作将替换掉所有的数据。除此之外,每?一个节点都有?一个访问控制列表,这个访问控制列表规定了?用户操作的权限。ZooKeeper中同样存在临时节点。这些节点与session同时存在,当session?生命周期结束,这些临时节点也将被删除。临时节点在某些场合也发挥着?非常重要的作?用。ZooKeeper系列之三:ZooKeeper的安装 

ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。ZooKeeper 单机模式的安装相对?比较简单,如果第?一次接触ZooKeeper的话,建议安装ZooKeeper单机模式或者集群伪分布模式。

1)单机模式

?首先,从Apache官?方?网站下载?一个ZooKeeper 的最近稳定版本。

https://www.wendangku.net/doc/a23763968.html,/zookeeper/releases.html

ZooKeeper 要求 JA V A 的环境才能运?行,并且需要 JA V A6 以上的版本,可以从 SUN 官?网上下载,并对 JA V A 环境变量进?行设置。除此之外,为了今后操作的?方便,我们需要对 ZooKeeper 的环境变量进?行配置,?方法如下,在 /etc/profile ?文件中加?入如下的内容:#Set ZooKeeper Enviroment

export ZOOKEEPER_HOME=/root/hadoop-0.20.2/zookeeper-3.3.1

export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf ZooKeeper 服务器包含在单个 JAR ?文件中,安装此服务需要?用户创建?一个配置?文档,并对其进?行设置。我们在 ZooKeeper-*.*.* ?目录(我们以当前 ZooKeeper 的最新版3.3.1 为例,故此下?面的“ ZooKeeper-*.*.* ”都将写为“ ZooKeeper-3.3.1” )的 conf ?文件夹下创建?一个 zoo.cfg ?文件,它包含如下的内容:

tickTime=2000

dataDir=/var/zookeeper

clientPort=2181

在这个?文件中,我们需要指定 dataDir 的值,它指向了?一个?目录,这个?目录在开始的时候需要为空。下?面是每个参数的含义:

tickTime :基本事件单元,以毫秒为单位。它?用来指?示?心跳,最?小的 session 过期时间为两倍的 tickTime。

dataDir :存储内存中数据库快照的位置,如果不设置参数,更新事务?日志将被存储到默认位置。

clientPort :监听客户端连接的端??口

使?用单机模式时?用户需要注意:这种配置?方式下没有 ZooKeeper 副本,所以如果ZooKeeper 服务器出现故障, ZooKeeper 服务将会停?止。

以下代码清单 A 是我们的根据?自?身情况所设置的 zookeeper 配置?文档: zoo.cfg

代码清单 A : zoo.cfg

# The number of milliseconds of each tick

tickTime=2000

# the directory where the snapshot is stored.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/snapshot/data

# the port at which the clients will connect

clientPort=2181

2)集群模式

为了获得可靠的 ZooKeeper 服务,?用户应该在?一个集群上部署 ZooKeeper 。只要集群上?大多数的 ZooKeeper 服务启动了,那么总的 ZooKeeper 服务将是可?用的。另外,最好使?用奇数台机器。如果 zookeeper 拥有 5 台机器,那么它就能处理 2 台机器的故障了。

之后的操作和单机模式的安装类似,我们同样需要对 JA V A 环境进?行设置,下载最新的 ZooKeeper 稳定版本并配置相应的环境变量。不同之处在于每台机器上 conf/zoo.cfg 配置?文件的参数设置,参考下?面的配置:

tickTime=2000

dataDir=/var/zookeeper/

clientPort=2181

initLimit=5

syncLimit=2

server.1=zoo1:2888:3888

server.2=zoo2:2888:3888

server.3=zoo3:2888:3888

“ server.id=host:port:port. ”指?示了不同的 ZooKeeper 服务器的?自?身标识,作为集群的?一部分的机器应该知道 ensemble 中的其它机器。?用户可以从“ server.id=host:port:port. ”中读取相关的信息。在服务器的 data ( dataDir 参数所指定的?目录)?目录下创建?一个?文件名为 myid 的?文件,这个?文件中仅含有?一?行的内容,指定的是?自?身的 id 值。?比如,服务器“ 1 ”应该在 myid ?文件中写?入“ 1 ”。这个 id 值必须是 ensemble 中唯?一的,且?大?小在 1 到 255 之间。这?一?行配置中,第?一个端??口( port )是从( follower )机器连接到主( leader )机器的端??口,第?二个端??口是?用来进?行 leader 选举的端??口。在这个例?子中,每台机器使?用三个端??口,分别是: clientPort , 2181 ; port , 2888 ; port , 3888 。

我们在拥有三台机器的 Hadoop 集群上测试使?用 ZooKeeper 服务,下?面代码清单 B 是我们根据?自?身情况所设置的 ZooKeeper 配置?文档:

代码清单 B : 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.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/snapshot/d1

# the port at which the clients will connect

clientPort=2181

server.1=IP1:2887:3887

server.2=IP2:2888:3888

server.3=IP3:2889:3889

清单中的 IP 分别对应的配置分布式 ZooKeeper 的 IP 地址。当然,也可以通过机器名访问zookeeper ,但是需要在 ubuntu 的 hosts 环境中进?行设置。读者可以查阅 Ubuntu 以及Linux 的相关资料进?行设置。

3)集群伪分布

简单来说,集群伪分布模式就是在单机下模拟集群的ZooKeeper服务。

那么,如何对配置 ZooKeeper 的集群伪分布模式呢?其实很简单,在 zookeeper 配置?文档中, clientPort 参数?用来设置客户端连接 zookeeper 的端??口。 server.1=IP1:2887:3887 中, IP1 指?示的是组成 ZooKeeper 服务的机器 IP 地址, 2887 为?用来进?行 leader 选举的端??口, 3887 为组成 ZooKeeper 服务的机器之间通信的端??口。集群伪分布模式我们使?用每个配置?文档模拟?一台机器,也就是说,需要在单台机器上运?行多个 zookeeper 实例。但是,我们必须要保证各个配置?文档的 clientPort 不能冲突。

下?面是我们所配置的集群伪分布模式,通过 zoo1.cfg , zoo2.cfg , zoo3.cfg 模拟了三台机器的 ZooKeeper 集群。详见代码清单 C :

代码清单C :

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

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/d_1

# the port at which the clients will connect

clientPort=2181

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

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

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/d_2

# the port at which the clients will connect

clientPort=2182

#the location of the log file

dataLogDir=/root/hadoop-0.20.2/zookeeper-3.3.1/logs

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

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

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/d_2

# the port at which the clients will connect

clientPort=2183

#the location of the log file

dataLogDir=/root/hadoop-0.20.2/zookeeper-3.3.1/logs

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

从上述三个代码清单中可以看到,除了 clientPort 不同之外, dataDir 也不同。另外,不要忘记在 dataDir 所对应的?目录中创建 myid ?文件来指定对应的 zookeeper 服务器实例。

这?里ZooKeeper的安装已经说完了,下?一节我们来谈?一谈对ZooKeeper的参数配置的理解。

ZooKeeper系列之四:ZooKeeper的配置 

ZooKeeper 的功能特性通过 ZooKeeper 配置?文件来进?行控制管理( zoo.cfg 配置?文件)。 ZooKeeper 这样的设计其实是有它?自?身的原因的。通过前?面对 ZooKeeper 的配置可以看出,对 ZooKeeper 集群进?行配置的时候,它的配置?文档是完全相同的(对于集群伪分布模式来说,只有很少的部分是不同的)。这样的配置?方使得在部署 ZooKeeper 服务的时候?非常地?方便。另外,如果服务器使?用不同的配置?文件,必须要确保不同配置?文件中的服务器列表相匹配。

在设置 ZooKeeper 配置?文档的时候,某些参数是可选的,但是某些参数是必须的。这些必须的参数就构成了 ZooKeeper 配置?文档的最低配置要求。

下?面是在最低配置要求中必须配置的参数:

1 )最低配置

clientPort

监听客户端连接的端??口;

dataDir

存储内存中数据库快照的位置;

注意应该谨慎地选择?日志存放的位置,使?用专?用的?日志存储设备能够?大?大地提?高系统的性能,如果将?日志存储在?比较繁忙的存储设备上,那么将会在很?大程度上影响系统的性能。

tickTime

基本事件单元,以毫秒为单位。它?用来控制?心跳和超时,默认情况下最?小的会话超时时间为两倍的 tickTime 。

2 )?高级配置

下?面是?高级配置要求中可选的配置参数,?用户可以使?用下?面的参数来更好地规定ZooKeeper 的?行为:

dataLogDir

这个操作将管理机器把事务?日志写?入到“ dataLogDir ”所指定的?目录,?而不是“ dataDir ”所指定的?目录。这将允许使?用?一个专?用的?日志设备并且帮助我们避免?日志和快照之间的竞争。配置如下:

#the location of the log file

dataLogDir=/root/hadoop-0.20.2/zookeeper-3.3.1/log/data_log maxClientCnxns

这个操作将限制连接到 ZooKeeper 的客户端的数量,限制并发连接的数量,它通过IP 来区分不同的客户端。此配置选项可以?用来阻?止某些类别的 Dos 攻击。将它设置为 0 或者忽略?而不进?行设置将会取消对并发连接的限制。

例如,此时我们将 maxClientCnxns 的值设置为 1 ,如下所?示:

#set maxClientCnxns

maxClientCnxns=1

启动 ZooKeeper 之后,?首先?用?一个客户端连接到 ZooKeeper 服务器之上。然后,当第?二个客户端尝试对 ZooKeeper 进?行连接,或者某些隐式的对客户端的连接操作,将会触发 ZooKeeper 的上述配置。系统会提?示相关信息,如下图 1 所?示:

图 1 : ZooKeeper maxClientCnxns 异常

minSessionTimeout 和 maxSessionTimeout

最?小的会话超时时间以及最?大的会话超时时间。其中,最?小的会话超时时间默认情况下为 2 倍的 tickTme 时间,最?大的会话超时时间默认情况下为 20 倍的会话超时时间。在启动时,系统会显?示相应信息,见下图 2 所?示,默认会话超时时间:

图2 :默认会话超时时间

从上图中可以看书, minSessionTimeout 以及 maxSessionTimeout 的值均为 -1 ,现在我们来设置系统的最?小会话超时时间以及最?大会话超时时间,如下所?示:

#set minSessionTimeout

minSessionTimeout=1000

#set maxSessionTImeout

maxSessionTimeout=10000

在配置 minSessionTmeout 以及 maxSessionTimeout 的值的时候需要注意,如果将此值设置的太?小的话,那么会话很可能刚刚建?立便由于超时?而不得不退出。?一般情况下,不能将此值设置的?比 tickTime 的值还?小。

3 )集群配置

initLimit

此配置表?示,允许 follower (相对于 leader ?而?言的“客户端”)连接并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表?示。当超过设置倍数的 tickTime 时间,则连接失败。

syncLimit

此配置表?示, leader 与 follower 之间发送消息,请求和应答时间长度。如果 follower 在设置的时间内不能与 leader 进?行通信,那么此 follower 将被丢弃。ZooKeeper系列之五:ZooKeeper的运行 

我们这?里所介绍的是对应ZooKeeper系列之三:ZooKeeper的安装模式的运?行。

1)单机模式

?用户可以通过下?面的命令来启动 ZooKeeper 服务:

zkServer.sh start

这个命令默认情况下执?行 ZooKeeper 的 conf ?文件夹下的 zoo.cfg 配置?文件。当运?行成功?用户会看到类似如下的提?示界?面:

root@ubuntu:~# zkServer.sh start

JMX enabled by default

Using config: /root/hadoop-0.20.2/zookeeper-3.3.1/bin/../conf/zoo.cfg

Starting zookeeper ...

STARTED

... ...

2011-01-19 10:04:42,300 - WARN [main:QuorumPeerMain@105] - Either no config or no quorum defined in config, running in standalone mode

... …

2011-01-19 10:04:42,419 - INFO [main:ZooKeeperServer@660] - tickTime set to 2000

2011-01-19 10:04:42,419 - INFO [main:ZooKeeperServer@669] - minSessionTimeout set to -1 2011-01-19 10:04:42,419 - INFO [main:ZooKeeperServer@678] - maxSessionTimeout set to -1 2011-01-19 10:04:42,560 - INFO [main:NIOServerCnxn$Factory@143] - binding to port

0.0.0.0/0.0.0.0:2181

2011-01-19 10:04:42,806 - INFO [main:FileSnap@82] - Reading snapshot /root/hadoop-0.20.2/ zookeeper-3.3.1/data/version-2/snapshot.200000036

2011-01-19 10:04:42,927 - INFO [main:FileSnap@82] - Reading snapshot /root/hadoop-0.20.2/ zookeeper-3.3.1/data/version-2/snapshot.200000036

2011-01-19 10:04:42,950 - INFO [main:FileTxnSnapLog@208] - Snapshotting: 400000058

从上?面可以看出,运?行成功后,系统会列出 ZooKeeper 运?行的相关环境配置信息。

2)集群模式

集群模式下需要?用户在每台 ZooKeeper 机器上运?行第?一部分的命令,这?里不再赘述。

3)集群伪分布模式

在集群伪分布模式下,我们只有?一台机器,但是要运?行三个 ZooKeeper 服务实例。此时,如果再使?用上述命令式肯定?行不通的。这?里,我们通过下?面三条命能够令来运?行ZooKeeper系列之三:ZooKeeper的安装中我们配置的 ZooKeeper 服务。如下所?示:zkServer.sh start zoo1.cfg

zkServer.sh start zoo2.cfg

zkServer.sh start zoo3.cfg

在运?行完第?一条命令之后,读者将会发现?一些系统错误提?示,如下图 1 所?示:

图 1 :集群伪分布异常提?示

产?生如上图所?示的异常信息是由于 ZooKeeper 服务的每个实例都拥有全局的配置信息,它们在启动的时候需要随时地进?行 Leader 选举操作(此部分内容下?面将会详细讲述)。此时第?一个启动的 Zookeeper 需要和另外两个 ZooKeeper 实例进?行通信。但是,另外两个 ZooKeeper 实例还没有启动起来,因此将会产?生上述所?示的异常信息。

我们直接将其忽略即可,因为当把图?示中的“ 2 号”和“ 3 号” ZooKeeper 实例启动起来之后,相应的异常信息就回?自然?而然地消失。

ZooKeeper系列之六:ZooKeeper四字命令 

ZooKeeper ?支持某些特定的四字命令字母与其的交互。它们?大多是查询命令,?用来获取 ZooKeeper 服务的当前状态及相关信息。?用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。 ZooKeeper 常?用四字命令见下表 1 所?示:

表 1 : ZooKeeper 四字命令

下图 1 是 ZooKeeper 四字命令的简单?用例:

ZooKeeper 四字命令功能描述

conf 输出相关服务配置的详细信息。cons

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

dump 列出未经处理的会话和临时节点。envi 输出关于服务环境的详细信息(区别于 conf 命令)。

reqs 列出未经处理的请求

ruok

测试服务是否处于正确状态。如果确实如此,那么服务返回“ imok ”,否则不做任何相应。

stat 输出关于性能和连接的客户端的列表。wchs 列出服务器 watch 的详细信息。wchc

通过 session 列出服务器 watch 的详细信息,它的输出是?一个与 watch 相关的会话的列表。

wchp

通过路径列出服务器 watch 的详细信息。它输出?一个与 session 相关的路径。

图 1 : ZooKeeper 四字命令?用例ZooKeeper系列之七:ZooKeeper命令行工具 

当启动 ZooKeeper 服务成功之后,输?入下述命令,连接到 ZooKeeper 服务:zkCli.sh –server 10.77.20.23:2181

连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息,并在屏幕输出“ Welcome to ZooKeeper ”等信息。

输?入 help 之后,屏幕会输出可?用的 ZooKeeper 命令,如下图 1 所?示:

图 1 : ZooKeeper 命令

ZooKeeper系列之八:ZooKeeper的简单操作 

1 )使?用 ls 命令来查看当前 ZooKeeper 中所包含的内容:

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

[zookeeper]

2 )创建?一个新的 znode ,使?用 create /zk myData 。这个命令创建了?一个新的 znode

节点“ zk ”以及与它关联的字符串:

[zk: 10.77.20.23:2181(CONNECTED) 2] create /zk myData

Created /zk

3 )再次使?用 ls 命令来查看现在 zookeeper 中所包含的内容:

[zk: 10.77.20.23:2181(CONNECTED) 3] ls /

[zk, zookeeper]

此时看到, zk 节点已经被创建。

4 )下?面我们运?行 get 命令来确认第?二步中所创建的 znode 是否包含我们所创建的字符串:

[zk: 10.77.20.23:2181(CONNECTED) 4] get /zk

myData

Zxid = 0x40000000c

time = Tue Jan 18 18:48:39 CST 2011

Zxid = 0x40000000c

mtime = Tue Jan 18 18:48:39 CST 2011

pZxid = 0x40000000c

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 6

numChildren = 0

5 )下?面我们通过 set 命令来对 zk 所关联的字符串进?行设置:

[zk: 10.77.20.23:2181(CONNECTED) 5] set /zk shenlan211314

cZxid = 0x40000000c

ctime = Tue Jan 18 18:48:39 CST 2011

mZxid = 0x40000000d

mtime = Tue Jan 18 18:52:11 CST 2011

pZxid = 0x40000000c

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 13

numChildren = 0

6 )下?面我们将刚才创建的 znode 删除:

[zk: 10.77.20.23:2181(CONNECTED) 6] delete /zk

7 )最后再次使?用 ls 命令查看 ZooKeeper 所包含的内容:

[zk: 10.77.20.23:2181(CONNECTED) 7] ls /

[zookeeper]

经过验证, zk 节点已经被删除。

ZooKeeper系列之九:ZooKeeper  A PI简介及编程 

1) ZooKeeper API 简介

ZooKeeper API 共包含 5 个包,分别为:

org.apache.zookeeper , org.apache.zookeeper.data , org.apache.zookeeper.server

org.apache.zookeeper.server.quorum 和 org.apache.zookeeper.server.upgrade 。

其中 org.apache.zookeeper 包含 ZooKeeper 类,它我们编程时最常?用的类?文件。

这个类是 ZooKeeper 客户端库的主要类?文件。如果要使?用 ZooKeeper 服务,应?用程序?首先必须创建?一个 Zookeeper 实例,这时就需要使?用此类。?一旦客户端和 ZooKeeper 服务建?立起连接, ZooKeeper 系统将会分配给此连接回话?一个 ID 值,并且客户端将会周期地向服务器发送?心跳来维持会话的连接。只要连接有效,客户端就可以调?用 ZooKeeper API 来做相应的处理。

它提供了表 1 所?示?几类主要?方法:

功能描述

create在本地?目录树中创建?一个节点

delete删除?一个节点

exists测试本地是否存在?目标节点

get/set data从?目标节点上读取 / 写数据

get/set ACL获取 / 设置?目标节点访问控制列表信息get children检索?一个?子节点上的列表

sync等待要被传送的数据

2) ZooKeeper API 的使?用

这?里,笔者通过?一个例?子来简单介绍,如何使?用 ZooKeeper API 编写?自?己的应?用程序,见代码清单 1 :

代码清单 1 : ZooKeeper API 的使?用

import java.io.IOException;

import org.apache.zookeeper.CreateMode;

import org.apache.zookeeper.KeeperException;

import org.apache.zookeeper.Watcher;

import org.apache.zookeeper.ZooDefs.Ids;

import org.apache.zookeeper.ZooKeeper;

public class demo {

// 会话超时时间,设置为与系统默认时间?一致

private static final int SESSION_TIMEOUT=30000;

// 创建 ZooKeeper 实例

ZooKeeper zk;

// 创建 Watcher 实例

Watcher wh=new Watcher(){

public void process(org.apache.zookeeper.WatchedEvent event)

{

System.out.println(event.toString());

}

};

// 初始化 ZooKeeper 实例

private void createZKInstance() throws IOException

{

zk=new ZooKeeper("localhost:2181",demo.SESSION_TIMEOUT,this.wh);

}

private void ZKOperations() throws

IOException,InterruptedException,KeeperException

{

System.out.println("/n1. 创建 ZooKeeper 节点 (znode : zoo2, 数据: myData2 ,权限: OPEN_ACL_UNSAFE ,节点类型: Persistent");

zk.create("/zoo2","myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

System.out.println("/n2. 查看是否创建成功: ");

System.out.println(new String(zk.getData("/zoo2",false,null)));

System.out.println("/n3. 修改节点数据 ");

zk.setData("/zoo2", "shenlan211314".getBytes(), -1);

System.out.println("/n4. 查看是否修改成功: ");

System.out.println(new String(zk.getData("/zoo2", false, null)));

System.out.println("/n5. 删除节点 ");

zk.delete("/zoo2", -1);

System.out.println("/n6. 查看节点是否被删除: ");

System.out.println(" 节点状态: ["+zk.exists("/zoo2", false)+"]");

}

private void ZKClose() throws InterruptedException

{

zk.close();

}

public static void main(String[] args) throws

IOException,InterruptedException,KeeperException {

demo dm=new demo();

dm.createZKInstance( );

dm.ZKOperations();

dm.ZKClose();

}

此类包含两个主要的 ZooKeeper 函数,分别为 createZKInstance ()和 ZKOperations ()。其中 createZKInstance ()函数负责对 ZooKeeper 实例 zk 进?行初始化。 ZooKeeper 类有两个构造函数,我们这?里使?用“ ZooKeeper ( String connectString, , int sessionTimeout, , Watcher watcher )”对其进?行初始化。因此,我们需要提供初始化所需的,连接字符串信息,会话超时时间,以及?一个 watcher 实例。 17 ?行到 23 ?行代码,是程序所构造的?一个 watcher 实例,它能够输出所发?生的事件。

ZKOperations ()函数是我们所定义的对节点的?一系列操作。它包括:创建ZooKeeper 节点( 33 ?行到 34 ?行代码)、查看节点( 36 ?行到 37 ?行代码)、修改节点数据( 39 ?行到 40 ?行代码)、查看修改后节点数据( 42 ?行到 43 ?行代码)、删除节点( 45 ?行到 46 ?行代码)、查看节点是否存在( 48 ?行到 49 ?行代码)。另外,需要注意的是:在创建节点的时候,需要提供节点的名称、数据、权限以及节点类型。此外,使?用 exists 函数时,如果节点不存在将返回?一个 null 值。关于 ZooKeeper API 的更多详细信息,读者可以查看 ZooKeeper 的 API ?文档,如下所?示:

https://www.wendangku.net/doc/a23763968.html,/zookeeper/docs/r3.3.1/api/index.html ZooKeeper系列之十:ZooKeeper的一致性保证及Leader选举 

1)?一致性保证

Zookeeper 是?一种?高性能、可扩展的服务。 Zookeeper 的读写速度?非常快,并且读的速度要?比写的速度更快。另外,在进?行读操作的时候, ZooKeeper 依然能够为旧的数据提供服务。这些都是由于 ZooKeepe 所提供的?一致性保证,它具有如下特点:

顺序?一致性

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

原?子性

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

单系统镜像

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

可靠性

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

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

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

实时性

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

给予这些?一致性保证, ZooKeeper 更?高级功能的设计与实现将会变得?非常容易,例如: leader 选举、队列以及可撤销锁等机制的实现。

2)Leader选举

ZooKeeper 需要在所有的服务(可以理解为服务器)中选举出?一个 Leader ,然后让这个 Leader 来负责管理集群。此时,集群中的其它服务器则成为此 Leader 的 Follower 。并且,当 Leader 故障的时候,需要 ZooKeeper 能够快速地在 Follower 中选举出下?一个Leader 。这就是 ZooKeeper 的 Leader 机制,下?面我们将简单介绍在 ZooKeeper 中,Leader 选举( Leader Election )是如何实现的。

此操作实现的核?心思想是:?首先创建?一个 EPHEMERAL ?目录节点,例如“ / election ”。然后。每?一个 ZooKeeper 服务器在此?目录下创建?一个 SEQUENCE| EPHEMERAL 类型的节点,例如“ /election/n_ ”。在 SEQUENCE 标志下, ZooKeeper 将?自动地为每?一个 ZooKeeper 服务器分配?一个?比前?一个分配的序号要?大的序号。此时创建节点的 ZooKeeper 服务器中拥有最?小序号编号的服务器将成为 Leader 。

在实际的操作中,还需要保障:当 Leader 服务器发?生故障的时候,系统能够快速地选出下?一个 ZooKeeper 服务器作为 Leader 。?一个简单的解决?方案是,让所有的 follower 监视 leader 所对应的节点。当 Leader 发?生故障时, Leader 所对应的临时节点将会?自动地被删除,此操作将会触发所有监视 Leader 的服务器的 watch 。这样这些服务器将会收到Leader 故障的消息,并进?而进?行下?一次的 Leader 选举操作。但是,这种操作将会导致“从众效应”的发?生,尤其当集群中服务器众多并且带宽延迟?比较?大的时候,此种情况更为明显。

在 Zookeeper 中,为了避免从众效应的发?生,它是这样来实现的:每?一个 follower 对follower 集群中对应的?比?自?己节点序号?小?一号的节点(也就是所有序号?比?自?己?小的节点中的序号最?大的节点)设置?一个 watch 。只有当 follower 所设置的 watch 被触发的时候,它才进?行 Leader 选举操作,?一般情况下它将成为集群中的下?一个 Leader 。很明显,此Leader 选举操作的速度是很快的。因为,每?一次 Leader 选举?几乎只涉及单个 follower 的操作。

ZOOKEEPER解惑

ZOOKEEPER 解惑 今年年初的时候,写了一篇ZooKeeper 的入门文章《初识ZooKeeper 》,一直到这一周,才有时间将 ZooKeeper 整个源码通读了一遍。不能说完全理解了ZooKeeper 的工作原理与细节,但是之前心中一直关于ZooKeeper 的疑问都得到了解释。 现在网上关于ZooKeeper 的文章很多,有介绍Leader 选举算法的,有介绍ZooKeeper Server 内部原理的,还有介绍ZooKeeper Client 的。本文不打算再写类似的内容,而专注与解答读者对ZooKeeper 的相关疑问。 ZOOKEEPER 在客户端究竟做了什么事情 使用过ZooKeeper 的读者都知道,初始化客户端的代码如下: 1 2 3 System.out.println("Starting ZK:"); zk = new ZooKeeper(address, 3000, this ); System.out.println("Finished starting ZK: " + zk); 完成客户段的初始化之后,就可以对ZooKeeper 进行相应的操作了: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (zk != null ) { try { Stat s = zk.exists(root, false ); if (s == null ) { zk.create(root, new byte [0], Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } } catch (KeeperException e) { System.out .println("Keeper exception when instantiating queue: " + e.toString()); } catch (InterruptedException e) { System.out.println("Interrupted

appscan工具简述

1.appscan是一个web应用安全测试工具。 2.web攻击的类型比如: ●跨站脚本攻击:为了搜集用户信息,攻击者通常会在有漏洞的程序中插 入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户,达到盗取用 户帐户,修改用户设置,盗取/污染cookie,做虚假广告等目的。如注入 一个JavaScript弹出式的警告框:alert(1) ●消息泄露:web应用程序在处理用户错误请求时,程序在抛出异常的时候 给出了比较详细的内部错误信息,而暴露了不应该显示的执行细节,如 文件路径、数据库信息、中间件信息、ip地址等 ●SQL注入:将SQL命令人为地输入到URL、表格域、或者其他动态生成的 SQL查询语句的输入中,完成SQL攻击。以达到绕过认证、添加、删除、修改数据等目的。如sql查询代码为: strSQL = "SELECT * FROM users WHERE (name = '"+ us erName + "') and (pw = '"+ passWord+"');" 改为: strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');" 达到无账号密码,亦可登录网站。 3.appscan使用步骤:总的来说,就是指定要扫描的URL-选择测试策略-执行 扫描探索-执行测试-结果分析。 1)选择测试策略,文件-新建-选择一个模板“常规扫描”

2)出现扫描配置向导页面,这里是选择“AppScan(自动或手动)“,如图: 3)输入扫描项目目标URL,如果只想扫描指定URL目录下链接的话把“仅扫 描此目录中或目录下的链接”勾选上。 4)点击”下一步“,选择认证模式,出现登录管理的页面,这是因为对于 大部分网站,需要用户名和密码登录进去才可以查看许多内容,未登录的情况下就只可以访问部分页面。这里我选择的第一个,需要点击右边的记录进入浏览器手动登录,让它记录下这个登录信息。

ZooKeeper注册中心安装详细步骤(单节点)

本文参考(龙果学院)www#roncoo#com DUBBO项目实战课程文档 Dubbo建议使用Zookeeper作为服务的注册中心。 注册中心服务器(192.168.3.71)配置,安装Zookeeper: 1、修改操作系统的/etc/hosts文件中添加: # zookeeper servers 192.168.3.71 edu-provider-01 2、到https://www.wendangku.net/doc/a23763968.html,/zookeeper/下载zookeeper-3.4.6: $ wget https://www.wendangku.net/doc/a23763968.html,/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 3、解压zookeeper安装包: $ tar -zxvf zookeeper-3.4.6.tar.gz 4、在/home/wusc/zookeeper-3.4.6目录下创建以下目录: $ cd /home/wusc/zookeeper-3.4.6 $ mkdir data $ mkdir logs 5、将zookeeper-3.4.6/conf目录下的zoo_sample.cfg文件拷贝一份,命名为为 zoo.cfg $ cp zoo_sample.cfg zoo.cfg 6、修改zoo.cfg配置文件: $ 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 # example sakes. dataDir=/home/wusc/zookeeper-3.4.6/data dataLogDir=/home/wusc/zookeeper-3.4.6/logs # the port at which the clients will connect clientPort=2181 #2888,3888 are election port server.1=edu-provider-01:2888:3888

Windows环境下Kafka与Zookeeper安装配置与启动过程

Windows环境下Kafka与Zookeeper安装配置与启动过程1.软件下载 1.1下载jdk1.8.0_60 1.2 下载zookeeper-3.4.9.tar.gz 1.3下载kafka_ 2.12-0.10.2.0.tgz 2.环境准备 安装配置java环境,配置jdk1.8为操作系统java运行时环境 2.1安装jdk1.8 将https://www.wendangku.net/doc/a23763968.html,网站下载的jdk1.8.0_60压缩包解压缩到c:\program files\java目录下,如下图: 2.2 配置java环境 如图在“控制面板--系统和安全--系统”页,鼠标点击“高级系统设置”,在弹出的“系统属性”页面选择高级tab页:

点击“环境变量”按钮后,在弹出的环境变量对话框中点击“系统变量”栏中的“新建”按钮,在弹出的“新建系统变量”窗口中输入如下: :

点确定确定后,再配置JRE_HOME

同时打开一个cmd窗口在其中输入: SET JA V A_HOME=C:\Program Files\Java\jdk1.8.0_60

SET CLASSPATH=.;%JA V A_HOME%/lib/dt.jar;%JA V A_HOME%/lib/tools.jar;%JRE_HOME%\lib\;%JRE_HOME%\lib\r t.jar;%JRE_HOME%\lib\jce.jar;%JRE_HOME%\lib\metadata-extractor-2.4.0-beta-1.jar;%JRE_HOME%\lib\mediautil-1.0.jar; SET Path=%JA V A_HOME%\bin;%JA V A_HOME%\jre\bin; 在命令行输入java -version,输出如下,表明系统已启用java配置 3.Zookeeper安装配置 3.1 解压与目录设计 在目录e:\apache\zookeeper\下解压文件zookeeper-3.4.9.tar.gz,并将解压文件夹改名为zk0,复制该文件夹到相同目录下分别改名为zk1、zk2. 3.2在zk0\zk1\zk2目录下都创建空文件夹data和logs,如下图 3.2在data目录中创建文件myid,设置zookeeper服务器的序号。 Myid的内容分别为0、1、2

利用的配置ZooKeeper服务实现分布式系统数据同步

利用ZooKeeper服务实现分布式系统的配置数据同步 很多时候,一旦习惯了某些事情,也就习惯了它们的恶劣,习惯了它们的丑陋,习惯了它们“赋予”你的各种痛苦。 –Tony Bai 一、痼疾难解 我们目前的业务配置数据同步方案。简单描述这个方案如下: 方案涉及两个角色–数据库(DB)与应用节点(app_node); 所有的业务配置数据均统一存储在DB中; 应用节点在启动后从DB中读取最新业务配置数据; 应用节点运行过程中,如果DB中的业务配置数据发生变更(增/删/改),DB中的触发器(trigger)将会执行。在触发器的脚本中,触发器将会【串行】地与每个应用节点建立TCP链接,并将业务配置表的变更信息发给各个应用节点。应用节点会接收并【解析】触发器发过来变更数据包,并同步到自己的本地内存中。这样就达到了运行时更新配置的目的。 曾几何时,在那个还没有集群化,没有分布式的时代,它还是一个不错的方案,至少在线上没有暴露出太多问题,它也不在我们关注的重点范围之内。但随着集群化、分布式的新版本的到来,那一大坨遗留的代码就变得格外让人不顺眼,同时问题也随之在线上暴露开来了。上面我用【】标记了两个关键词:“串行”和“解析”。这两个词隐含有这个方案的两个主要问题。 “串行”–意味着每一次DB的业务配置数据变更,trigger脚本都要逐个与应用节点建立链接并收发数据。当应用节点逐渐增多时,每一次业务数据同步都会相当地耗时。尤其是当某个应用节点所在主机出现问题时,到该节点链接建立的过程会阻塞,导致整个业务配置数据同步的时间达到无法忍受的地步。 “解析”–我们自定义了trigger与应用节点之间的协议包。协议包中包含了每次变更的详细信息,比如在某个表添加一条记录,trigger会将这个记录的每个字段信息排成一行打包发给应用节点。应用节点收到这个包后,会根据已有的表字段信息对该包进行解析。看得出这是一个很强的耦合:表字段一旦修改,trigger脚本要修改,应用节点的解析函数要修改,还要考虑协议包中表字段的排序。如果应用节点解析时与trigger脚本打包时的字段顺序不同的话,那就可能出现严重错误,而且这种错误有时难于校验并难于发现。 二、曾经的努力 针对这个方案的不足,我们曾经也做过改进,但主要针对的是解决“串行”这个问题上。第一次改进:同步的发起能否并行做?trigger脚本能否并行发起对各个应用节点的链接建立请求? Java组同事对trigger脚本做了改进。让trigger脚本调用function,而function中又调用了写好的Java方法,Java代码由DB加载到环境中。在Java方法中创建多个同步线程,并发与各应用节点建立链接并发送数据。这个方法的确可以变“串行”为“并行”,但不知为何生产环境中实际运行时偶尔会出现异常,该异常发生在DB中,影响很大。有时还会导致DB的一些异常现象。至今原因尚未明确,我们无奈退回到以前的方案。 第二次改进:从Push模式到Pull模式 在之前部门新规划的一个产品中,开发人员对数据同步的机制做了重新的设计,将原来的Push模式改为了Pull模式。大致方案是: 业务数据变更时,trigger直接将变更内容(以老方案中那个协议包的打包格式)写到一个“变更日志表”中,每条记录有一个唯一的序号,序号递增。

07 hadoop完全分布式安装第七步:zookeeper分布式配置

实验七 zookeeper分布式的配置 tar -zxvf zookeeper-3.4.5.tar.gz mv zookeeper-3.4.5 zookeeper cd zookeeper mkdir data mkdir logs 三、集群模式 集群模式就是在不同主机上安装zookeeper然后组成集群的模式;下边以在192.168.1.1,192.168.1.2,192.168.1.3三台主机为例。 zookeeper 配置 1.Zookeeper服务集群规模不小于三个节点,要求各服务之间系统时间要保持一致。 2.在master的/home/chenlijun目录下,解压缩zookeeper(执行命令tar –zvxf zooke eper.tar.gz) 3.设置环境变量 打开/etc/profile文件!内容如下:

[html]view plain copy 1.#set java & hadoop 2. 3.export JAVA_HOME=/home/chenlijun/java/ 4. 5.export HADOOP_HOME=/home/chenlijun/hadoop 6. 7.export ZOOKEEPER_HOME=/home/chenlijun/zookeeper 8. 9.export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH 注:修改完后profile记得执行source /etc/profile 4.在解压后的zookeeper的目录下进入conf目录修改配置文件 更名操作:mv zoo_sample.cfg zoo.cfg 5.编辑zoo.cfg (vi zoo.cfg) 修改dataDir=/home/chenlijun/zookeeper/data/ 新增server.0=master:2888:3888 server.1=slave1:2888:3888 server.2=slave2:2888:3888 文件如下:

AppScan常见故障及解决方法

IBM Appscan常见问题及解决方案 最近为了网站的安全测试,接触了IBM提供的一款工具--Appscan,可是好不容安装好后,在运行过程中问题也不断冒出,查询了一些资料,将遇到的问题及解决的方案记录如下: 1、"AppScan虚拟内存不足"错误从而停止工作 问题: 一旦达到内存限制,IBM Rational AppScan将会停止工作并显示错误消息:"AppScan内存需求已超过预定义的限制"。 症状: IBM Rational AppScan因为内存使用量增加从而停止扫描。如果强制选择继续扫描的话,Rational AppScan可能会发生崩溃并丢失所有的工作数据。 原因: 产品使用超出限度的内存量。 解决方案: 为了防止Rational AppScan因为超过内存限度而停止工作,可以进行相应的设定使Rational AppScan当内存使用量相对过大时自动重新启动。这样当扫描因为剩余的虚拟内存量过低从而被迫停止时,Rational AppScan会监测系统注册表的设定来决定是否重新启动。 Rational AppScan 7.7,7.8和7.9 自Rational AppScan 7.7版本以上,在主画面中选择菜单[工具]->[选项]->[高级]页面。 ·检索PerformanceMonitor.RestartOnOutOfMemory属性并将其设定为布尔值True。 还可以使用下面的属性

·检索PerformanceMonitor\minScanTimeDurationForRestart属性并设定适当的DWORD双字节数值,该数值是指定Rational AppScan在遇到内存问题之前应当运行的分钟数。 2、IBM Appscan使用时C盘空间不足的解决办法 症状: IBM Appscan使用时C盘空间不足 原因: Appscan默认会将其temp 文件夹设置为:c:\documents and Settings\All Users\Application Data\IBM\Rational AppScan\temp 当扫描的站点信息很多时,该文件夹大小会剧增,由于C盘空间不足而导致出现“磁盘空间不足”错误而退出。 解决方案: 建立如下环境变量:APPSCAN_TEMP,将其值设置为足够空间的temp文件夹 注意: ①.支持本地磁盘 ②.路径中不能包含中文/空格/特殊字符 ③、IBM Appscan使用时每隔一小时保存一次 这个其实并不能算问题,不过在目标非常大,扫描时间非常长的时候,这个问题会极大影响扫描速度。 解决方案: 在“工具”->“选项”中设置下自动保存时间,默认时间是“60分钟”,可以根据自己需要调节。

CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程

目录 1.软件准备 (2) 2.安装步骤 (2) 2.1.安装虚拟机 (2) 2.2.在CentOS上安装JDK (2) 2.3.安装Jboss (4) 2.4.Zookeeper单机版的安装与测试 (6) 2.5.Zookeeper 集群安装(单点与分布式成功安装) (9) 2.6.dubbo管理控制台及集成zookeeper集群部署 (11) CentOS+Jdk+Jboss+Dubbo配置教程

1.软件准备 虚拟机:VMware-workstation-full-10.0.0-1295980.exe CentOS: CentOS-5.10-i386-bin-DVD-1of2.iso、 CentOS-5.10-i386-bin-DVD-2of2.iso Jdk7:jdk-7u45-linux-i586.rpm Jboss7.1.1:jboss-as-7.1.1.Final.zip Zookeeper:zookeeper-3.4.5.tar.gz SSH工具:SSHSecureShellClient-3.2.9.exe 2.安装步骤 2.1.安装虚拟机 一、在电脑上安装VMware-workstation-full-10.0.0-1295980.exe 二、在Vmware上安装CentOS 操作系统 2.2.在CentOS上安装JDK 一、查看Linux自带的JDK是否已安装(卸载centOS已安装的1.4) 安装好的CentOS会自带OpenJdk,用命令java -version ,会有下面的信息:# java –version(注:下面开始#开始是shell命令,并且用颜色区分) java version "1.6.0" OpenJDK Runtime Environment (build 1.6.0-b09) OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)

Zookeeper介绍

Zookeeper介绍 简介: Zookeeper看名字是动物园管理员,这个跟它的功能是非常的一致的。 Zookeeper 分布式服务框架是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 ZooKeeper典型的应用场景: Zookeeper 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave 管理模式。 a.统一命名服务(Name Service) b.配置管理(Configuration Management) c.集群管理(Group Membership) d.共享锁(Locks) e.队列管理 安装及配置: 单机模式 单机安装非常简单,只要获取到Zookeeper 的压缩包并解压到某个目录如:/home/zookeeper-3.2.2 下,Zookeeper 的启动脚本在bin 目录下,Linux 下的启动脚本是zkServer.sh。 在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper 的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。 tickTime=2000 dataDir=D:/devtools/zookeeper-3.2.2/build clientPort=2181 ?tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。 ?dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 ?clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 集群模式

搭建zookeeper单机部署和集群部署

2. 3. 4. 5. zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方式逐一进行讲解。 1. 系统环境准备 操作系统 :centos7 java 环境:jdk8 我搭建的是自centos7的linux下,先配置好java的配置环境,然后下载zookeeper的相关的jar进行部署 2.zookeeper部署 下 载 zookeeper 安装包: 下载完成,通过 tar -zxvf 解压 tar -zxf zookeeper-3.4.5.tar.gz 常用命令 1.启动 ZK 服务: sh bin/zkServer.sh start 查看 ZK 服务状态: sh bin/zkServer.sh status 停止 ZK 服务: sh bin/zkServer.sh stop 重启 ZK 服务: sh bin/zkServer.sh restart 连接服务器 sh zkCli.sh -timeout 0 -r -server ip:port 3.集群模式 初 次 使 用 zookeeper , 需 要 将 %zk_home%/conf 目 录 下 的zoo_sample.cfg 文件 copy 一份重命名为 zoo.cfg,修改 dataDir 目录,dataDir 表示日志文件存放的路径集群环境安装在 zookeeper 集群中,各个节点总共有三种角色,分别是:leaderfollowerobserver 集群模式我们采用模拟 3 台机器来搭建 zookeeper 集群。分别复制安装包到三台机器上并解压,同时 copy 一份zoo.cfg。 3.1 修改配置文件zoo.cfg 在zoo.cfg配置文件配置以下的语句 tickTime=2000 dataDir=/tmp/zookeeper dataLogDir=/usr/myapp/zookeeper-3.4.5/logs clientPort=2181 initLimit=10 syncLimit=5 server.1=192.168.44.128:2888:3888 server.2=192.168.44.129:2888:3888 server.3=192.168.44.130:2888:3888 server.id=host:port1:port2 idservice ID ,同时,在每台zookeeper机器上,需要在数据目录(dataDir参数指定 的那个目录下)创建一个myid的文件,文件只要一行内容,并且是一个数字,即对应 每台服务器的serverID的数字

appscan使用文档

一、环境搭建 1. 软件下载 官网下载地址:https://https://www.wendangku.net/doc/a23763968.html,/developerworks/cn/downloads/r/appscan/ 破解版下载地址:https://www.wendangku.net/doc/a23763968.html,/s/1dFFti85密码:u7z3 2. 软件安装 直接运行安装包,按照提示安装即可 3. 软件破解 将破解补丁替换“..\..\IBM\AppScan Standard”安装目录下同名文件 二、测试流程 以下内容以appscan9.0为例 1. 启动appscan 点击运行appscan.exe即可 2. 创建扫描 1)在欢迎页面选择->创建新的扫描…,打开新建扫描面板,如下图: 2)9.0没有综合扫描模板,一般选择常规扫描模板,选择模板后打开扫描配置面板,如下 图:

3)在扫描向导中选择扫描类型,一般选择web应用程序扫描; 若要选择web service扫描,需安装GSC; 除了按照提示一步步操作,也可以点击右下角完全扫描配置进行扫描配置(具体可参照二.3); 选择完扫描类型后,点击下一步打开配置URL和服务器面板,如下图: 4)起始URL中输入要扫描的站点,可以是域名格式,也可以是IP格式; 如果勾选了“仅扫描此目录中或目录下的链接”,则会只扫描起始URL目录或者子目录中的链接; 区分大小写的路径:如果选中,则大小写不同的链接会被视为两个页面,如A.apsx和a.spsx;建议linux或UNIX服务器时勾选,windows服务器时不勾选; 其他服务器和域:如果应用程序包含的服务器或域不同于“起始URL”包含的服务器或域,则应该添加到此处,如https://www.wendangku.net/doc/a23763968.html,和https://www.wendangku.net/doc/a23763968.html,二级域不同; 我需要配置其他连接设置:缺省情况下,AppScan 会使用Internet Explorer 代理设置,默认不勾选,若勾选,点击下一步会打开配置代理页面; 配置完成后,点击下一步打开登录管理面板,如下图:

linux系统下安装zookeeper集群

1.概述 操作系统为3台ubuntu虚拟机,其ip地址分别为 ubuntu1 192.168.1.109 ubuntu2 192.168.1.108 ubuntu3 192.168.1.110 jdk版本为jdk7 2.下载解压(三台机器都执行一遍) 2.1将zookeeper解压到/usr/local/zookeeper- 3. 4.5目录下 2.2以下命令都是在/usr/local/zookeeper- 3. 4.5目录下执行的 #从zookeeper的sample中复制一个zk的配置文件 root@ubuntu-2:/usr/local/zookeeper-3.4.5# cp conf/zoo_sample.cfg conf/zoo.cfg #修改一下这个配置文件,让他支持集群 root@ubuntu-2:/usr/local/zookeeper-3.4.5# vi conf/zoo.cfg #修改一下存储数据的目录,给出的模板里放在/tmp/zookeeper(如果 /var/lib/zookeeper目录不存在则需要自行创建) dataDir=/var/lib/zookeeper/ #在这个文件的末尾添加如下配置(遵循server.id=host:port:port的格式): server.1=192.168.1.109:2888:3888 server.2=192.168.1.108:2888:3888 server.3=192.168.1.110:2888:3888 保存配置退出vi编辑器 2.3切换到/var/lib/zookeeper目录下(这个目录即上面的zoo.cfg中配置的dataDir目录)新建一个myid的文本文件,编辑其内容如下 在server.1=192.168.1.109这台机器上设置1 在server.2=192.168.1.108这台机器上设置2 在server.3=192.168.1.110这台机器上设置3 设置的规则就是在zoo.conf文件指定的server.id,zookeeper用这个数字来标识集群中的哪一个节点 3.启动 切换到zookeeper安装目录的bin下 root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin# sh ./zkServer.sh start 4.集群验证 在三台机器上分别使用zkServer.sh status命令查看当前服务状态 server3输出:

如何使用AppScan扫描大型网1

如何使用AppScan扫描大型网站 经常有客户抱怨,说AppScan无法扫描大型的网站,或者是扫描接近完成时候无法保存,甚至保存后的结果文件下次无法打开?;同时大家又都很奇怪,作为一款业界出名的工具,如此的脆弱?是配置使用不当还是自己不太了解呢?我们今天就一起来讨论下AppScan扫描大型网站会遇到的问题以及应对。 AppScan工作原理和网站规模讨论 1)网站规模 2)AppScan的工作原理 3)扫描规模:AppScan的扫描能力收到哪些因素的影响? 好的,对AppScan工具和网站的特点有了了解以后,我们来讨论如何更有效地使用AppScan来进行安全扫描,特别是扫描大型网站? 使用AppScan来进行扫描 我们按照PDCA的方法论来进行规划和讨论;建议的AppScan使用步骤:PDCA: Plan,Do,check, Action and Analysis. 计划阶段:明确目的,进行策略性的选择和任务分解。 1)明确目的:选择合适的扫描策略 2)了解对象:首先进行探索,了解网站结构和规模 3)确定策略:进行对应的配置 a)按照目录进行扫描任务的分解 b)按照扫描策略进行扫描任务的分解 执行阶段:一边扫描一遍观察 4)进行扫描 5)先爬后扫(继续仅测试) 检查阶段(Check) 6)检查和调整配置 结果分析(Analysis) 7)对比结果 8)汇总结果(整合和过滤)

其他常见的AppScan配置: 1)扫描保存的间隔时间 2)内存使用量 3)临时文件的保存路径 4)AppScan的工作原理 AppScan其实是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的AppScan source edition,到针对WEB应用进行快速扫描的AppScan standard edition.以及进行安全管理和汇总整合的AppScan enterprise Edition等,我们经常说的AppScan就是指的桌面版本的AppScan,即AppScan standard edition.其安装在Windows操作系统上,可以对网站等WEB 应用进行自动化的应用安全扫描和测试。 来张AppScan的截图,用图表说话,更明确。 图表 1 AppScan标准版界面 请注意右上角,单击“扫描”下面的小三角,可以出现如下的三个选型“继续完全扫描”,“继续仅探索”,“继续仅测试“,有木有?什么意思?理解了这个地方,就理解了AppScan的工作原理,我们慢慢展开: 还没有正式开始,所以先不管“继续“,直接来讨论’完全扫描”,“仅探索”,“仅测试”三个名词: AppScan是对网站等WEB应用进行安全攻击,通过真刀真枪的攻击,来检查网站是否存在安全漏洞;既然是攻击,肯定要有明确的攻击对象吧,比如北约现在的对象就是卡扎菲上校还有他的军队。对网站来说,一个网站存在的页面,可能成千上万。每个页面也都可能存在多个字段(参数),比如一个登陆界面,至少要输入用户名和密码吧,这就是一个页面存在两个字段,你提交了用户名密码等登陆信息,网站总要有地方接受并且检查是否正确吧,这就可能存在一个新的检查页面。这里的每个页面的每个参数都可能存在安全漏洞,所有都是被攻击对象,都需要来检查。

zookeeper集群安装

zookeeper集群安装 2010-07-19 15:43:22| 分类:分布式 |字号 订阅 Linux/OS X下: 1 install 1.1) 建立安装目录 mkdir -p /local/software/zookeeper/ cd /local/software/zookeeper/ 1.2) 下载压缩包 curl - O https://www.wendangku.net/doc/a23763968.html,/hadoop/zookeeper/zookeeper-3.3.1/zookeeper-3.3.1.tar.gz 1.3) 解压缩文件 tar xzf zookeeper-3.3.1.tar.gz cd /local/software/zookeeper/ 2. Config 我们把提供相同应用的服务器组称之为一个quorum,quorum中的所有机器都有相同的配置文件。 在这里我们以3个机器组成的quorum为例,具体配置如下。 2.1) 建立数据目录 mkdir -p /local/software/zookeeper/zookeeper-3.3.1/data 2.2) 编辑配置文件 /local/software/zookeeper/zookeeper- 3.3.1/conf/zoo.cfg dataDir=/local/software/zookeeper/zookeeper-3.3.1/data clientPort=2181

initLimit=10 syncLimit=5 tickTime=2000 server.1=175.41.131.28:2888:3888 server.2=175.41.131.114:2888:3888 server.3=175.41.132.171:2888:3888 其中server.X代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。下面会讲myid文件的配置。 2.3) 创建dataDir参数指定的目录(这里指的是 "/local/software/zookeeper/zookeeper-3.3.1/data"),并在目录下创建文件,命名为“myid”,编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。如在175.41.131.114上,“myid”文件内容就是2,在175.41.132.171上,内容就是 3 2.4)注意打开防火墙的端口 (1)如果是用iptable的话,在/etc/sysconfig/iptables中加入: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 –j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 –j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 –j ACCEPT 执行命令: service iptables stop service iptables start (2)EC2上的请打开相应的防火墙端口 3. 启动服务 三台電腦先後下zkServer start 指令,無限定誰先誰後,但三台電腦間執

ZooKeeper注册中心配置

Dubbo 建议使用 Zookeeper 作为服务的注册中心。 注册中心服务器(192.168.3.71)配置,安装Zookeeper: 1、修改操作系统的/etc/hosts 文件中添加: # zookeeper servers 192.168.3.71edu-provider-01 2、到 https://www.wendangku.net/doc/a23763968.html,/zookeeper/下载 zookeeper-3.4.6: $ wget https://www.wendangku.net/doc/a23763968.html,/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 3、解压 zookeeper 安装包: $ tar -zxvf zookeeper-3.4.6.tar.gz 4、在/home/wusc/zookeeper-3.4.6 目录下创建以下目 录: $ cd /home/wusc/zookeeper-3.4.6 $ mkdir data $ mkdir logs 5、将zookeeper-3.4.6/conf目录下的zoo_sample.cfg文件拷贝一份,命名为为 zoo.cfg $ cp zoo_sample.cfg zoo.cfg 6、修改zoo.cfg配置文件: $ 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 # example sakes. dataDir=/home/wusc/zookeeper-3.4.6/data dataLogDir=/home/wusc/zookeeper-3.4.6/logs # the port at which the clients will connect clientPort=2181 #2888,3888 are election port server.1=edu-provider-01:2888:3888

APPSCAN扫描说明

APPSCAN扫描说明 安装Appscan之前,关闭所有打开的应用程序。点击安装文件,会出现安装向导,如果你还没有安装.Net framwork,Appscan安装过程会自动安装,并需要重新启动。按照向导的指示,可以很容易的完成安装.如果你使用的是默认许可,你将只允许扫描appscan中的测试网站。要扫描自己的网站,需要付费购买许可版本. 探索和测试阶段: 在我们开始扫描之前,让我们对Appscan的工作做一个了解.任何自动化扫描器都有两个目标:找出所有可用的链接和攻击寻找应用程序漏洞。 探索(Explore): 在探索阶段,Appscan试图遍历网站中所有可用的链接,并建立一个层次结构。它发出请求,并根据响应来判断哪里是一个漏洞的影响范围。例如,看到一个登陆页面,它会确定通过绕过注入来通过验证.在探索阶段不执行任何的攻击,只是确定测试方向.这个阶段通过发送的多个请求确定网站的结构和即将测试的漏洞范围。 测试(Test): 在测试阶段,Appscan通过攻击来测试应用中的漏洞.通过释放出的实际攻击的有效载荷,来确定在探索阶段建立的安全漏洞的情况.并根据风险的严重程度排名。 在测试阶段可能回发现网站的新链接,因此Appscan在探索和测试阶段完成之后会开始另一轮的扫描,并继续重复以上的过程,直到没有新的链接可以测试。扫描的次数也可以在用户的设置中配置. 1. 新建扫描

2.

点击完全扫描配置,弹出以下窗口。

选择环境定义,并对网站使用的web服务器,应用程序服务器,数据库服务器进行按网站的配置填写。完成后点确定,并再点扫描目标笛导下一步。弹出以下窗口。

ZooKeeper部署文档

ZooKeeper部署流程 一、下载 从Apache网站上(https://www.wendangku.net/doc/a23763968.html,)下载ZooKeeper软件包并进行解压,如zookeeper-3.3.4.tar.gz。 二、单节点模式 1.将zookeeper-3.3.4/conf目录下面的zoo_sample.cfg修改为zoo.cfg,配置文件 内容如下所示: 2.启动ZooKeeper服务器进程: 3.通过jps命令可以查看ZooKeeper服务器进程,名称为QuorumPeerMain。 三、伪分布式模式 将解压出来的zookeeper复制三份,分别重命名为zookeeper-1,zookeeper-2和zookeeper-3。 1.配置zookeeper-1: a.创建data目录:/home/java2000_wl/hadoop/zookeeper-1/data b.创建log目录:/home/java2000_wl/hadoop/zookeeper-1/logs c.创建myid文件:/home/java2000_wl/hadoop/zookeeper-1/data/myid 内容:1 d.创建/home/java2000_wl/hadoop/zookeeper-1/conf/zoo.cfg文件 内容:

tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/java2000_wl/hadoop/zookeeper-1/data clientPort=2181 dataLogDir=/home/java2000_wl/hadoop/zookeeper-1/logs server.1=127.0.0.1:4000:5000 server.2=127.0.0.1:4001:5001 server.3=127.0.0.1:4002:5002 2.配置zookeeper-2: a.创建data目录:/home/java2000_wl/hadoop/zookeeper-2/data b.创建log目录:/home/java2000_wl/hadoop/zookeeper-2/logs c.创建myid文件:/home/java2000_wl/hadoop/zookeeper-2/data/myid 内容:2 d.创建/home/java2000_wl/hadoop/zookeeper-2/conf/zoo.cfg文件 内容: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/java2000_wl/hadoop/zookeeper-2/data clientPort=2182 dataLogDir=/home/java2000_wl/hadoop/zookeeper-2/logs server.1=127.0.0.1:4000:5000 server.2=127.0.0.1:4001:5001 server.3=127.0.0.1:4002:5002 3.配置zookeeper-3: a.创建data目录:/home/java2000_wl/hadoop/zookeeper-3/data b.创建log目录:/home/java2000_wl/hadoop/zookeeper-3/logs c.创建myid文件:/home/java2000_wl/hadoop/zookeeper-3/data/myid 内容:3 d.创建/home/java2000_wl/hadoop/zookeeper-3/conf/zoo.cfg文件 内容: tickTime=2000

相关文档