zookeeper原理介绍:
1.zookeeper是一个分布式,开放源码的分布式应用程序协调服务。是集群的管理者,监视集群中的每个节点的状态,根据节点提交的反馈进行下一步合理的操作
2.zookeeper的两个核心机制
1)文件系统:每个子目录项nameservice都被称作znode,和文件系统一样。我们能够自由的增加和删除znode,唯一的不同是znode可以存储数据
2)通信机制:客户端监听他关心的目录节点,当目录节点发生变化时,zookeeper会通知客户端
3.zookeeper的四个角色:
1)领导者:负责进行投票的发起和决议,更新系统状态
2)跟随者:属于学习者,用于接收客户端的请求并且返回结果。参与投票
3)观察者:属于学习者,接收客户端请求将写请求给leader,不参与投票,只同步leader状态,用于提高读取效率
4)客户端:请求发起方
4.zookeeper的设计目的:
1)最终一致性
2)可靠性
3)实时性
4)等待无关
5)原子性
6)顺序性
zookeeper伪集群的搭建
搭建3个集群节点的伪集群
1.下载需要的tar.gz包
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
2.解压到你需要安装的目录下,此处是/usr/local/
tar -zxvf /usr/local/
所以zookeeper的home路径为/usr/local/zookeeper
3.在home路径下创建
datas/zk1, datas/zk2, datas/zk3作为三个节点的存储数据路径
4.在conf中创建zk1.cfg zk2.cfg zk3.cfg
5.配置zk1.cfg zk2.cfg zk3.cfg中的内容
-------------------zk1.cfg---------------------------------
ticketTime=2000
initLimit=10
syncLimit=5
dataDir=/home/caissa/app/zookeeper-3.4.6/datas/zk1
clientPort=2181
server.1=172.16.24.90:4881:5881
server.2=172.16.24.90:4882:5882
server.3=172.16.24.90:4883:5883
-------------------zk2.cfg---------------------------------
ticketTime=2000
initLimit=10
syncLimit=5
dataDir=/home/caissa/app/zookeeper-3.4.6/datas/zk2
clientPort=2182
server.1=172.16.24.90:4881:5881
server.2=172.16.24.90:4882:5882
server.3=172.16.24.90:4883:5883
-------------------zk2.cfg---------------------------------
ticketTime=2000
initLimit=10
syncLimit=5
dataDir=/home/caissa/app/zookeeper-3.4.6/datas/zk3
clientPort=2183
server.1=172.16.24.90:4881:5881
server.2=172.16.24.90:4882:5882
server.3=172.16.24.90:4883:5883
6.在对应的datas/zk1 datas/zk2 datas/zk3中建立server.id
注意:server.X=A:B:C
X-代表服务器编号
A-代表ip
B和C-代表端口,这个端口用来系统之间通信
X和echo的数字需要对应
echo 1>${zookeeper.home}/datas/zk1/myid
echo 2>${zookeeper.home}/datas/zk2/myid
echo 3>${zookeeper.home}/datas/zk3/myid
7.启动服务
cd ${zookeeper.home}/bin
./zkServer.sh start ../conf/zk1.cfg
./zkServer.sh start ../conf/zk2.cfg
./zkServer.sh start ../conf/zk3.cfg
8.查看服务和进程
ps -ef |grep java |grep zookeeper -> 能够获取到三个进程,可以根据信息中的配置文件名称进行区分
./zkServer.sh status ../conf/zk1.cfg -> mode: follower 从节点
./zkServer.sh status ../conf/zk2.cfg -> mode: leader 主节点
./zkServer.sh status ../conf/zk3.cfg -> mode: follower 从节点
zookeeper集群搭建
3台机器的伪集群
1.将tar.gz包放到3台机器的指定的安装目录下/usr/local
2.配置环境变量,此处可以省略,配置的目的是为了之后启动不用定位到zookeeper的bin目录下
vim profile
# zookeeper export ZK_HOME=/usr/local/zookeeper export PATH=$ZK_HOME/bin:$PATH
3.配置zookeeper的配置文件
cd /conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
内容为:
ticketTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
clientPort=2181
server.1=172.16.24.90:4881:5881
server.2=172.16.24.90:4882:5882
server.3=172.16.24.90:4883:5883
注意3台机器的clientPort不一样分别为2181 2182 2183
4.建设server.id
在zookeeper的home路径中创建data文件夹
mkdir data
cd data
echo 1 >myid 注意数字1跟上边配置的cfg中的server.x中的x对应
5.启动
zkServer.sh start
dubbo的搭建
搭建要求
软件名称 软件版本
jdk 1.7
tomcat 7.0.57
zookeeper 3.4.6
dubboadmin 2.5.4
注意:此处不同版本的dubbo需要的jdk的支撑不同。安装之前最好先搜索一下需要的jdk版本,否则会出错
1.下载dubbo的war包。
2.放置war包到tomcat下
将dubbo-admin-2.5.4.war重命名为ROOT.war放入tomcat的webapps路径下;
mv dubbo-admin-2.5.4.war /home/caissa/app/apache-tomcat-7.0.57/webapps/ROOT.war
3. 删除tomcat的webapps下原有的ROOT文件夹;
rm –rf /home/caissa/app/apache-tomcat-7.0.57/webapps/ROOT
4.启动tomcat,启动完成后再停止
/home/caissa/app/apache-tomcat-7.0.57/bin/startup.sh &
tail –f /home/caissa/app/apache-tomcat-7.0.57/logs/catalina.out
/home/caissa/app/apache-tomcat-7.0.57/bin/shutdown.sh
5. 修改dubboadmin配置文件
vi /home/caissa/app/apache-tomcat-7.0.57/webapps/ROOT/WEB-INF/dubbo.properties
修改为:
dubbo.registry.address=zookeeper://172.16.21.190:2181?backup=172.16.21.190:2182,172.16.21.190:2183
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
6.重新启动tomcat,启动完成后访问dubboadmin管理页面,使用root / root进行登陆
/home/caissa/app/apache-tomcat-7.0.57/bin/startup.sh &
7.访问