集群说明:
zookeeper集群中的角色:领导者(leader):全局的控制作用,更新系统状态
跟随者(follower):接收客户端请求,并向客户端返回结果
观察者(observer):接收客户端连接,将请求转发给leader
(注:集群中的每一个节点都是相互联通的,集群中一个leader,一个observer,剩下的都是follower。)
伪集群:一个Linux上使用三个zookeeper搭建一个集群。
真实集群:分别使用三个Linux每个Linux安装一个zookeeper所搭建的集群。
搭建集群:
搭建规划:应用部署位置:192.168.8.3
客户端监听端口分别:2181,2182,2183
投票选举端口分别:2881/3881、2882/3882、2883/3883
搭建步骤:1.切换到/usr/local,执行命令:mkdir zookeepercluster
2.拷贝解压好的zookeeper文件到zookeepercluster:cp apache-zookeeper-3.6.0-bin /usr/local/zookeepercluster/ -r
3.切换到zookeepercluster目录下给拷贝过来的文件重新命名:mv apache-zookeeper-3.6.0-bin/ zookeeper01
4.按照单机版的流程,在zookeeper01下创建一个data目录,用于存放缓存数据
5.拷贝两份zookeeper01,分别重命名为zookeeper02,zookeeper03,命令:
cp zookeeper01/ zookeeper02 -r
6.提供配置文件,分别进到每个conf目录下拷贝zoo_sample.cfg文件为zoo.cfg
命令: cp zoo_sample.cfg zoo.cfg 然后,修改zookeeper01/conf/zoo.cfg中的dataDir=/usr/local/zookeepercluster/zookeeper01/data,zookeeper02,zookeeper03同理。
7.提供应用唯一标识,在/usr/local/zookeepercluster/zookeeper01/data目录下创建文件myid:touch myid 然后vi myid 存入数字1,这里使用1、2、3作为标识,保存退出,zookeeper02,zookeeper03同理。(快捷方法,在zookeepercluster目录下执行:echo 1 >> zookeeper01/data/myid echo 2 >> zookeeper02/data/myid echo 3 >> zookeeper03/data/myid)。
8.修改zoo.cfg。
clientPort=2181
server.1=192.168.8.3:2881:3881
server.2=192.168.8.3:2882:3882
server.3=192.168.8.3:2883:3883(zookeeper01为2181,02为2182,03为2183,其中2881-3881-2882-3882-2883-3883为 投票选举端口,每个zookeeper中都要配置,clientPort为各自的端口,server.后面的123为myid文件中的 值)
编写启动关闭集群脚本:
启动脚本(必须以.sh为扩展名):startall.sh
zookeeper01/bin/zkServer.sh start
zookeeper02/bin/zkServer.sh start
zookeeper03/bin/zkServer.sh start给文件分配可读可写可 操作的权限:chmod 777 startall.sh
关闭脚本:shutdownall.sh
zookeeper01/bin/zkServer.sh stop
zookeeper02/bin/zkServer.sh stop
zookeeper03/bin/zkServer.sh stop给文件分配可读可写可 操作的权限:chmod 777 shutdownall.sh
连接集群:
可以使用任何集群中的客户端工具连接集群中的任何节点。
./zkCli.sh -server 192.168.8.3:2181(端口可以是2181,2182,2183)
甚至,可以用那个单机版的客户端连接集群中的节点,客户端工具是谁没有要求。
zookeeper常用命令:
ls /path (ls后面给定路径查看节点内容)。
create [-e] [-s] /path [data] 例如:create /test 123,节点携带数据123,-e 代表临时节点,-s代表顺序节点自动为节点增加后缀序号,默认为持久化节点。
get [-s] /path 查看znode中的数据,-s参数返回节点中的很多详细信息。
set /path [data] 添加或修改znode中的值
delete /path 删除节点