域名负载均衡 负载均衡可以是不同的域名吗

8678008682024-03-29 06:21:4347域名知识

老铁们,大家好,相信还有很多朋友对于域名负载均衡和负载均衡可以是不同的域名吗的相关问题不太懂,没关系,今天就由我来为大家分享分享域名负载均衡以及负载均衡可以是不同的域名吗的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

域名负载均衡 负载均衡可以是不同的域名吗如何实现域名的负载均衡

192.168.1.100(电信)

192.168.1.101(电信)

192.168.1.102(电信)

10.10.10.100(网通)

10.10.10.101(网通)

并且5台服务器都在为www提供服务。

域名负载均衡 负载均衡可以是不同的域名吗

本例子再假设域名为qicaispace.com

为电信用户实现负载均衡

根据前面的资料,电信一共有3台www服务器,分别是

192.168.1.100

192.168.1.101

192.168.1.102

域名负载均衡 负载均衡可以是不同的域名吗

首先登陆DNSPod的後台,添加一个qicaispace.com的域名。

然後在管理域名记录中添加一条记录

主机记录 www记录类型 A线路类型电信

记录值 192.168.1.100点击增加接着,再分别添加两条记录

主机记录 www记录类型 A线路类型电信

记录值 192.168.1.101

主机记录 www记录类型 A线路类型电信

记录值 192.168.1.102

为网通用户实现负载均衡

电信用户的记录添加完毕後,接着添加网通的。

网通的添加方法跟电信的没太大分别

主机记录 www记录类型 A线路类型网通

记录值 10.10.10.100

主机记录 www记录类型 A线路类型网通至此,所有记录添加完毕

负载均衡基本介绍

【负载均衡架构部分转自】 58沈剑 [架构师之路]( https://mp.weixin.qq.com/s

负载均衡:是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】

常见的负载均衡方案:

【客户端层】到【反向代理层】的负载均衡,是通过“DNS轮询”实现的:DNS-server对于一个域名配置了多个解析ip,每次DNS解析请求来访问DNS-server,会轮询返回这些ip,保证每个ip的解析概率是相同的。这些ip就是nginx的外网ip,以做到每台nginx的请求分配也是均衡的。

【反向代理层】到【站点层】的负载均衡,是通过“nginx”实现的。通过修改nginx.conf,可以实现多种负载均衡策略:

【站点层】到【服务层】的负载均衡,是通过“服务连接池”实现的。

上游连接池会建立与下游服务多个连接,每次请求会“随机”选取连接来访问下游服务。(也即是rpc框架实现的)

在数据量很大的情况下,由于数据层(db,cache)涉及数据的水平切分,所以数据层的负载均衡更为复杂一些,它分为“数据的均衡”,与“请求的均衡”。

数据的均衡是指:水平切分后的每个服务(db,cache),数据量是差不多的。

请求的均衡是指:水平切分后的每个服务(db,cache),请求量是差不多的。

(1)按照range水平切分

(2)按照id哈希水平切分

[图片上传中...(-6b2508-1561902875888-0)]

常见的负载均衡系统包括 3种:DNS负载均衡、硬件负载均衡和软件负载均衡。

硬件负载均衡是通过单独的硬件设备来实现负载均衡功能,这类设备和路由器、交换机类似,可以理解为一个用于负载均衡的基础网络设备。比如业界非常出名的F5

缺点:

(1)价格实在非常昂贵

(2)扩展性不强

软件负载均衡通过负载均衡软件来实现负载均衡功能,常见的有 Nginx和 LVS。

nginx和F5: https://blog.csdn.net/chabale/article/details/8956717

nginx和lvs比较: https://blog.51cto.com/hzcto/2086691

lvs: https://www.cnblogs.com/liwei0526vip/p/6370103.html

ELB: https://aws.amazon.com/cn/elasticloadbalancing/

SLB: https://help.aliyun.com/product/27537.html

题目:日活跃用户 1000万的论坛的负载均衡集群,该如何设计呢?

(1)评估流量

1000万DAU,换算成秒级(一天12小时),平均约等于232。

考虑每个用户操作次数,假定10,换算成平均QPS=2320。

考虑峰值是均值倍数,假定5,换算成峰值QPS=11600。

考虑静态资源、图片资源、服务拆分等,流量放大效应,假定10,QPS 10=116000。

(2)容量规划

考虑高可用、异地多活,QPS 2=232000。

考虑未来半年增长,QPS*1.5=348000。

(3)方案设计

可以用三级导流:

第一级,DNS,确定机房,以目前量级,可以不考虑。

第二级,确定集群,扩展优先,则选Haproxy/LVS,稳定优先则选F5。

第三级,Nginx+KeepAlived,确定实例。

(4)架构图

接入层技术:

缺点:

优点:

缺点:

优点:

缺点:

缺点:

nginx毕竟是软件,性能比tomcat好,但总有个上限,超出了上限,还是扛不住。lvs就不一样了,它实施在操作系统层面;f5的性能又更好了,它实施在硬件层面;它们性能比nginx好很多,例如每秒可以抗10w,这样可以利用他们来扩容。

99.9999%的公司到这一步基本就能解决接入层高可用、扩展性、负载均衡的问题。假设还扛不住的话,就要考虑使用硬件设备f5等。如果还是扛不住,那么只有DNS来扩容了。

水平扩展,才是解决性能问题的根本方案,能够通过加机器扩充性能的方案才具备最好的扩展性。 facebook,google,baidu的PV是不是超过80亿呢,它们的域名只对应一个ip么,终点又是起点,还是得通过DNS轮询来进行扩容:

比如购买了阿里云或者aws。那么基本会使用云厂商提供的负载均衡中间件,比如aws(elb)、阿里云(slb)。这个负载均衡软件可以认为是 lvs+keepalived的高可用负载均衡服务

后端的service有可能部署在硬件条件不同的服务器上:

1)如果对标最低配的服务器“均匀”分摊负载,高配的服务器的利用率不足;

2)如果对标最高配的服务器“均匀”分摊负载,低配的服务器可能会扛不住;

(1)通过“静态权重”标识service的处理能力

优点:简单,能够快速的实现异构服务器的负载均衡。

缺点:权重是固定的,无法自适应动态调整,而很多时候,服务器的处理能力是很难用一个固定的数值量化。

(2)通过“动态权重”标识service的处理能力

提问:通过什么来标识一个service的处理能力呢?

回答:其实一个service能不能处理得过来,能不能响应得过来,应该由调用方说了算。调用服务,快速处理了,处理能力跟得上;调用服务,处理超时了,处理能力很有可能跟不上了。

动态权重设计:

例如:

(1)设置一个阈值,超过阈值直接丢弃

(2)借助“动态权重”来实施过载保护

案例策略:

1)service的负载均衡、故障转移、超时处理通常是RPC-client连接池层面来实施的

2)异构服务器负载均衡,最简单的方式是静态权重法,缺点是无法自适应动态调整

3)动态权重法,可以动态的根据service的处理能力来分配负载,需要有连接池层面的微小改动

4)过载保护,是在负载过高时,service为了保护自己,保证一定处理能力的一种自救方法

5)动态权重法,还可以用做service的过载保护

图解DNS 域名解析与负载均衡

在 DNS查询篇中,主要是根据阮一峰老师的文章所做的学习记录。讲述了通过命令 dig来跟踪域名的查询过程,也提到了 DNS服务器的层级结构、DNS记录、DNS缓存等。整体都是文字叙述,读起来会稍微有些累。这篇会通过图示来进一步简化 DNS的解析过程,并会提到 DNS的另一项重要作用,负载均衡。

首先我们来了解一下 DNS服务器。主要有三种类型的 DNS服务器:

DNS服务器的层级是树状结构,如下图所示:

假设我们需要在浏览器上访问 https://www.baidu.com网页,浏览器识别到访问的是个域名而不是 ip地址时,会开始发起域名解析的过程。用户电脑上运行着 DNS应用客户端,我们把它叫做本地 DNS解析器。

首先我们先来回顾一下域名解析的整个过程,稍后会以图示的方式展现。

本地 DNS服务器地址会配置在本机。如果是采用 DHCP动态获取 IP地址的方式,那么一般会被配置为网络运营商的 DNS服务地址;或者可以自己配置为非权威 DNS服务器地址,比如 google的 8.8.8.8。

那么它如何知道根域名服务器的地址呢?很简单,根域名服务器数量少,其地址会配置在本地 DNS服务器中。

整体流程如下图所示,其中白色箭头表示查询方向,绿色箭头表示返回方向。

DNS的另一个作用是做负载均衡, Server Load Balance。

最简单的一种应用情况,在 DNS服务器上配置某个域名对应的 ip时,可以配置多个 A记录,即一个域名对应多个 ip。这里可以配置不同的策略。

当客户端请求域名解析时,DNS服务器返回全部 ip地址。客户端拿到多个 ip后可进行轮询,或者是随机选择一个 ip,或者是按照某种算法选择一个 ip进行请求。

假设配置了 ip1, ip2, ip3三个地址。第一次请求返回 ip1,第二次请求返回 ip2,以此类推。

设定各个 ip的权重,优先返回权重大的 ip。

另外一种复杂的应用情况,做全局的负载均衡,即 GSLB,Global Server Load Balance。全局上可分为运营商和区域,在同一个运营商上进行访问肯定速度更快;同样,请求的服务器距离客户端越近,速度越快。

那全局负载均衡如何实现呢?跟添加中间层的思想差不多,经过中间层 GSLB来控制负载均衡策略。下面介绍两种方式。

具体做法是,在权威 DNS服务器上给目标域名配置一条 NS记录, A→ B,即 A对应的域名服务器地址为 B,也就是 GSLB的地址,让 GSLB来充当权威域名服务器。

当 DNS解析 A域名时,会返回设置好的 B。这样本地 DNS服务器就会转到请求 B也就是 GSLB去进行域名解析, GSLB就可按照某种策略进行负载均衡计算,比如根据本地 DNS服务器的所属运营商和本地 DNS服务器的位置返回合适的 ip。

假设查询的目标域名为 http://www.company.com,设置一条 NS记录为 http://www.company.com→ http://www.companyOk.com。那么当查询 www.company.com时,DNS服务器会返回 www.companyGSLB.com。然后本地 DNS服务器会去请求 www.companyGSLB.com DNS服务器,让该权威域名服务器去解析 www.company.com域名,返回合适的 ip地址。这样,控制权就交到了 www.companyGSLB.com手上,具体策略可以由它自己来确定。

但是这种方式只能知道本地 DNS服务器所属的运营商和 ip地址,而不是客户端的 ip。

流程如下图所示:

通过给域名添加别名的方式来实现,有两种不同的方式。

a.设置别名后,再通过 http重定向

给目标域名 A配置别名 CNAME,也就是 GSLB的域名。这样请求解析 A域名时会返回 CNAME记录,之后本地 DNS服务器会转为请求 GSLB的域名,最后返回 GSLB的 ip地址。

这样,客户端就会跟 GSLB进行通信,GSLB可以知道客户端的 ip地址,进而根据一系列的策略进行调度,然后利用 http重定向将客户端定向到合适的地址。

流程如下图所示:

b.设置别名,通过 NS记录转到不同的 GSLB域名服务器

给目标域名设置别名,对别名设置 NS记录,转到不同的 GSLB去查询。

举个栗子:比如在 company.com的权威服务器上给域名 test.company.com设置别名 hello.test.comany.com。

当本地 DNS服务器请求解析 test.company.com时,流程如下:

流程图如下:

这里只有一层 GSLB,也可以有多层。假设第一层 GSLB是用来区分运营商,第二层 GSLB是区分区域。

比如本地 DNS服务器所在运营商是移动,那么在 xx.GSLB1.com就可返回另一个别名 yd.test.comany.com。 yd.test.comany.com也对应一条 NS记录, yd.test.comany.com→ xx.GSLB2.com,这样就将 yd.test.comany.com转到第二层 GSLB去解析。 GSLB2就可根据本地 DNS服务器的位置返回距离用户较近区域的 ip。

负载均衡可以是不同的域名吗

可以。DNS可以实现,每次域名解析请求都会根据对应的负载均衡算法计算出一个不同的IP地址并返回,这样A记录中配置多个服务器就可以构成一个集群,并可以实现负载均衡。

DNS域名解析负载均衡有如下优点:

1.将负载均衡的工作交给DNS,省去了网站管理维护负载均衡服务器的麻烦。

2.技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用。

3.对于部署在服务器上的应用来说不需要进行任何的代码修改即可实现不同机器上的应用访问。

3.服务器可以位于互联网的任意位置。

4.同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就可以加速用户访问,改善性能。

文章分享结束,域名负载均衡和负载均衡可以是不同的域名吗的答案你都知道了吗?欢迎再次光临本站哦!

本文链接:https://aiming.cc/index.php/post/2068.html 转载需授权!

分享到:
转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!