ACVIP 部署问题
前置条件
解决 ACVIP 部署问题时,请先按照以下内容确认您的环境:
数据库时间和 ACVIP 机器时间需要一致,否则无法部署完成。
查看机器时间
命令如下:
date -R
查看数据库时间
获取 DB 连接。
env | grep data
连接数据库。
mysql -h<hostname> -u<username> -p<passwd> -P <port> -D <DB 链接>
查看数据库时间。
select now()
数据库版本不能为 MySQL 8 。
/etc/hosts
文件中需要有 IPv4 地址和 hostname 的映射配置。
ACVIP 部署不到终态
排查步骤如下:
查看启动日志
/home/admin/logs/acvip/Startup.log
。图中日志说明 domain 加载失败,需要确认发布失败的原因。
查询
antvip_vip_domain
。查询命令如下:
select * from antvip_vip_domain
查找是否有步骤 1 中加载失败的域名,且 enable 是否为 1,为 1 则继续下面的步骤。
查询是否存在有效节点。
查询命令如下:
select * from antvip_real_node where domain_id=4
确认节点是否存活,如果有不正常的节点,进行处理。如果都正常,继续进行下面的步骤。因为 ACVIP 有多个节点时,会有数据分组,这个 domain 可能是其他的 ACVIP 在进行加载。
查询其他 ACVIP 节点。
查询命令如下:
select * from antvip_vip_server
心跳时间(last_heartbeat)和当前时间相近的是活跃节点,需要测试当前服务器和这些服务器是否建立连接。
确认网络连通性。
命令如下:
netstat -anlp | grep 12200
查看 ACVIP 的 12200 端口是否有正常的通讯,有则表示网络正常,建议联系售后技术支持进行排查;如果没有通讯,则说明网络出现故障,建议检查网络问题。
使用问题
获取不到域名信息如何处理?
使用 curl
命令尝试获取域名信息,获取命令如下:
curl -i -XPOST {acvip地址}:9003/antcloud/antvip/instances/get -d '{"vipDomainName2ChecksumMap":{"000001-DSR_CLOUD":"N"}}'
长连接 Long Polling 命令示例如下:
curl -i -XPOST localhost:9003/antcloud/antvip/instances/get -d '{"vipDomainName2ChecksumMap":{"000001-DSR_CLOUD":"N"},"allowPolling":true}'
查询到结果,说明 ACVIP 服务正常,请检查本地 ACVIP 配置。
执行
cd /home/admin/conf/acvip-java-client-cache/domains/
命令,查看本地缓存中是否有目标域名信息,并查看获取的时间信息。如果获取信息失败,查看
api-stat.log
是否有报错。cd /home/admin/logs/acvip-java-client cat api-stat.log
根据查询的报错信息进行处理。
您可以查询指定时段的 Java 客户端拉取记录,命令如下:
tail -n 500 acvip-default.log.2021-05-12 | grep java
日志格式如下:
如果查询到的结果是空,需要到 ACVIP 服务端增加域名配置。
如果网络报错,确认 ACVIP 服务器地址配置是否正确。
如何查看客户端的请求内容?
您可以在 ACVIP 上执行如下命令查看:
tcpdump port 9003 and host <对端 IP> -nnvvXS