Kar*_*ell 8 domain-name-system ubuntu failover high-availability hetzner
假设我们有两个服务器 A 和 B,具有“真实”和外部 IP,我们可以切换所谓的“故障转移 ip”(WXYZ)以指向 A 或 B 的特定外部 IP。这从“外部”工作并且是轻松完成。作为背景:故障转移 ip 配置为 /etc/network/interfaces 中的新条目:
auto eth0:0
iface eth0:0 inet static
address W.X.Y.Z
netmask 255.255.255.224
Run Code Online (Sandbox Code Playgroud)
现在让我们假设 WXYZ 被动态配置为使用硬件 A。现在我从 B 调用'curl domain.com',它使用正确的故障转移 ip WXYZ 但然后以某种方式解析到错误的外部 IP B(或本地主机?)而不是使用配置的一个A:
Trying W.X.Y.Z ...
* connect to W.X.Y.Z 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
Run Code Online (Sandbox Code Playgroud)
当我启动本地 nginx 时,它可以成功 curl domain.com
我需要以某种方式在本地配置 DNS 吗?如何了解有关 DNS 链的更多信息?
如果从服务器 B 尝试此操作,则使用mtr只会打印 domain.com
这与这个问题有关吗?
The failover IP is W.X.Y.Z 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 W.X.Y.Z
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 W.X.Y.Z
netmask 255.255.255.224
Run Code Online (Sandbox Code Playgroud)
gf_*_*gf_ 11
正如所承诺的,这是我的答案:
完全披露:我不是为 Hetzner 工作,而是在过去和现在为不同的公司工作,这些公司曾经在 Hetzner 托管硬件。
如果您的个人资料中的位置正确,并且您需要支持:我在同一个城市,可以提供一两个帮助。
对于所有从未与 Hetzner 打交道的人:他们正在过滤网络访问等,这意味着,特别是关于他们的故障转移 IP(可在不同机器上使用以提供某种高可用性的 IP),他们正在发送流量将特定 IP 定向到特定 MAC。
如果一个人想改变目标(机器)流量被定向到,一个已到发送的POST到一个请求API,其经由供应HTTPS。然后 API 验证身份验证(用户名和相应的密码)和请求,如果有效,则将此新配置传播到网络中的各种路由器。这种技术类似于总部位于法国的大型供应商 OVH 使用的技术。
auto eth0:0, 将eth0:0在网络启动后立即在界面上设置您的故障转移 IP ,通常是在启动时。你有两台机器,配置相同,所以这会导致相同的 IP 在两台不同的机器上处于活动状态(这不是不行,但会导致你目前正在处理的情况)。请注意:您正在使用的语法,多次为同一个接口设置别名,已被弃用(但仍然有效)。Debian wiki(此链接)中也描述了“新方式”,它只是将多个 IP 分配给一个接口。curl在您的测试用例中执行以下操作:它将给定的域名解析为一个 IP,然后尝试在端口 443 上连接到该 IP。因为该 IP 在任何情况下都是在本地分配的,因此可以访问,因此数据包永远不会发送到网络。如果nginx(就像在您的测试用例中一样)此时不在本地运行,您只是连接被拒绝,这是完全正确且有效的:“IP 是本地的,所以让我们将流量发送到那里”。它永远不会将数据包发送到某个路由器,该路由器可能包含以下信息:“指向该 IP 的流量应该流向该机器”。auto eth0:0(但留下的其余配置eth0:0到位)的/etc/network/interfaces。这样做,不会将 IP 分配给机器。这样做将是您的任务(脚本的任务),它确实ifup eth0:0(并且可能再次与 API 对话以确保流量被路由到正确的机器)。| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |