Bha*_*rat 5 amazon-ec2 amazon-web-services apache-zookeeper
我是zookeeper的新手,并且是EC2.我想在3个ec2实例上安装zookeeper.
根据zookeeper文档,我在所有3个实例上安装了zookeeper,创建了zoo.conf并添加了以下配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
clientPort=2181
server.1=localhost:2888:3888
server.2=<public ip of ec2 instance 2>:2889:3889
server.3=<public ip of ec2 instance 3>:2890:3890
Run Code Online (Sandbox Code Playgroud)
我也/opt/zookeeper/data/myid
按照指南在所有3个实例上创建了myid文件.
我有几个问题如下:
每当我在每个实例上启动zookeeper服务器时,它将以独立模式启动.(根据日志)
以上配置真的可以相互连接吗?港口2889:3889和2890:38900 - 这些港口的全部内容.我可以在ec2机器上配置它还是需要给它一些其他端口?
我是否需要创建安全组才能打开这些连接?我不知道如何在ec2实例中做到这一点.
如何确认所有3个zookeeper已经启动并且可以相互通信?
kuu*_*ujo 10
ZooKeeper配置旨在使您无需修改即可在群集中的所有服务器上安装完全相同的配置文件.这使得操作更简单.指定本地节点配置的组件是myid文件.
您定义的配置不是可以在所有服务器之间共享的配置.服务器列表中的所有服务器都应绑定到网络中其他节点可访问的专用IP地址.您看到您的服务器以独立模式启动,因为您绑定到localhost.所以,问题是集群中的其他服务器无法看到localhost.
您的配置应该更像:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
clientPort=2181
server.1=<private ip of ec2 instance 1>:2888:3888
server.2=<private ip of ec2 instance 2>:2888:3888
server.3=<private ip of ec2 instance 3>:2888:3888
Run Code Online (Sandbox Code Playgroud)
每个服务器定义中列出的两个端口分别是ZooKeeper节点在内部相互通信所使用的仲裁和选举端口.通常不需要修改这些端口,您应该尝试在服务器之间保持相同以保持一致性.
另外,正如我所说,您应该能够跨所有实例共享完全相同的配置文件.唯一需要改变的是myid文件.
您可能需要创建一个安全组并打开客户端端口以供客户端使用,以及其他ZooKeeper服务器可以访问的仲裁/选举端口.
最后,您可能希望查看UI以帮助管理群集.Netflix提供了一个不错的用户界面,它可以为您提供集群视图,还可以帮助清理旧日志并将快照存储到S3(ZooKeeper可以拍摄快照,但不会删除旧的事务日志,因此如果它们存在,您的磁盘最终会填满没有正确删除).但是一旦配置正确,您应该能够看到ZooKeeper服务器也在日志中相互连接.
编辑
@czerasz指出,从版本3.4.0开始,您可以使用autopurge.snapRetainCount和autopurge.purgeInterval指令来保持快照清洁.
@chomp指出,一些用户不得不使用0.0.0.0本地服务器IP来使ZooKeeper配置在EC2上运行.换句话说,在配置文件中替换<private ip of ec2 instance 1>为.这与ZooKeeper配置文件的设计方式相反,但在EC2上可能是必需的.0.0.0.0instance 1
| 归档时间: |
|
| 查看次数: |
8876 次 |
| 最近记录: |