ZooKeeper 集群搭建
2018-03-15 10:04
197 查看
目录
目录zk
集群介绍
下载安装
server1配置
启动集群
检查集群是否搭建成功
防火墙配置
zk
zk本来是大数据这边的一个技术,解决服务与服务之间的协调工作.近年来各种集群涌现.集群每个节点之间的协调工作就成了一个问题.比如dubbo,kafka这些.这篇主要介绍zk集群的搭建.单节点参照我之前写过博客 : http://blog.csdn.net/shangmingtao/article/details/78008016集群介绍
zk集群有个特点,半数以上节点存活整个集群就能正常提供服务.举个栗子:
集群节点数为3个 : 一个leader两个follower,leader宕机会在两个follower中选一个作为新leader.集群可用
集群节点数为4个: 一个leader三个follower,leader宕机了,三个follower中的一个也宕机了.集群就不可用了(这里宕机了两台机器,剩下两台可用机器.不满足”以上”条件)
今天我们用三台机器搭建集群
server1:192.168.1.3
server2:192.168.1.5
server3:192.168.1.9
下载安装
下载地址(官方) :http://mirror.bit.edu.cn/apache/zookeeper/cd /usr/local/ tar -xzvf zookeeper-3.4.6.tar.gz cd zookeeper-3.4.6 mkdir data mkdir logs cd conf/ cp zoo_sample.cfg zoo.cfg vi zoo.cfg
server1配置
zoo.cfg:tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper-3.4.6/data #数据目录,需要自己提前建好 dataLogDir=/usr/local/zookeeper-3.4.6/logs #日志目录,也需要自己提前建好 clientPort=2181 server.1=192.168.1.3:2888:3888 #这里的1下边讲是怎么来的 server.2=192.168.1.5:2888:3888 server.3=192.168.1.9:2888:3888
配置本机id
cd /usr/local/zookeeper-3.4.6/data #zoo.cfg中的dataDir echo "1" > myid #这里的"1"代表本机id,如果本机是192.168.1.5那就应该是"2" > myid
启动集群
这里我为了省事没有配置环境变量,大家有需要还是到我写的第一篇去找怎么配吧.cd /usr/local/zookeeper-3.4.6/bin ./zkServer.sh start #启动 ./zkServer.sh stop #停止 ./zkServer.sh status #查询节点状态
检查集群是否搭建成功
通过./zkServer.sh status命令我们可以看到如下信息
leader :
[root@yqtpro60 bin]# ./zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: leader
follower:
[root@template bin]# ./zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: follower
防火墙配置
这里防火墙我们要开启三个端口分别是:2181 : 客户端访问zk server的端口
2888 : zk节点与节点间互访的端口
3888 : zk与其他应用程序通讯端口
配置方法 :
Step 1 :
vi /etc/sysconfig/iptables
Step 2 : 添加如下三行
-A INPUT -s 192.168.1.6/24 -p tcp -m tcp --dport 2888 -j ACCEPT -A INPUT -s 192.168.1.6/24 -p tcp -m tcp --dport 3888 -j ACCEPT -A INPUT -s 192.168.1.6/24 -p tcp -m tcp --dport 2181 -j ACCEPT -A INPUT -s 127.0.0.1/32 -j ACCEPT #这条太关键了,下边讲
Step 3 :
service iptables restart
经过如上配置我们现在允许所有192.168.1.*的机器对本机的2181,2888,3888端口的访问,同时允许本机所有访问.大家注意啊,这是一个内网配置方案 , 如果需要外网访问需要放行外网ip为源地址包.大家自行配置.
最后说下
-A INPUT -s 127.0.0.1/32 -j ACCEPT为什么重要.昨天我在配置集群时候发现其中一台机器不论如何执行
./zkServer.sh status都不能正常输入结果.输出的信心如下:
[root@template bin]# ./zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Error contacting service. It is probably not running.
通过查看bin目录下的
zookeeper.out日志输出文件发现有这样两行
2018-03-15 09:55:04,384 [myid:1] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@197] - Accepted socket connection from /127.0.0.1:53084 2018-03-15 09:55:04,386 [myid:1] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@827] - Processing srvr command from /127.0.0.1:53084 2018-03-15 09:55:04,388 [myid:1] - INFO [Thread-17:NIOServerCnxn@1007] - Closed socket connection for client /127.0.0.1:53084 (no session established for client)
这个问题也是折腾了我两个多小时(有点尴尬),当我们通过
./zkServer.sh status查看节点状态时,我们发起一个源ip为:127.0.0.1 源port:53084 目的ip:127.0.0.1 目的port:2181的tcp连接.那如果我们不配置
-A INPUT -s 127.0.0.1/32 -j ACCEPT,这样的包是过去防火墙的.所以最终导致
Error contacting service. It is probably not running.但即便如此我们的集群工作是正常的.只是
./zkServer.sh status的命令执行出现了问题.
相关文章推荐
- zookeeper手把手搭建伪分布集群环境
- Spark集群基于Zookeeper的HA搭建部署
- 超详细zookeeper集群搭建及解析说明
- Centos-7.2 下搭建 Zookeeper-3.5.3 集群的搭建与测试
- kafka集群搭建(使用外部zookeeper集群环境方式)
- zookeeper伪集群搭建
- docker搭建zookeeper集群
- zookeeper3.4.8伪集群的搭建
- Kafka集群搭建(使用kafka自带的zookeeper)
- ZooKeeper集群搭建
- Zookeeper与Kafka集群搭建
- 搭建ZooKeeper服务器集群
- hadoop+hbase+zookeeper 分布式集群搭建 + eclipse远程连接hdfs 完美运行
- zookeeper初探二 windows环境搭建伪集群
- CentOS环境搭建zookeeper集群篇
- 搭建zookeeper集群
- Kafka集群搭建01-Zookeeper 集群部署
- 基于zookeeper+leveldb搭建activemq集群
- ELK+zookeeper+kafka+rsyslog集群搭建
- 搭建Zookeeper服务器集群