1.1、ZooKeeper概述
Zookeeper是一个分布式协调服务的开源框架,有两个最基本的功能:存储小数据和监听机制.,例如:分布式锁、分布式配置管理、集群选主等。
1>相同的数据副本(数据一致)
2>全局有序和偏序 全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
3>一份数据,会在所有机器上都保存一份
1>eader: Zookeeper集群工作的核心 事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;集群内部各个服务器的调度者。
2>Follower: 处理客户端非事务(读操作)请求,转发写请求给Leader;参与集群Leader选举投票。
3>Observer: 观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader 服务器进行处理。不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务、处理能力的前提下提升集群的非事务处理能力。
=============================================
Zookeeper集群搭建指的是ZooKeeper分布式模式安装。通常由2n+1台servers组成。这是因为为了保证Leader选举(基于Paxos算法的实现)能过得到多数的支持,所以ZooKeeper集群的数量一般为奇数。
Zookeeper运行需要java环境,所以需要提前安装jdk。
1、检查node1、node2、node3的当前系统中,存不存在已经安装好的java,如果有那就卸载,没有就不用
rpm -qa|grepjava
2、安装jdk 在node1、node2、node3机器上,创建目录:/export/server; (上传安装包到FileZilla上) 上传jdk的压缩包到node1机器的 /export/server目录中,并且解压
cd /export/servertar -zxvf jdk-8u65-linux-x64.tar.gz
vi /etc/profile添加:exportJAVA_HOME=/export/server/jdk1.8.0_65exportPATH=$JAVA_HOME/bin:$PATH
配置完成,刷新环境变量:
source /etc/profile
node1的/etc/profile文件和jdk的解压包,发送给node2和node3,不要忘记在node2和node3中刷新配置
scp -r jdk1.8.0_65root@node2:/export/server/scp -r jdk1.8.0_65root@node3:/export/server/scp -r /etc/profile root@node2:/etc/scp -r /etc/profile root@node3:/etc/
3、安装zookeeper集群 对于安装leader+follower模式的集群,过程如下:
1、把压缩包,解压到这个路径:/export/server/zookeeper。 解压后,修改解压路径下的conf目录中的zoo_sample.cfg文件,把这个文件改名为zoo.cfg
2、在zoo.cfg文件的最后,添加如下内容:
dataDir=/export/data/zookeeper/dataserver.1=node1:2888:3888server.2=node2:2888:3888server.3=node3:2888:3888
3、修改环境变量
vi /etc/profileexportZOOKEEPER_HOME=/export/server/zookeeperexportPATH=$PATH:$ZOOKEEPER_HOME/bin
改完后,记得刷新
source /etc/profile
4,创建文件夹并且设置机器的myid
mkdir-p /export/data/zookeeper/dataecho1> /export/data/zookeeper/data/myid
5、以上流程,分别在node2和node3机器上,重复做一遍。
mkdir-p /export/data/zookeeper/dataecho2> /export/data/zookeeper/data/myidmkdir-p /export/data/zookeeper/dataecho3> /export/data/zookeeper/data/myid
6,以上5个步骤就可以搭建成一个集群了。
===================================================
7,技巧,如果不想每台机器都上传压缩包,然后再解压安装。
直接把node1的解压、配置好的zookeeper,发送到node2和node3中。命令如下:
发送给node2:
scp -r /export/server/zookeeper root@node2:/export/server/
发送给node3:
scp -r /export/server/zookeeper root@node3:/export/server/
8,启动集群 前提:关闭所有机器的防火墙
关闭:chkconfig iptablesoff
关闭防火墙的方法为:
1.永久性生效开启:chkconfig iptableson关闭:chkconfig iptables off2.即时生效,重启后失效开启:service iptablesstart关闭:service iptablesstop
启动集群的第一种方法 1.分别启动: node1:
zkServer.shstart
node2:
zkServer.shstart
node3:
zkServer.shstart
2,写脚本,一键启动,代码如下: vi start.sh
#! /bin/bashecho"start zkServer..."foriin1 2 3dossh node$i"source /etc/profile: /export/server/zookeeper/bin/zkServer.sh start"done
记得加载权限:
chmod +x start.sh
最后运行
9,验证 1,在node1,node2,node3,分别执行:
jps
zookeeper的进程已经出来了
2,在三台机器上分别执行:
zkServer.shstatus
发现三者的角色
10,停止集群 在3台机器上都执行:
zkServer.shstop
=================================
网友评论