Jer*_*ner 9 mdns bonjour anycast avahi
首先是一些背景知识:我们有一个实验室,其中包含一些运行在隔离 LAN 上的专用 Linux 服务器。所有服务器运行相同的操作系统 (Debian Linux) 和相同的专有服务器软件,服务器进程相互通信以保持数据同步。这意味着就任何客户端而言,客户端连接到哪个服务器并不重要——任何服务器都将返回与其他任何服务器相同的数据。
这些 Linux 服务器都运行 avahi-daemon 来为自己发布 mDNS 主机名,这意味着客户端可以输入例如“ http://linux-server-1.local”。进入他的 Web 浏览器并连接到 Linux 服务器 #1,依此类推。
这一切都很好,只是这意味着坐在客户端机器上的用户(通常是安装了 Bonjour 的 Mac 或 Windows 笔记本电脑)必须知道(或弄清楚)哪些 Linux 服务器当前在线,并且他必须确保他连接到其中之一。例如,如果服务器#2 今天离线,并且客户端输入“ http://linux-server-2.local”。进入他的网址栏,他不会得到回应。当然,这不是世界末日,但对于希望一切“正常工作”的新手用户来说,这很烦人,而且它还使健壮的客户端脚本的开发变得更加复杂(因为客户端脚本需要知道如何明确处理离线服务器)。
考虑到这一点,我的问题是:是否可以配置 Avahi 来发布任播风格的 mDNS 主机名别名?目标是任何人都可以坐在他的笔记本电脑上,输入“ http://any-linux-server.local”。(或类似的),并连接到当前在线的服务器之一(同样,哪个服务器无关紧要)。
请注意,这需要在客户端笔记本电脑没有任何特殊配置的情况下工作,因为我们无法控制它们(除了需要安装 Bonjour 之外)。
另请注意,我们不能依赖单独的名称服务器或代理框的存在,或依赖任何特定 Linux 服务器的存在,因为这会引入我们试图避免的单点故障。
小智 13
特伦特·劳埃德 (Trent Lloyd),Avahi 项目的作者之一。
这在理论上是可能的,但做起来并不容易。不幸的是,在 Avahi 中发布主机名的默认机制也发布了一个被列为独占的反向 DNS 记录。因此,如果您尝试发布指向同一 IP 的 2 个主机名,则会在反向 DNS 记录上发生冲突。
如果您使用 Avahi API 手动发布 A 记录并将其标记为非独占,则可以执行此操作。您必须用 Python、C 或类似语言为每个服务器编写一个小的后台进程。
要使用的 API 调用是 avahi_entry_group_add_record,您需要将 AVAHI_PUBLISH_ALLOW_MULTIPLE 传递到 flags 字段中。这应该可以工作。
另一种方法是以预期的方式使用服务发现,让每个客户端发布一个 HTTP 服务,并使用 firefox 插件或类似插件来浏览已发布的 Web 服务。或其他类型的服务浏览器。
Bonjour 曾经包含一个 Internet Explorer 插件,可以像书签栏一样执行此操作,我不确定它是否仍然存在。
归档时间: |
|
查看次数: |
1189 次 |
最近记录: |