一次zookeeper部署的问题排查
1. 部署环境
- 公司售出一套产品解决方案,需要部署,因此是在客户现场部署的。
- 客户这边提供了3台zk虚拟机(10.160.110.100,10.160.110.101,10.160.110.102)和2台solr虚拟机(10.160.110.103,10.160.110.104),都是Redhat7.6
- 本文不详细介绍zk安装部署的每一步具体操作,仅说明作者在zk部署中踩到的坑,希望对遇到该问题的读者有些许帮助;如需了解zk具体安装步骤,可参考官方文档。
2. 软件安装部署
- 我准备了从官网下载的安装包apache-zookeeper-3.5.5.tar.gz
- 安装zk之前我已安装好了JDK,这个就不多说了。
- 解压安装包apache-zookeeper-3.5.5.tar.gz,修改zoo.cfg等相关配置,然后进入bin目录下启动,然后出现了如下报错:
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
- 查询资料发现:安装包apache-zookeeper-3.5.5.tar.gz 部署zk,需要安装maven,下载zk相关依赖包,但是客户方提供的虚拟机无法联网下载;所以只能选用其他方案,然后我就准备了apache-zookeeper-3.5.5-bin.tar.gz进行部署。
备注:关于apache-zookeeper-3.5.5.tar.gz与apache-zookeeper-3.5.5-bin.tar.gz两个安装包的区别,不带bin的安装包没有zk的一些依赖包需要自行安装maven下载,带bin的安装包,已经包含zk依赖包,解压即可使用。 - 使用apache-zookeeper-3.5.5-bin.tar.gz安装包后,正常启动zk,没有报错了。但是使用zkCli.sh连接时在连接服务端过程中耗时21s~50s不等时间,因为之前部署zk的经历,发现这不太正常,所以有了后面一段时间的问题排查,见下面第3点。
3. 问题排查
3.1 客户端zkCli.sh连接慢
- 连接命令排查
- 首先我看连接命令是否有误
我进入到zk的解压包的bin目录下,输入以下命令:
./zkCli.sh -server 10.160.110.100:2181
命令无误,排除。 - 连接慢,因为我部署的是集群,3台机器,所以我想,那我在本机连接服务端也慢吗,就尝试了以下命令:
./zkCli.sh -server localhost:2181
然而,还是慢,与是否在本机执行无关。
- 查找哪个地方慢
- 虽然慢,但可以连接服务成功,发现在敲完命令回车后,出现
Connecting to localhost:2181
后,要过好长时间才会出现连接成功的日志,排查是这儿慢。
3. 刚开始,虽然发现是这儿慢,但不确定是什么具体原因,所以猜测可能性有:网络慢/端口不通 ,zk集群配置有问题,防火墙问题,
- 网络慢/端口不通
ping IP,telnet IP port
都没问题 - 防火墙问题
firewall-cmd --list-all
发现防火墙 not running - zk集群配置有问题
检查各zk的3台主机zoo.cfg配置,确定无问题,并且把一些非必要配置项都去掉,以免错误。
排查后,均正常。
- 日志分析排查
- 一点点排除后,仍没发现问题,然后咨询同事后,在zkCli.sh加入打印日志输出,定位具体慢多少,修改zkCli.sh后,试了几次从敲命令**./zkCli.sh -server localhost:2181**,到连接服务成功,平均21s,均在这儿
Connecting to localhost:2181
卡好久。
5. 因为集群模式下,没调整一个地方,要调整3台机器,比较繁琐,然后我把zk调整为单机模式进行部署验证,也正好作为之前集群模式下配置有无问题的验证。
- 单机模式下验证
- 拿其中一台部署zk成单机模式,然后仍然使用命令**./zkCli.sh -server localhost:2181**,也是慢。到此我没想到什么好办法了,想着先放一下,只是慢没有报错,等其他应用(有好多其他应用也待部署)都部署完了再解决。然后就遇到下面3.2的报错。
3.2 solr上传配置到zk连接超时
- solr部署是2台,要把配置文件上传到zk进行管理,然后使用solr中依赖的zkCLI类上传,报连接超时,如下:
java.util.concurrent.TimeoutException: Could not connect to ZooKeeper within 30000 ms
这就影响到了solr的部署,从报错来看是zk的问题,此时我就不得不先解决zk的错误了。
2. 我在既然超时,那能不能我这个超时时间调大一些了,那这样是不是就能连接上了呢,看来是我想的太好了,光是找在哪里修改这个超时时间就是个大问题,并且我们在客户现场,无法进行debug一步步调整排查,只能暂时跳过这个方案了。
3. 后来实在没办法,我请教架构师,然后他听了我的描述后,猜测是也是防火墙等网络的问题,但是我都排查过了,是正常的。他就教我看下/var/logs/messages的日志,部分如下:
May 18 18:53:00 mgmt avahi-daemon[8691]: Registering HINFO recordwith values ‘X86_64’/‘LINUX’.
May 18 18:53:20 mgmt avahi-daemon[8691]: Server startup complete. Host name is mgmt-111.local. Local service cookie is 4037191848.
May 18 18:53:20 mgmt avahi-daemon[8691]: Withdrawing workstation service for virbr0-nic.
May 18 18:53:20 mgmt avahi-daemon[8691]: Withdrawing
address record for 10.160.110.100 on virbr0.
May 18 18:53:20 mgmt avahi-daemon[8691]: Withdrawing workstation service for virbr0.
May 18 18:53:20 mgmt avahi-daemon[8691]: Withdrawing address record for 10.160.110.100 on ens33.
May 18 18:53:20 mgmt avahi-daemon[8691]: Withdrawing workstation service for ens33.
May 18 18:53:20 mgmt avahi-daemon[8691]: Withdrawing workstation service for lo.
May 18 18:53:20 mgmt avahi-daemon[8691]: Host name conflict, retrying with VMRH76.
- 看日志发现主机名存在冲突,这是怎么回事呢?查询资料后,发现可能是需要设置/etc/hosts,抱着试一试的心态配置。
在vi /etc/hosts,后面加如下:
127.0.0.1 localhost
::1 localhost
在zk单机模式下的那台机器配置后,果然连接服务端秒出,然后基本可以确定这样配置可以解决问题了,但是到底是什么原因导致,仍然不太清楚。
5. 故搜索下怎样查看主机名,然后用hostname命令查看显示主机名为VMRH76,并且solr/zk所有主机都是这个主机名,至此基本确定就是该原因了。主机名冲突,导致ip寻址解析慢。
6. 这只是zk单机模式下的尝试,然后我把zk改成了集群模式,并在这3台机器上都配置了本节第4点内容,然后集群正常,但是从solr上传文件到zk时,仍然报连接超时,然后想到了,在/etc/hosts里配置的只是本机IP4和IP6,如果需要不同主机间可以访问,应该还要配置被访问主机IP和主机名。至此,解决方案基本就定下来了。
4. 问题与解决方案
问题
主机名重复,不同主机间无法通过主机名寻址,需要从DNS解析,导致网络慢
解决方案
修改主机名分别为不同,然后在/etc/hosts分别配置被访问主机的IP和对应主机名。
具体步骤
修改主机名(永久)
- hostname命令修改主机名
hostname 【new-hostname】 - 修改/etc/sysconfig/network配置文件
修改后文件如下:
NETWORKING=yes
HOSTNAME=new-hostname - 修改本机域名解析文件/etc/hosts,使本机应用能解析新主机名。
127.0.0.1 localhost
::1 localhost
10.160.110.100 zk1
10.160.110.101 zk2
10.160.110.102 zk3
10.160.110.103 solr1
10.160.110.104 solr2
5. 总结
当zk客户端连接服务端慢时,
或当报错 Could not connect to ZooKeeper within 30000 ms时,
或当日志出现 Host name conflict, retrying with XXXX.时,
可以往防火墙,主机名和域名解析方向排查。
更多推荐
所有评论(0)