【问题标题】:Aerospike: How to find from any aerospike server which clients are accessing it?Aerospike:如何从任何 aerospike 服务器中找到正在访问它的客户端?
【发布时间】:2017-08-07 13:00:14
【问题描述】:

我们配置了多个客户端来与这个 aerospike 节点集群通信。现在我们已经从我们知道的所有客户端中删除了配置,仍然有一些读/写请求进入这个集群,如 AMC 中所示。

我查看了 /var/log/aerospike/aerospike.log 中生成的日志文件,但没有得到任何信息。

更新

@kporter 的回答中提到的 netstat 命令显示了连接数,状态为 ESTABLISHED、TIME_WAIT、CLOSE_WAIT 等。但这并不意味着这些连接当前正在用于获取/设置操作。如何获取当前正在执行 aerospike 操作的 IP?

更新 2(已解决)

正如@kporter 回答的 cmets 中所述,罪魁祸首客户端上的 tcpdump 命令显示数据包仍在发送到配置文件中不再引用的 aerospike 集群。发生这种情况时,即使该集群的 AMC 也没有显示更多的读/写 TPS。

我后来发现在客户端上重新启动 nginx 服务后停止了。请注意,客户端中的配置文件现在引用了一个新的 aerospike 集群,并且发送到该集群的数据包在 nginx 重新启动后没有停止。这很奇怪,但它奏效了。

【问题讨论】:

    标签: aerospike


    【解决方案1】:

    客户端通过端口 3000 连接到 Aerospike:

    以下命令在服务器节点上运行时,将显示通过端口 3000 连接到服务器的主机地址。

    netstat --tcp --numeric-ports | grep 3000
    

    【讨论】:

    • 好的,这显示了连接数,状态为 ESTABLISHED、TIME_WAIT、CLOSE_WAIT 等。但是,这并不意味着这些连接当前正在用于获取/设置操作。如何获取当前正在执行 aerospike 操作的 IP?
    • 其中一个连接是您正在寻找的 IP。您可以使用 tcpdump 来识别恶意客户端。
    • 我在其中一个客户端中运行了这个 tcpdump 命令,在 grep 中提到了服务器的 IP - sudo tcpdump -i eth0 | grep ip-10-146-210-31。尽管它仍然显示了一些具有该 IP 的条目,但 AMC 控制台现在显示零读取和写入。我仍然不相信我所观察到的,因为 tcpdump 应该不再显示这个 IP。标记仍然解决,因为我无法再查看它了。谢谢!
    • 即使 AMC 显示 TPS 为零,tcmpdump 的示例输出仍包含服务器节点的 IP - 13:09:03.859301 IP ip-10-97-204-78.ec2.internal.58368 > ip-10-146-210-31.ec2.internal.hbci: Flags [P.], seq 86:129, ack 283, win 4079, length 43
    • 后来发现在客户端重启nginx服务后,发送到集群的数据包停止了。请注意,客户端中的配置文件现在引用了一个新的 aerospike 集群,并且发送到该集群的数据包在 nginx 重新启动后没有停止。这很奇怪,但它奏效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多