zookeeper安装配置
- 官网下载链接2018-5-10 15:18:02最新版:
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
单机版
请在安装前关闭防火墙,否则会有一些预想不到的错误
CentOS 7.0默认使用的是firewall作为防火墙。关闭firewall
- systemctl stop firewalld.service #停止firewall
- systemctl disable firewalld.service #禁止firewall开机启动
- firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
如果你是使用的阿里云的服务器或者是腾讯云的服务器请配置安全组规则
解压zookeeper安装包
tar -zxvf zookeeper-3.4.6.tar.gz
然后进去解压包在,在根目录创建创建data文件夹
mkdir data
**将 zookeeper-3.4.6/conf 目录下的 zoo_sample.cfg 文件改名,命名为zoo.cfg **
mv ./zoo_sample.cfg ./zoo.cfg
进入zoo.cfg文件修改dataDir的值为刚才在根目录创建的data文件夹所在的绝对路径
在新增一行 server.1=39.106.159.250:2888:3888
其中2888 端口号是 zookeeper服务之间通信的端口 3888 是 zookeeper与其他应用程序通信的端口
server.A=B:C:D:其中 A是一个数字,表示这个是第几号服务器;B是这个服务器的IP 地址或/etc/hosts 文件中映射了IP 的主机名;C 表示的是这个服务器与集群中的Leader 服务器交换信息的端口;D 表示的是万一集群中的Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于B 都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给它们分配不同的端口号。
在刚才创建的data目录下在建立一个文件vi myid
文件内容对应server.后的数字 我们这里就写1
进入zookeeper的bin目录启动zookeeper执行命令
zkServer.sh start
**输入jps 命令查看进程 **
$jps
1456 QuorumPeerMain
1475 Jps
查看状态
zkServer.sh status
停止zookeeper进程
zkServer.sh stop
单机伪集群版
注意事项
在一台机器上部署了3个server,需要注意的是在集群为分布式模式下我们使用的每个配置文档模拟一台机器,也就是说单台机器及上运行多个Zookeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例
- clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183
- dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的
- server.X和myid: server.X 这个数字就是对应,data/myid中的数字。在3个server的myid文件中分别写入了0,1,2,那么每个server中的zoo.cfg都配 server.0 server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突
如果上图中的server的IP填写的是外网IP,在启动zookeeper后,查看状态时会报错如下:
- zookeeper Error contacting service. It is probably not running.
具体原因我也不太清楚,如果有知道的朋友,看到此文章后麻烦私信告知。感激不尽