在群集 01 上:

在群集 01 上:

我是集群新手...我们使用在 CentOS 服务器上运行的 Tomcat 应用程序。

仅使用 2 台服务器是否可以实现负载平衡?主动/主动集群。我知道使用 HAProxy 可以实现,但在这种情况下,我们必须添加第三台服务器。

我是否可以使用我的 2 台 CentOS 服务器创建集群架构并使用虚拟 IP 来连接我的两台服务器?

谢谢

答案1

至于术语,我不会将大多数负载均衡器称为集群。与集群不同,它们背后的主机可以非常独立。

负载均衡器可以位于一台或多台主机前面。是的,所有后端主机都可以处于活动状态。两个或更多主机可实现高可用性。

在许多设计中,负载均衡器是唯一需要虚拟 IP(又称服务地址)的组件。它将选择一个主机并转发要服务的请求。

您可能需要至少 3 个虚拟机,一个用于负载均衡器,两个用于后端主机来处理请求。数量和规格需要根据您的高可用性和性能要求进行设计。例如,您可以将负载均衡器设为高可用性虚拟机或使用硬件设备。

您的应用程序是否需要共享状态(数据库)以及如何实现它是另一个话题。

答案2

我们想要做与您同样的事情:为两台服务器分配一个虚拟 IP。

我们在 CentOS 7 上运行。

因此我们这样做:

  • 集群01:10.10.10.11
  • 集群02:10.10.10.12
  • 虚拟IP:10.10.10.10

在群集 01 上:

iptables -I INPUT -i ens160 -d 10.10.10.10 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5E:00:00:20 --total-nodes 2 --local-node 1
ip addr add 10.10.10.10/24 dev ens160

在群集 02 上:

iptables -I INPUT -d 10.66.66.10 -i ens160  -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5E:00:00:20 --total-nodes 2 --local-node 2
ip addr add 10.10.10.10/24 dev ens160

我们可以 ping 通 VirtualIP(但只能从 Cluster01 和 Cluster02 ping)。我们在 arp 缓存中手动添加硬件地址:

arp -i ens160 -s 10.10.10.10 01:00:5E:00:00:20 

iptables -L -n -v

Chain INPUT (policy ACCEPT 2221 packets, 151K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CLUSTERIP  all  --  ens160 *       0.0.0.0/0            10.10.10.10          CLUSTERIP hashmode=sourceip clustermac=01:00:5E:00:00:20 total_nodes=2 local_node=2 hash_init=0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1536 packets, 1412K bytes)
 pkts bytes target     prot opt in     out     source               destination

在两台服务器上我们都有文件/proc/net/ipt_CLUSTERIP/10.66.66.10

从我的工作站,我可以访问 Cluster01、Cluster02 和 VirtualIP 上的网页。但负载平衡不起作用……只有同一台服务器会应答……

答案3

我有点难过,因为我们可以在 Windows 上做到这一点,但不能在 Linux 上做到这一点:/(使用 NLB)

使用 CLUSTERIP 无法做到这一点吗?

相关内容