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.访问

   http://主机地址:配置的tomcat的端口号