如何从网站的DNS获取负载均衡器的URL或IP?

Vin*_*eet 2 c linux networking network-programming amazon-web-services

nslookup是一种网络管理命令行工具,可用于许多计算机操作系统,用于查询域名系统(DNS)以获取域名或IP地址映射或任何其他特定DNS记录.

因此,nslookup返回url的端点.但是,如果我需要获得中间url/ip,我该怎么办?

例如.如果www.example.com托管在ELB(弹性负载均衡器)后面的AWS上的2个实例上,那么

nslookup www.example.com
Run Code Online (Sandbox Code Playgroud)

将返回2个实例的IP.有没有办法获得负载均衡器的dns/ip?

我在C中使用以下函数来解析到端点的URL.

int getaddrinfo(const char *node, const char *service,
                const struct addrinfo *hints,
                struct addrinfo **res);
Run Code Online (Sandbox Code Playgroud)

有没有办法在C中获取负载均衡器的URL/IP?

Nay*_*rhc 7

我认为你对nslookup返回的IP地址感到困惑.这些IP地址是ELB的实际地址,而不是平衡实例.

负载均衡器提供多个地址的原因基本上是提供后备,覆盖不同的可用区域(如果您在3个不同的可用区域中有3个实例,则会看到3个IP)等.但请记住这些IP地址不固定并且可能随时更改,因此在适用时使用提供的DNS作为平衡器.

除此之外,你正在使用正确的轨道getaddrinfo.

  • @Vineet,你的困惑就在于此.使用ELB时,nslookup返回ELB节点的公共IP地址 - **而不是**实例.您通常会在部署ELB的每个可用区中看到1个IP,**不是**每个实例1个IP. (2认同)