DNS nginx 在架构中的巧用

来源:互联网 发布:逆行武侠 知乎 编辑:程序博客网 时间:2024/06/08 18:48
DNS服务的基本功能:
(本质: 一个域名对应一个外网IP,一个外网IP 对应一台nginx服务,一台ninx 服务对应多个后台服务,实现后台服务 负载扩展)

客户的请求域名时,dns先解析域名为具体的外网ip,返给客户端
客户端拿到外网IP, 访问外网IP指向 反向代理 nginx
nginx 配置多个后台的 web-server
实现服务端的负载均衡


DNS  反向代理水平扩展
(本质:一个域名对应 多个外网IP,每个外网IP对应一台 nginx服务, 每台ninx映射相同的内网后台服务,实现反向代理ninx的负载 和后台服务的负载 )
DNS水平扩展nginx的思想:
DNS 采取轮询的方式,把每一次域名请求解析为 对应的外网ip中的某一个 

应对场景:
鉴于nginx时整个系统的唯一入口,如果系统吞吐超过nginx的性能极限,承载不了过多的域名流量,难以扩容,
可通过 在dns服务上对同一个域名配置多个nginx外网IP, 每次DNS解析请求,轮询返回不同的IP


nginx层面下更小粒度的 分布式负载:
一般思想:
分模块集群部署

更小粒度的思想:
当个别模块流量比较大时,可以把这些模块在根据具体业务切分, 实现更小粒度的 分布式集群

京东商城的一个场景:
www.jd.com  首页  (可以设想为 DNS 解析域名 ,到可能多个外网IP,到对应多台nginx服务, 到多个后台集群服务)
www.xxxx.com  通过首页跳转某一个模块后,域名变为一个新的域名,而非jd的子域名
由此可见,京东商城的不同模块由不同的ninx负载,实现分布式集群