问题提示:
1.总体没有问题,发现1使用/usr/local/zookeeper/node-01/bin/zkServer.sh status
长时间没反应,报错:
JMX enabled by default
Using config: /usr/local/zookeeper/node-01/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
解决过程:重启后成功,应该是主机名配置在重启后生效
参考附件:
Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装详细步骤(单节点).pdf
1.Dubbo 建议使用 Zookeeper 作为服务的注册中心
2.安装配置 Zookeeper
2.1 环境:
文件安装目录: /usr/local/zookeeper-3.4.6
2.2 配置操作系统的/etc/hosts
在文件中添加:
# zookeeper servers
192.168.1.122 edu-mysql-01 #我是在数据库同台机器上配置的
说明,选择zookeeper地址和数据库集群的地址一起,所有名称是edu-mysql-x
2.3切换到/usr/local/,下载 zookeeper-3.4.6,解压 zookeeper 安装包
# cd /usr/local
# wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
注:也可以从本地上传文件
# tar -zxvf zookeeper-3.4.6.tar.gz
2.4 在/usr/local/zookeeper-3.4.6目录下创建以下目录:data log
# cd /usr/local/zookeeper-3.4.6
# mkdir data
# mkdir logs
2.5 将 zookeeper-3.4.6/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为为zoo.cfg# cd conf
# cp zoo_sample.cfg zoo.cfg
2.6 修改 zoo.cfg 配置文件
vi /usr/local/zookeeper-3.4.6/conf/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=/usr/local/zookeeper-3.4.6/data
dataLogDir=/usr/local/zookeeper-3.4.6/logs
# the port at which the clients will connect
clientPort=2181
#2888,3888 are election port
server.1=192.168.1.122:2888:3888
其中,
2888 端口号是 zookeeper 服务之间通信的端口。
3888 是 zookeeper 与其他应用程序通信的端口。
edu-mysql 是在 hosts 中已映射了 IP 的主机名。(
B 是这个服务器的 IP 地址或/etc/hosts 文件中映射了 IP 的主机名)
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是5*2000=10 秒。
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4秒。
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 IP 地址或/etc/hosts 文件中映射了 IP 的主机名;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
2.7 在 dataDir=/usr/local/zookeeper-3.4.6/data 下创建 myid 文件,编辑 myid 文件,并在对应的 IP 的机器上输入对应的编号。如在 zookeeper 上,myid文件内容就是 1。如果只在单点上进行安装配置,那么只有一个 server.1。
$ vi /usr/local/zookeeper-3.4.6/data/myid
1
2.8配置 用户下修改bash_profile,增加 zookeeper 配置:
vi ~/.bash_profile
# zookeeper env
export ZOOKEEPER_HOME=/home/local/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
$ source ~/.bash_profile
注:
用的root用户vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
2.9在防火墙中打开要用到的端口 2181、2888、3888切换到 root 用户权限,执行以下命令:
# chkconfig iptables on
# service iptables start
编辑/etc/sysconfig/iptables
# vi /etc/sysconfig/iptables
增加以下 3 行:
-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
重启防火墙:
# service iptables restart
查看防火墙端口状态:
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2181
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2888
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3888
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
2.10 启动并测试 zookeeper(要用 wusc 用户启动,不要用 root):
(1) 使用 wusc 用户到/home/wusc/zookeeper-3.4.6/bin 目录中执行:
$ zkServer.sh start
(2) 输入 jps 命令查看进程:
$ jps
1456 QuorumPeerMain
1475 Jps
其中,QuorumPeerMain 是 zookeeper 进程,启动正常
(3) 查看状态:
$ zkServer.sh status
(4) 查看 zookeeper 服务输出信息:
由于服务信息输出文件在/home/wusc/zookeeper-3.4.6/bin/zookeeper.out
$ tail -500f zookeeper.out
说明:我用的是root,实际生产不要用cd /usr/local/zookeeper-3.4.6/bin/
zkServer.sh start
2.11停止 zookeeper 进程:$ zkServer.sh stop
2.12 配置 zookeeper 开机使用 wusc 用户启动:编辑/etc/rc.local 文件,加入:
su - wusc -c '/home/wusc/zookeeper-3.4.6/bin/zkServer.sh start'
3.安装配置 Zookeeper集群
参考:03-Dubbo视频教程--高可用架构篇--第01节--ZooKeeper集群的安装、配置、高可用测试.pdf
Dubbo 建议使用 Zookeeper 作为服务的注册中心。
3.1 环境配置
(1)安装JDK
(2)机器规划
Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将 ZK 集群的节点数量要为奇数(2n+1:如 3、5、7 个节点)较为合适
|
IP地址 |
端口 |
服务器 1 |
192.168.1.106 |
2181、2881、3881 |
服务器 2 |
192.168.1.107 |
2182、2882、3882 |
服务器 3 |
192.168.1.108 |
2183、2883、3883 |
(3)修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射:
vi /etc/hosts
# zookeeper cluster servers
192.168.1.106 edu-zk-01
192.168.1.107 edu-zk-02
192.168.1.108 edu-zk-03
注:hosts里面只能写这些内容,不然连接不上 (4)下载或上传 zookeeper-3.4.6.tar.gz 到/usr/local/zookeeper 目录:# mkdir -p /usr/local/zookeeper
# cd /usr/local/zookeeper
# wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
(1) 没有则yum -y install wget (2)也可以直接上传
(5)解压 zookeeper 安装包,并按节点号对 zookeeper 目录重命名:# tar -zxvf zookeeper-3.4.6.tar.gz
针对不同的服务器:
服务器 1:# mv zookeeper-3.4.6 node-01
服务器 2:# mv zookeeper-3.4.6 node-02
服务器 3:# mv zookeeper-3.4.6 node-03
(6)在各 zookeeper 节点目录下创建以下目录:# cd /usr/local/zookeeper/node-0X (X 代表节点号 1、2、3,以下同解)
# mkdir data
# mkdir logs
(7)将 zookeeper/node-0X/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为 zoo.cfg:# cd conf
# cp zoo_sample.cfg zoo.cfg
(8) 修改 zoo.cfg 配置文件:zookeeper/node-01的配置,如下:
vi /usr/local/zookeeper/node-01/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/node-01/data
dataLogDir=/usr/local/zookeeper/node-01/logs
clientPort=2181
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-02的配置 ,如下:
vi /usr/local/zookeeper/node-02/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/node-02/data
dataLogDir=/usr/local/zookeeper/node-02/logs
clientPort=2182
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-03的配置,如下:
vi /usr/local/zookeeper/node-03/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/node-03/data
dataLogDir=/usr/local/zookeeper/node-03/logs
clientPort=2183
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
参数说明: :
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/wusc/zookeeper/node-01/data
dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。
clientPort=2181
clientPort 这个端口就是客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口接受客户端的访问请求。
server.A=B:C:D
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 IP 地址(或者是与 IP 地址做了映射的主机名) ;
C 第一个端口用来集群成员的信息交换,表示这个服务器与集群中的 Leader 服务器交换信息的端口;
D 是在 leader 挂掉时专门用来进行选举 leader 所用的端口。
注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。(9)在 dataDir=/usr/local/zookeeper/node-0X/data 下创建 myid 文件编辑 myid 文件,并在对应的 IP 的机器上输入对应的编号。
如在 node-01 上,myid 文件内容就是1,node-02 上就是 2,node-03 上就是 3:
$ vi /usr/local/zookeeper/node-01/data/myid ## 值为 1
$ vi /usr/local/zookeeper/node-02/data/myid ## 值为 2
$ vi /usr/local/zookeeper/node-03/data/myid ## 值为 3
(10)在防火墙中打开要用到的端口 218X、288X、388X,切换到 root 用户权限,执行以下命令:
# chkconfig iptables on
# service iptables start
# vi /etc/sysconfig/iptables
如服务器 01 增加以下 3 行:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
## 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
COMMIT
如服务器 02 增加以下 3 行:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
## zookeeper
-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
COMMIT
如服务器 03 增加以下 3 行:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
## zookeeper
-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
COMMIT
重启防火墙:
# service iptables restart
查看防火墙端口状态:
# service iptables status
(11)启动并测试 zookeeper(要用 wusc 用户启动,不要用 root): 【说明 我用的是root用户】(1) 使用 wusc 用户到/home/wusc/zookeeper/node-0X/bin 目录中执行:
$ /usr/local/zookeeper/node-01/bin/zkServer.sh start
$ /usr/local/zookeeper/node-02/bin/zkServer.sh start
$ /usr/local/zookeeper/node-03/bin/zkServer.sh start
(2) 输入 jps 命令查看进程:
$ jps
1456 QuorumPeerMain
其中,QuorumPeerMain 是 zookeeper 进程,说明启动正常
(3) 查看状态:
$ /usr/local/zookeeper/node-01/bin/zkServer.sh status
(4) 查看 zookeeper 服务输出信息:由于服务信息输出文件在
$ tail -f /usr/local/zookeeper/node-0X/bin/zookeeper.out
(12)停止 zookeeper 进程:$ zkServer.sh stop
(13)配置 zookeeper 开机启动:
使用 wusc 用户启动:
编辑 node-01、node-02、node-03 中的/etc/rc.local 文件,分别加入:
su - wusc -c '/usr/local/tools/zookeeper/node-01/bin/zkServer.sh start'
su - wusc -c '/usr/local/tools/zookeeper/node-02/bin/zkServer.sh start'
su - wusc -c '/usr/local/tools/zookeeper/node-03/bin/zkServer.sh start'
我用的是root用户
编辑 node-01、node-02、node-03 中的/etc/rc.local 文件,分别加入:
su - root -c '/usr/local/zookeeper/node-01/bin/zkServer.sh start'
su - root -c '/usr/local/zookeeper/node-02/bin/zkServer.sh start'
su - root -c '/usr/local/zookeeper/node-03/bin/zkServer.sh start'
===============以下是我的小结:包括单机和集群的安装配置==================
Zookeeper
1.介绍
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(DistributedSynchronization)、命名服务(NamingService)、集群维护(GroupMaintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性.
2.zookeeper单机/集群安装
【单机】
参考链接:http://blog.csdn.net/shirdrn/article/details/7183503
[1] 从Apache网站上(zookeeper.apache.org)下载ZooKeeper软件包,我选择了3.4.6版本的(zookeeper-3.4.6.tar.gz)
[2] 将zookeeper-3.4.6/conf目录下面的 zoo_sample.cfg修改为zoo.cfg,配置文件内容如下所示:
tickTime=2000 # tickTime:这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir=/home/hadoop/storage/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
参数说明:见下文
我的操作:
注意:我下载的是zookeeper-3.4.6.tar.gz
通过FTP将文件传到 /home/johnjia/softStore
解压文件到
mkdir /usr/local/zookeeper
cd /home/johnjia/softStore;
tar zxvf ./zookeeper-3.4.6.tar.gz -C /usr/local/zookeeper
cd /usr/local/zookeeper
mv ./zookeeper-3.4.6/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
参数如下:
tickTime=2000
dataDir=/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
[3] 启动ZooKeeper服务器进程:
cd zookeeper-3.3.4/bin
./zkServer.sh start &
3)通过jps命令可以查看ZooKeeper服务器进程,名称为QuorumPeerMain。
在客户端连接ZooKeeper服务器,执行如下命令: bin/zkCli.sh -server dynamic:2181
注:dynamic是我的主机名,
在本机执行,则执行如下命令即可:bin/zkCli.sh
客户端连接信息如下:接着,可以使用help查看Zookeeper客户端可以使用的基本操作命令。
【集群】:
ZooKeeper分布式模式安装(ZooKeeper集群)也比较容易,这里说明一下基本要点:
[1]首先要明确的是,ZooKeeper集群是一个独立的分布式协调服务集群,
“独立”的含义就是说,如果想使用ZooKeeper实现分布式应用的协调与管理,简化协调与管理,任何分布式应用都可以使用,这就要归功于Zookeeper的数据模型(Data Model)和层次命名空间(Hierarchical Namespace)结构,详细可以参考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html在设计你的分布式应用协调服务时,首要的就是考虑如何组织层次命名空间。
下面说明分布式模式的安装配置,过程如下所示:
1) 主机名称到IP地址映射配置
ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置的ZooKeeper集群的时候,
每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。
例如,我的ZooKeeper集群中每个结点的配置,以slave-01为例,/etc/hosts内容如下所示: vi /etc/hosts
192.168.199.129 slave-01
192.168.199.130 slave-02
192.168.199.131 slave-03
ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,
系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置上述映射。
ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。整个集群的架构可以参考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html#sc_designGoals。
2)修改ZooKeeper配置文件:
在其中一台机器(johnjia-desktop)上,解压缩zookeeper-3.3.4.tar.gz,修改配置文件conf/zoo.cfg,内容如下所示: cd /usr/local/zookeeper/conf
tickTime=2000
dataDir=/home/hadoop/storage/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=slave-01:2888:3888
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888
上述配置内容说明,可以参考http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。
3)远程复制分发安装文件
上面已经在一台机器johnjia-desktop上配置完成ZooKeeper,现在可以将该配置好的安装文件远程拷贝到集群中的各个结点对应的目录下
scp -r /usr/local/zookeeper root@slave-02:/usr/local/zookeeper
scp -r /usr/local/zookeeper root@slave-03:/usr/local/zookeeper
scp -r local_folder remote_username@remote_ip:remote_folder
问题: The authenticity of host 'johnjia1-desktop (192.168.199.130)' can't be established
ssh -o StrictHostKeyChecking=no 192.168.199.130
新问题:Warning: Permanently added '192.168.199.130' (ECDSA) to the list of known hosts
实际解决:根据提示输出就OK了
4)设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,
conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:
root@slave-01:$
cd /usr/local/zookeeper
echo "1" > /home/hadoop/storage/zookeeper/myid
root@slave-02:
cd /usr/local/zookeeper
echo "2" > /home/hadoop/storage/zookeeper/myid
root@slave-03:
cd /usr/local/zookeeper
echo "3" > /home/hadoop/storage/zookeeper/myid
5)启动ZooKeeper集群
在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:
root@slave-01:
cd /usr/local/zookeeper/bin/
./zkServer.sh start
zkServer.sh start
root@slave-02:
cd /usr/local/zookeeper/bin/
zkServer.sh start
root@slave-03:
cd /usr/local/zookeeper/bin/
zkServer.sh start
tail -500f zookeeper.out
修改主机名 http://www.111cn.net/sys/Ubuntu/76124.htm
我启动的顺序是slave-01>slave-02>slave-03,由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。
其他结点可能也出现类似问题,属于正常。
6)安装验证
可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),
如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
./zkServer.sh status
tail -500f zookeeper.out
一直提示:Error contacting service. It is probably not running.
参考:http://blog.csdn.net/young_kim1/article/details/50425968
vi /etc/hosts
127.0.0.1 localhost
3.Zookeeper配置
(1) 单机配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
OR
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
(2) 集群配置
<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
OR
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
(3)同一Zookeeper,分成多组注册中心
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />
(4)zoo.cfg配置说明
#tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。
tickTime=2000
#dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataDir=/tmp/zookeeper
#dataLogDir:日志文件保存的位置(未配置)
dataLogDir=/tmp/zookeeper/log
#clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
#initLimit:这个配置项是用来配置 Zookeeper接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
#当已经超过 10 个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
initLimit=10
其他步骤:
1wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz [适合ubuntu]
我选择:下载传上去
tar -xvf zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6/ /usr/local/zookeeper
修改配置zoo.cfg:
cd /usr/local/zookeeper/conf;
mv zoo_sample.cfg zoo.cfg;
vi zoo.cfg
vi zoo.cfg,内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zkdir/data
dataLogDir=/usr/local/zkdir/log
clientPort=2181
server.1=192.168.199.153:2888:3888
server.2=192.168.199.154:2888:3888
server.3=192.168.199.155:2888:3888
说明: 这两行说明了,需要创建一个文件夹,分别存放data以及log,所以,在/usr/local下创建文件夹zkdir,也可以创建在其他地方,只要配置中指定就好
dataDir=/usr/local/zkdir/data
dataLogDir=/usr/local/zkdir/log
mkdir /usr/local/zkdir;
mkdir /usr/local/zkdir/data /usr/local/zkdir/log;
在zkdir/data下,创建myid文件,并写入与ip地址相称的服务器编号,比如,192.168.199.153,写入 1;echo 1>myid;
其他两台机器配置相同,不过myid文件写入相应的id号
cd /usr/local/zkdir/data;
touch myid
vi 1
cd /usr/local/zkdir/data;
touch myid
vi 2
cd /usr/local/zkdir/data;
touch myid
vi 3
启动:
cd /usr/local/zookeeper/bin;
./zkServer.sh start
测试:
./zkCli.sh -server 192.168.199.153:2181
其他两台一样配置 另外2台还未设置
分享到:
相关推荐
它能够帮助开发者解决一系列问题,比如服务发现、负载均衡、分布式锁、集群管理和配置管理等。具体而言,ZooKeeper提供了一个简单的文件系统接口,允许客户端在这些节点上存储和检索数据。 #### 2. ZooKeeper的核心...
- 为了减轻Zookeeper的压力,可以使用分布式缓存(如Redis)作为中介,先将session信息存储在缓存中,然后在Zookeeper上存储的是session的唯一标识和过期时间。 - 可以采用一致性哈希算法分配session,减少session...
ZooKeeper是一个高可用、高性能的分布式协调系统,它维护着一个分布式的、有序的命名空间,提供诸如配置管理、集群同步、选举等服务。在分布式Session的场景下,ZooKeeper可以作为中央存储节点,保存用户的Session...
例如,在从单体架构向集群架构转变的过程中,我们需要解决分布式Session问题,这通常通过Session Center(如Redis)来实现。此外,为了降低主库压力,我们会采用数据库读写分离,配合使用Proxy(如Mycat、Atlas、...
首先,Zookeeper是一个分布式协调服务,用于实现命名服务、配置管理、集群同步等任务。在Windows和Linux环境下安装Zookeeper是开发和部署微服务的基础。课程会详细介绍如何下载和安装Zookeeper,并提供相应的环境...
2. Zookeeper:Apache的一个分布式协调服务,用于管理分布式系统的配置信息、命名服务、集群状态等。Zookeeper提供了一致性、高可用性和有序性,是许多分布式系统的基础组件。在Dubbo中,Zookeeper被用作服务注册与...
ZooKeeper是一个开源的分布式协调服务,它提供了简单易用的接口,能够帮助开发者处理分布式系统中经常遇到的问题,如命名服务、配置管理、同步服务、集群管理等。ZooKeeper通过一个类似文件系统的数据模型来存储数据...
- 配置中心:如使用Nacos、Zookeeper等配置中心,进行集群配置。 - 配置事务管理器:在application.yml或application.properties中设置事务管理器的相关参数,如地址、端口、服务名等。 - 开启事务注解:在需要...
大部分容错和路由策略可以抽象到分布式服务框架中,通过策略配置方式提供给用户使用,以降低用户的开发成本。服务框架通常会提供扩展点,供业务做路由和容错定制。 #### 服务化实践-本地短路策略 在电信行业中,...
- 在分布式环境中,Zookeeper是一个高可用的协调服务,用于维护配置信息、命名服务、集群同步等。 - Redmine虽然通常作为单体应用运行,但若要实现分布式部署或负载均衡,可以利用Zookeeper进行服务发现和状态同步...
Zookeeper 是一个分布式协调服务,用于管理分布式应用的配置信息、命名服务、集群状态等。虽然Kuyruk的官方文档未明确提及与Zookeeper的直接集成,但开发者可能通过自定义中间件或者特定场景下利用Zookeeper的特性来...
5. **微服务部署**:项目中的"microservice-deploy-master"可能包含了各种微服务的部署配置和脚本,比如Dockerfile用于容器化服务,Kubernetes或Mesos的YAML配置文件用于集群部署,以及Jenkins或GitLab CI/CD配置...
2. 启动 ZooKeeper:ZooKeeper 是 Kafka 的依赖,用于集群管理和协调。 3. 启动 Kafka 服务:配置服务器配置文件 `server.properties`,启动 Kafka Broker。 4. 创建主题:使用 `bin/kafka-topics.sh` 脚本创建主题...
- **Zookeeper安装部署及命令分析**:熟悉Zookeeper的基本使用。 - **Zookeeper实现原理分析**:深入理解Zookeeper的工作原理。 - **Dubbo的使用入门及配置分析**:掌握Dubbo的基本使用方法。 **7.6 分布式专题-...
092 Zookeeper 集群模式 093 Dubbo Admin 管理控制台 094 系统后台管理-修改所需依赖 095 服务提供者 096 服务消费者 097 测试 JRebel 热部署 098 登录页 099 首页1 099 首页2 100 使用 thymeleaf 模板 101 使用 ...
### MySQL MyCAT安装应用经典案例实战 #### 一、MyCAT简介 MyCAT是一个开源的分布式数据库中间件项目,它的设计理念是将多个物理数据库通过中间层整合为一个逻辑上的数据库,以此来解决传统数据库在面对大规模并发...
092 Zookeeper 集群模式 093 Dubbo Admin 管理控制台 094 系统后台管理-修改所需依赖 095 服务提供者 096 服务消费者 097 测试 JRebel 热部署 098 登录页 099 首页1 099 首页2 100 使用 thymeleaf 模板 ...