假设我们有两个服务器A和B,它们具有“真实”和外部IP,我们可以将所谓的“故障转移IP” (WXYZ)转换为指向A或B的特定外部IP。这是从“外部”轻松完成。 作为后台:故障转移IP在/ etc / network / interfaces中configuration为新条目:
auto eth0:0 iface eth0:0 inet static address WXYZ netmask 255.255.255.224
现在让我们假设WXYZ被dynamicconfiguration为使用硬件A.现在我从B调用'curl domain.com',它使用正确的故障转移IP WXYZ,但是以某种方式解决了错误的外部IP B(或本地主机?),而不是使用configuration的一个A:
Trying WXYZ ... * connect to WXYZ port 443 failed: Connection refused * Failed to connect to domain.com port 443: Connection refused * Closing connection 0 curl: (7) Failed to connect to domain.com port 443: Connection refused
当我启动本地nginx时,它可以成功地curl domain.com
我需要以某种方式在本地configurationDNS吗? 我怎样才能find关于DNS链的更多信息?
如果从服务器B尝试使用mtr,则只需打印domain.com
这与这个问题有关吗?
The failover IP is WXYZ and is also the A record of domain.com The /etc/hosts file for both nodes serverA and serverB looks like: 127.0.0.1 localhost 127.0.1.1 luminarhost xxx serverA xxx serverB The /etc/network/interfaces of serverA ### Hetzner Online AG - installimage # Loopback device: auto lo iface lo inet loopback # device: eth0 auto eth0 iface eth0 inet static address xxx broadcast xxx netmask xxx gateway xxx # default route to access subnet up route add -net xxx netmask 255.255.255.224 gw xxx eth0 iface eth0 inet6 static address xxx netmask xxx gateway xxx # failover ip auto eth0:0 iface eth0:0 inet static address WXYZ netmask 255.255.255.224 and of serverB it is: ### Hetzner Online AG - installimage # Loopback device: auto lo iface lo inet loopback # device: eth0 auto eth0 iface eth0 inet static address xxx broadcast xxx netmask xxx gateway xxx # default route to access subnet up route add -net xxx netmask 255.255.255.192 gw xxx eth0 iface eth0 inet6 static address xxx netmask xxx gateway xxx # failover ip auto eth0:0 iface eth0:0 inet static address WXYZ netmask 255.255.255.224
按照承诺,这里是我的答案:
充分披露:我不是为Hetzner工作,而是为过去和现在的曾经在Hetzner上安装硬件的不同公司工作。
如果你的个人资料中的位置是正确的,你需要支持:我在同一个城市,可以提供一两个手。
对于所有从未处理Hetzner的人来说:他们正在过滤networking访问等,这意味着,特别是关于他们的故障转移IP (在不同的机器上可用来提供某种高可用性的IP),他们正在发送stream量针对特定的IP到特定的MAC。
如果想要改变目标(机器)的stream量,则必须向通过HTTPS提供的API发送POST请求。 然后,APIvalidation身份validation(这是一个用户名和一个相应的密码)和请求,如果有效,则将此新configuration传播到networking中的各个路由器。 这种技术与法国大型供应商OVH所使用的技术类似。
auto eth0:0将在networking启动后立即在接口eth0:0处设置您的故障转移IP,通常在启动时。 你有两台机器,具有相同的configuration,所以这导致了这种情况,相同的IP在两台不同的机器上是活动的(这不是一个不行,但是会导致你正在处理的情况)。 请注意:您使用的语法多次使用相同的接口,已被弃用 (但仍然有效)。 Debian wiki(这个链接)里面也描述了“新的方式”,这个链接只是将多个IP分配给一个接口。 curl在你的testing用例中执行以下操作:它将给定的域名parsing为一个IP,然后尝试在端口443连接到这个IP。因为这个IP在任何情况下都是在本地分配的,因此可以访问,到networking。 如果nginx (就像在你的testing用例中)在这个时候没有在本地运行,那么你只是连接被拒绝了,这是完全正确和有效的:“IP是本地的,所以让我们在那里发送stream量”。 它不会将数据包发送到某个路由器,路由器可能有这样的信息:“指向这个IP的数据stream应该到达这台机器”。 /etc/network/interfaces删除指令auto eth0:0 (但保留auto eth0:0的其余configuration)。 这样做, 不会将IP分配给机器。 这样做将是你的任务(脚本的一个任务),它做ifup eth0:0 (并且,也可以说是API,以确保stream量被路由到正确的机器)。