Mik*_*e T 37 networking linux hosts
我有一个通过 VPN 连接到内部数据库的网络服务器。从 Web 服务器到数据库有 2 个 IP(主要和次要)。如何设置我的 /etc/hosts 文件,以便在主 IP 不可用时使用辅助 IP?
这对我的主机文件有用吗?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
Run Code Online (Sandbox Code Playgroud)
Kha*_*led 29
hosts 文件不提供这种机制。如果您为同名列出两个 IP,则只会使用第一个。因此,没有主 IP 和辅助 IP 之类的东西。
此外,hosts 文件不处理 URL。它只处理问题中提供的名称。URL 包含完整的路径和协议,例如http://host/path/to/resource
.
Ben*_*ani 16
您无法通过/etc/hosts
文件提供弹性或循环负载平衡- 它不是为此目的而设计的。
相反,您的选择是...... (没有特别的顺序)
/etc/hosts 不支持循环,但您可以编写一个简单的 bash 脚本来 sed 替换带有 #RoundRobin 注释标记的条目(或您希望使用的任何其他标记,只需将其反映在脚本中的 grep 行中) 。
#!/bin/bash
fqdnips=( $(nslookup sub.domain.com|grep Address:|awk -F\ '{ print $2 }'|grep -v '#') )
new=`printf "${fqdnips[@]}"`
old=`grep "#RoundRobin" /etc/hosts|awk -F\ '{ print $1 }'`
sed -i "s/$old/$new/g" /etc/hosts
Run Code Online (Sandbox Code Playgroud)
上面的脚本获取 sub.domain.com 的 nslookup 输出并将其存储在数组中。然后它将最上面的值打印到 $new 并获取 /etc/hosts 中分配的标记 #RoundRobin 的现有值...最后,它执行 sed 替换
/etc/hosts 文件条目如下所示
127.0.0.1 localhost
::1 localhost
11.12.13.14 sub.domain.com #RoundRobin
Run Code Online (Sandbox Code Playgroud)
最后,将此脚本放入根目录的 crontab 中,每隔一小时左右运行一次,现在您将拥有一个 /etc/host 循环。
如果您有一个编码页面从 API 中提取一些数据,并且 API 服务器的 DNS 查找导致页面脚本执行中出现大量挂起时间,则此功能特别有用...从而导致 CPU 消耗过高,否则会导致 CPU 消耗过高看起来是一个简单的页面。为了避免代价高昂的 DNS 查找(特别是如果您的站点每分钟执行数百次查询导致流量很大),您应该使用 /etc/hosts 来解析远程 API 服务器的 FQDN。这将大大减少拉取 API 数据和生成页面的 CPU 使用率。
归档时间: |
|
查看次数: |
103130 次 |
最近记录: |