Zookeeper的安装和运维(一)
背景
最近发现了zookeeper开启全局的一个端口(绑定全部网卡),经过排查发现是JMX端口,所以这里总结一下,zookeeper的正确安装方法,以及谈一下运维安全。
zookeeper是什么
zookeeper简称zk, 是用来解决分布式协同问题的一个工具,分布式协同问题主要有:
1.数据一致性;2.节点高可用;3.网络分区等
它常见的功能有:
1.节点管理; 2.配置文件管理;3.分布式锁;4.集群管理;5.发布和订阅
zookeeper的安装
详见参考1
# 下载wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
# 解压
tar -zxvf zookeeper-3.4.6.tar.gz
# 修改配置文件
cd zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
## 增加以下内容
#客户端访问zk的端口
clientPort=2181
clientPortAddress=127.0.0.1
#master对应于前面在hosts里面配置的主机映射 2888是数据同步和消息传递端口,3888是选举端口
server.1=master:2888:3888
#master对应于前面在hosts里面配置的主机映射 2889是数据同步和消息传递端口,3889是选举端口
server.2=master:2888:3888
#master对应于前面在hosts里面配置的主机映射 2890是数据同步和消息传递端口,3890是选举端口
server.3=master:2888:3888
注意:
- 上述配置文件需自行根据实际情况修改, 例如clientPortAddress最好绑定为内网的网卡地址,避免外网访问
- 如果是standalone模式,非集群部署(集群部署一般是三台或者五台等奇数台),则不需要配置server.1/server.2等
zookeeper开启的端口
按照网上的说法,一般是默认打开三个端口:
- 2181: 对cline端提供服务
- 2888: zk集群内同步和消息传递端口
- 3888:zk选举过程中,给其它zk跟随者连接使用
但是实际上安装后,发现zookeeper还会多开启一个JMX端口,用作远程调试,这个是随机的端口号,每次启动都不一样。
下面的命令可以自行查询 zookeeper占用的所有端口
ps -ef | grep zookeepernetstat -antlp | grep -w ${pid}
运维安全
每一个端口都对应一个服务,如果端口绑定的是全部网卡的话,则说明服务对外可以访问,如果该服务是有0-day漏洞的,则外面的黑客可以通过该端口访问到该服务,利用服务的漏洞,渗透到主机。因此,定期检查global的端口,并关闭不必要的端口显得尤为重要。
查看zookeeper开启的端口, 如下 第一行
tcp6 0 0 :::60547 :::* LISTEN 30147/java tcp6 0 0 192.168.1.5:2181 :::* LISTEN 30147/java
如需关闭,需要修改bin目录下的zkServer.sh文件
找到第46行
if [ "x$JMXDISABLE" = "x" ] || [ "$JMXDISABLE" = "false" ]
修改为
if [ 1 = 2 ]
相当于强制为false,不走打开jmx端口的逻辑
最后重启
./zkServer restart
重新查看开启的端口,发现绑在全部网卡上的随机端口消失了。
参考
https://www.cnblogs.com/leeSmall/p/9563547.html
以上是 Zookeeper的安装和运维(一) 的全部内容, 来源链接: utcz.com/z/517477.html