首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用apache2码头容器为本地(家庭网络)上的2台bind9 web服务器配置DNS负载平衡(循环)?

如何使用apache2码头容器为本地(家庭网络)上的2台bind9 web服务器配置DNS负载平衡(循环)?
EN

Stack Overflow用户
提问于 2021-09-08 03:14:45
回答 1查看 463关注 0票数 1

首先,我仍然在现场寻找答案,这些答案看起来可能让我找到解决我的问题的方法,在这里张贴肯定不是我第一次找到解决方案,我今天已经尝试了一段时间了。还有-谢谢你的阅读。我正在为类分配任务,其中的对象是将bind9停靠容器作为DNS负载均衡器运行,以便使用循环方法平衡两个web服务器之间的请求。因此,基本上,如果我向web服务器的域名提出请求,它将转到一个web服务器的IP地址,那么下一个请求将转到下一个web服务器的IP地址。如果我的术语有点错误,我很抱歉,我还在学习这些东西,但我希望我已经理解了这一点。为此,我尝试使用两个Ubuntu16.04VM,一个运行httpd容器,另一个运行httpd容器和bind9容器。我能够让web服务器运行,我能够使用主机IP连接到它们,我还能够让bind9容器运行。我真正遇到麻烦的部分是,如果我在浏览器中输入域名,实际上是让bind9 DNS容器带我到web服务器。

下面是我用来启动bind9容器的命令: docker -d -name=bind-dns=127.0.0.1-发布=192.168.0.45:53:53/udp-发布=192.168.0.45:10000:10000--d=/srv/docker/bind:/data-env=‘ROOT_PASSWORD=秘书密码’sameersbn/bind:最新的

web服务器非常简单,我只需将目录与我的index.html文件绑定到/usr/local/apache2/htdocs,并从容器的端口80将其发布到主机的端口80。

这一切必须是一个非常简单的设置在我的本地网络,所以我不需要注册一个域名,我不需要邮件服务器或任何东西,我需要做的是,能够使用'dig‘查询DNS服务器的负载平衡主机名,并让它解析到两个不同的IP地址的web服务器。谢谢你在这方面的指导,我真的很感谢你的帮助,我已经看了很多资源,我只是不知道出了什么问题。

启动DNS服务器(bind9容器)后,可以使用命令'host google.com 172.x.x.x‘并返回正确的信息,172.x.x.x是码头容器的IP,因为我的本地网络是192.168.0.1/24。当我试图对码头主机的IP执行相同的命令时,它说拒绝。我试着编辑ACL,使用webmin添加区域和地址记录,但我无法让它工作。我将停止写作,希望我已经提供了足够的信息,谢谢你的阅读。

EN

回答 1

Stack Overflow用户

发布于 2021-09-08 03:38:22

你没有描述172.x.x.x是关于什么的。还不清楚为什么它会是相关的。请张贴dig输出。host命令很好,但是看到更多的细节将有助于您的调试工作。

您正在拍摄类似于以下内容的输出:

代码语言:javascript
复制
$  dig +nottl a yahoo.com @8.8.8.8

; <<>> DiG 9.10.6 <<>> +nottl a yahoo.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50455
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yahoo.com.     IN  A

;; ANSWER SECTION:
yahoo.com.      IN  A   74.6.143.25
yahoo.com.      IN  A   74.6.231.20
yahoo.com.      IN  A   74.6.231.21
yahoo.com.      IN  A   98.137.11.163
yahoo.com.      IN  A   98.137.11.164
yahoo.com.      IN  A   74.6.143.26

;; Query time: 62 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

有两件事你想看到起作用。

(1.)将Shell放入容器并执行本地挖掘查询,以便从本地绑定服务器获得答案。我们想验证一下,在“容易”的情况下,我们可以得到一个好的答案。处理守护进程的配置,直到答案看起来合理为止。

另外,使用netstat -an和/或lsof -i:53来验证守护进程发出的绑定()值为0.0.0.0或类似的适当地址。

(2.)从感兴趣的客户端,发送一个dig查询@192.168.0.45。如果失败了,那就是网络路由问题。在进行此操作时,请验证curl (或telnet)是否可以访问TCP端口10000。您会发现使用curl -i很方便,因此您将看到see服务器发送的标头。

这里有一点细微之处。您配置了UDP 53,这已经足够好了。但这肯定不对。DNS还需要TCP端口53上的连接。有时DNS的答案太大,无法适应单个UDP数据包(未碎片化)。特别是在一个签名的DNSSEC区域内。当发生这种情况时,命名服务器发送一个标记为“截断”的响应,客户端将在TCP端口53上重试。您可能会发现,telnet 192.168.0.45 53是验证连接性的一种方便方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69096565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档