负载均衡应用场景

一、背景

这两天在盘点IT资产,发现阿里云SLB每天在扣费,这个SLB是以前用来做公众号&小程序服务端负载均衡用的,现在牛奶业务处于维护老客户阶段,ECS只用一台就可以,SLB其实可以释放了。

二、负载均衡概念

负载均衡:对外部请求的流量分发到不同的后端服务器来扩展应用的吞吐能力以及消除单点故障。
DNS轮询负载均衡:DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上。
四层负载均衡:四层指OSI的TCP层,四层负载均衡服务器接受客户端请求后,修改数据包的地址信息(IP+端口)将流量转发到应用服务器,一般可以将一个公网的IP映射成多个内部服务器地址。
七层负载均衡:七层指OSI的应用层,七层负载均衡服务器可以根据客户请求的URL或HTTP报头来做分发。
硬件四/七层负载均衡:通过智能交换机实现,处理能力强,但是很贵,最出名的就是F5,咱也没玩过。

三、DNS轮询配置例子

对同一主机名添加多条A记录,下面是我在35互联上做的一个解析。

将lb.vanmilk.com解析到  118.178.255.158和121.40.77.22,使用dig命令检查发现确实被解析到两个IP地址上了。

这是相对来讲成本最低的一种负载均衡做法,但存在两个很明显的缺点:

1、可靠性低:当一台服务器挂了,你必须去DNS去下掉该IP,但DNS有缓存,需要一些时间后才会生效。
2、负载分配不均衡:采用简单轮询算法,不能为性能较好的服务器多分配请求。

四、软件四层负载均衡

最出名的就是LVS,是章文嵩开发的,大神级别的人物,阿里云很多基础设施都是他主导搭建的吧,膜拜一下。

阿里云的SLB:支持TCP/UDP四层负载,强大的四层处理能力,也支持HTTP/HTTPS七层负载但对七层的支持能力较弱,仅支持基于域名和URL转发,单实例连接数可以达500万,如果我没猜错的话这个应该是来源于LVS,更强大的面向应用ALB,咱也还没玩过。

SLB配置方法:

1、创建SLB实例,如果流量比较小,直接用按量付费就可以。
2、DNS解析指向SLB的公网IP。
3、配置监听,指定监听端口,如果是443要配置一下SSL证书,然后配置后端服务器,配置健康检查(当后端服务挂了,它就不会再向该台服务器转发请求)。

4、可以设置每台服务器的权重,应用发布的时候,把权重设置为0,等发布完了再调回去,这样就是不停机发布。
5、SLB配置好了基本就不用管了,然后每年SSL证书有变更,这里需要重新把证书推送上去。

五、Nginx反向代理实现软件七层负载均衡

前端部署Nginx服务器,后端部署Tomcat应用,用户访问时静态资源由Nginx直接返回,动态资源分发到Tomcat服务器,处理完成后返回数据组Nginx,Nginx再返回给浏览器。
Nginx配置负载主要有几下几种方式

1、轮询

实验环境
121.40.77.25       搭建Nginx服务器做负载
121.40.77.25       应用1 
118.178.255.158    应用2
为了方便实验,在两台机器用nc -l 9999启动端口在监听,nc的具体应用可以参见 《瑞士军刀》。

默认就是轮询方式,weight不配置按请求时间均匀分配到对应的服务器,如果服务器down掉会自动剔除,这种配置一个问题是同一个客户端每次请求不一定分发到后端同一台服务器。

2、ip_hash


请求按IP 哈希结果分配,这样每个客户请求会被固定到访问某一台服务器,如果后端服务器down掉,需要手工将其标记为down状态,这种配置就不用解决会话同步的问题。

3、url_hash

可以将相同的URL映射到后端一台固定服务器,这个是Nginx第三方插件,需要编译时安装该插件。

4、Nginx负载一个案例

我们的Vistablinds网站,当时有一个Php版本和一个Java版本,需要用Java版本替换掉Php版本,但又不能一次性全部切换,当时就用Nginx反向代理来实现,并且做了根据Cookie来保证原来访问Php版本的用户让其继续访问Php版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SLB(Server Load Balancer)负载均衡服务是一种用于将流量分配到多个后端服务器的网络服务,以提高应用程序的可用性和性能。SLB负载均衡服务适用于以下场景: 1. 高并发访问:当应用程序面临大量用户请求时,SLB可以将流量分配到多个后端服务器上,以实现请求的均衡分发和处理。这样可以提高应用程序的并发处理能力,避免单一服务器的性能瓶颈。 2. 高可用性和容灾:通过将流量分配到多个后端服务器上,SLB可以实现故障转移和容灾。当某个服务器出现故障或不可用时,SLB可以自动将流量重新分配到其他正常的服务器上,确保应用程序的持续可用性。 3. 资源优化和负载均衡:SLB可以根据后端服务器的负载情况,动态地将流量分配到服务器上,实现负载均衡。这可以确保每个服务器都能充分利用其资源,提高整个系统的性能和效率。 4. 应用部署和扩展:当需要将应用程序部署到多个服务器上时,SLB可以帮助实现应用程序的水平扩展。通过将流量分配到多个服务器上,SLB可以平衡负载并提供更好的性能,同时简化应用程序的部署和管理。 5. 全球服务分发:对于全球分布的应用程序,SLB可以根据用户的地理位置将流量分配到最近的服务器上,提供更快的响应时间和更好的用户体验。这可以通过使用全球负载均衡(GSLB)来实现。 需要注意的是,SLB负载均衡服务需要根据具体的需求和应用场景进行配置和调整,以确保合适的负载均衡策略和算法被应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值