gpt4 book ai didi

具有持久 TCP 服务器套接字的 Java 应用程序高可用性/故障转移

转载 作者:可可西里 更新时间:2023-11-01 02:44:11 25 4
gpt4 key购买 nike

我正在尝试找出正确的部分来为基于 Java 的服务器应用程序 (netty) 实现高可用性和故障转移设置。理想情况下,TCP 连接会持续数月甚至数年(它们用于服务器到服务器的通信),并且只有在远程服务器断开连接或由于不受控制的网络问题时才需要关闭。目标是没有任何单点故障。

套接字连接中的数据看起来与 protobuf 数据结构非常相似。这不是 HTTP。

到目前为止,我一直在研究 keepalived 和 HAProxy,但它们似乎都不允许在不断开前端 session 的情况下将持久 TCP session 重定向/故障转移到不同的后端服务器。

我想弄清楚的是在 FE1 和 BE1 系统上运行什么,如下所示;

        |        VIP         |
+----+----+ +----+----+
| FE1 | <-VRRP-> | FE2 |
+----+----+ +----+----+
| |
| |
------+---+------------+---+----------
| |
+---+---+ +---+---+
| BE1A | | BE1B |
+---+---+ +---+---+
| |
+------------+
| |
| |
+---+---+ +---+---+
| BE2A | | BE2B |
+---+---+ +---+---+

外部服务器通过 VIP 连接到 Activity 前端 (FE) 系统,然后建立到 Activity 后端 1 (BE1) 系统的 TCP 连接。或者如果 TCP 代理这样做;连接到两个 BE1 系统,并将流量发送到一个系统。

BE1 服务器运行自定义 Java 应用程序,该应用程序处理确保请求和响应最终到达适当的 BE2 系统。如果需要,可以以任何方式修改它以处理来自 FE 服务器的连接/流。

我正在寻找的是,如果其中一个 BE1 系统出现故障(有意或无意),FE 服务器会重定向/重新建立与另一个 BE1 系统的连接,而不会断开与外部 VIP 的连接远程服务器。即,持久 TCP 连接的透明故障转移。

如前所述,我查看了 keepalived/HAProxy,据我所知它们无法正常工作 - 除非我错过了一个可能起到作用的插件/模组。

什么可以运行在 FE 层上,有哪些选项?或者是否有可以在 BE1 层上运行的东西可以处理故障转移并通知 java 套接字在备用系统上被移动/恢复(即 LVS 或 tcpcp 可以与 java 一起使用 - 我没有找到太多谈论它)。

谢谢!

最佳答案

我正在尝试实现这些,我已经看到这些方法与 Websphere MQ 一起工作,您可以在其中将应用程序添加到故障转移 Controller 。优点是:

  • 您只知道一个 IP 地址
  • 您不必在客户端上编写切换代码

最好的问候。莱昂内尔多斯安霍斯

关于具有持久 TCP 服务器套接字的 Java 应用程序高可用性/故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20153684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com