2.2 设计的目的
1. 最终一致性: client 不论连接到哪个 Server, 展示给它的都是同一个视图, 这是 Zookeeper 最重要的特性
2. 可靠性: 具有简单, 简装, 良好的性能, 如果消息 m 被发送到一台服务器并接受, 那么它将被所有的服务器接受
3. 实时性: Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的更新信息, 或者服务器试失效的信息. 但由于网络延时等原因, Zookeeper 不能保证两个客户端能同时得到刚刚更新的数据, 如果需要最新数据, 应该 i 在读取数据之前调用 sync() 接口
4. 等待无关 (wait-free): 慢的或者失效的 client 不得干预快速的 client 的请求, 使得每个 client 都能有效的等待
5. 原子性: 额更新只能成功或者失败, 没有中间状态
6. 顺序性: 包括全局有序和偏序两种: 全局有序是指如果在一台服务器上消息 a 在消息 b 发布前, 则在所有 Server 上消息 a 都将在消息 b 前辈发布: 偏序是指如果一个消息 b 在消息 a 后被同一个发送者发布, a 必将排在 b 前面,
2.3 集群安装
我们本次安装的集群是伪集群, 也就是在一台 Linux 上搭建, 根真实的集群的原理都是一样的, 性能好的话, 有三台服务器, 也可以在不同的服务器上进行实验!
使用 3 个 Zookeeper 应用搭建一个伪集群. 应用部署的位置是: ip 地址. 服务器监听的端口分别为:
2181,2182,2183. 投票选举端口分别为 1881/3881,1883/3883,1883/3883
2.3.1 准备步骤
还是要提醒: 先大略的看完所有步骤, 然后在继续你的操作!!
首先创建了一个文件夹, 用于管理存放所有的伪集群
mkdir zookeeperCluster
然后解压一个 Zookeeper 并复制到这个目录 例如:
tar -zxvf zookeeper-3.4-6 - C /usr/local/soft/zookeeperCluster
然后我们给它改一个名字
mv zookeeper-3.4.6 zookeeper01 也就是第一个 Zookeeper
2.3.1 提供数据缓存目录
我们在第一个 Zookeeper01 里面创建这个
mkdir data
2.3.2 修改配置文件 zoo.cfg
首先到 Zookeeper01 的 conf 目录
然后把 zoo_sample.cfg 改名为 zoo.cfg
mv zoo_sample.cfg zoo.cfg
然后进去编辑
vi zoo.cfg
*
需要注意: 当我们在修改配置文件 zoo.cfg 设置访问, 投票, 选举端口的时候 要如下这样设置, 相信你认真看完前边的图文会很清晰的知道思路的!
server.1=Zookeeper 所在的 ip 地址: 2881:3881
server.2=Zookeeper 所在的 ip 地址: 2882:3882
server.3=Zookeeper 所在的 ip 地址: 2883:3883
*
2.3.3 提供 Zookeeper 的唯一标识
在 Zookeeper 集群中, 每个节点需要一个唯一标识. 这个唯一标识要求是自然数, 且唯一标识保存位置是:$dataDir/myid . 其中 dataDir 为配置文件 zoo.cfg 中配置参数的 data 数据缓存目录
接下来, 我们在 data 数据缓存目录创建文件: myid touch myid 然后编辑这个文件添加一个标识数字比如: vi myid 比如这是在第一个 Zookeeper 里面就那就添加一个 1.
简化方式写法: echo[唯一标识]>>myid . echo 命令为回声命令, 系统会讲命令发送的数据返回.">>" 为定位, 代表系统回声数据指定发送到什么位置. 此命令代表系统回声数据发送到 myid 文件里面. 如果没有这个文件则创建文件
例如: echo 1>>myid
这样第一个 Zookeeper 集群的第一个 Zookeeper 节点就已经配置完毕了, 还剩其余两个,
那么我们就可以直接复制 Zookeeper01 然后分别复制为 Zookeeper02 和 Zookeeper03
2.3.4 最终配置
之后我们分别进入 Zookeeper01 和 Zookeeper02 里面的 conf/zoo.cfg 文件, 然后进行编辑, 我们只需要把 clientPort 端口号改变还有 dataDir 数据缓存地址改变为本集群节点即可, 最后一步, 在给这两个集群分别创建一个 Zookeeper 的唯一标识, 按照上面的方法, 分别为 2 ,3(这个其实是可以随意的, 只要别重复即可)
2.3.5 启动 ZooKeeper 集群应用
分别进入 zookeeper01,zookeeper02,zookeeper03 的 bin 目录, 然后输入
./zkServer.sh start 启动他们
ZooKeeper 集群搭建后, 至少需要启动两个集群节点应用才能提供服务. 因需要选出主服务节点. 启动所有的 ZooKeeper 节点后, 可以使用命令在 bin 目录下,
./zkServer.sh status 来查看节点状态
如下:
Mode:leader 主机
Model:follower - 备用机
2.3.6 关闭 ZooKeeper 应用
还是在 bin 目录下
./zkServer.sh stop
来源: https://www.cnblogs.com/arebirth/p/zookeeperintrins.html