研究一下 “DNS轮询” 的东西,并不是一个域名只能绑定一个IP,一个域名可以绑定多个IP,如下图所配置的。那就能利用DNS这个特点进行负载均衡。
注意它的负载均衡并不是每次请求都切换IP,通常访问者的计算机访问这个域名在很长一段时间内会得到相同的IP,除非清除DNS缓存重新获取可能会变,如图2就是通过 ipconfig /flushdns
实现了清除DNS缓存,从而获取了不同的IP
从宏观上说,全国各地,或者世界各地的访问者,通过DNS配置多个IP,获取了不同的解析,从而达到了负载均衡(但注意这种负载均衡的策略应该不是 “轮询”,对于同一个访问者的计算机,应该是长时间内都是路由到相同IP的机器上的)
写一个springboot的程序,然后打包部署到如图213和232两台机器。springboot程序暴露一个rest接口,往控制台打印日志。用80端口启动后检查各自访问正常:curl http://localhost:80/test
@GetMapping("/test")
public String test(HttpServletRequest request) {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("ok," + dateTime);
return "ok," + dateTime;
}
启动脚本:
nohup java -jar dns-lunxun-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev &
tail -100f nohup.out
接下来配置DNS,配置两条A记录到213和232服务器。
tail -100f nohup.out
追踪并follow日志
在不同电脑上访问 http://www.你的域名.com/test
直至尝试出在两台机器的日志中都看到打印记录。有时比较难尝试出来,可以多试一下,甚至网址发到手机上,用4G网络访问,总会出现域名被解析为不相同的IP的情况。
上面我是配了2条的A记录,我觉得配CNAME 和A记录没什么区别,所以并不是DNS要配A记录才能实现 “DNS轮询”,应该都是可以的。