软件开发架构师

独创分布式网络负载均衡实践-InfoQ

大数据 216 2019-11-09 01:10

一、概述

在高可用场景中,后端服务器集群之前通常会部署负载均衡器,负载均衡器作为访问流量的统一入口,会将用户的访问流量按照一定的策略自主分发给多台后端服务器,从而调整资源利用情况,消除由于单台后端服务器故障对系统的影响,提高系统可用性、扩展系统服务能力。

京东云独创分布式网络负载均衡(Distributed Network Load Balancer,简称 DNLB),是京东云基于 SDN 技术实现的无状态四层负载均衡。本文以 DNLB 的高可用场景为例介绍其部署的最佳实践,使用到的京东云产品包括云主机、DNLB、高可用组、私有网络及安全组。

二、场景需求

  • 负载均衡服务需采用多可用区部署,提供可用区级别的高可用。
  • 后端服务可根据流量负载情况自动调整后端服务器个数,以实现合理利用资源,并提供服 - 务器跨 AZ、跨机架的高可用。
  • 后端服务器绑定安全组,提供实例级别的安全防护。
  • 后端服务器需获取客户端的源 IP,基于源 IP 地址统计用户访问量。
    独创分布式网络负载均衡实践-InfoQ-1

产品配置列表
独创分布式网络负载均衡实践-InfoQ-2

三、配置步骤

私有网络

步骤 1:创建私有网络
私有网络 (Virtual Private Cloud,简称 VPC),是您在京东公有云上自定义的逻辑隔离的网络空间,与您在数据中心搭建的传统网络类似,此私有网络空间由用户完全掌控,支持自定义网段划分、路由策略等。

创建 DNLB 和后端服务器所属的 VPC。DNLB 采用 VPC 内部署,可通过绑定弹性公网 IP 对外提供服务,隐藏内部结构,增强系统安全性。
独创分布式网络负载均衡实践-InfoQ-3

步骤 2:创建子网
子网是所属 VPC IP 地址范围内的 IP 地址块。目前私有网络中的部分云资源部署在子网内,如云主机、负载均衡等。不同 VPC 的子网 CIDR 可以重叠,同一个 VPC 下的子网 CIDR 不可以重叠。

为提供子网级的安全性,部署后端服务实例属于单独的私有子网 lb-subnet1,DNLB 属于公有子网 lb-subnet2。
独创分布式网络负载均衡实践-InfoQ-4

安全组

安全组是一种分布式的、有状态的包过滤虚拟防火墙,可实现对实例的网络访问控制,从而控制一台或多台实例的访问流量。
修改私有网络 dnlb-test-vpc 的安全组“Linux 安全组开放 22 端口”中的规则:

  • 入站规则放行目的端口为 22、80 的流量;
  • 出站规则放行所有流量。
    独创分布式网络负载均衡实践-InfoQ-5独创分布式网络负载均衡实践-InfoQ-6

实例模板

步骤 1:创建私有镜像
私有镜像是基于您的自有实例创建自定义镜像,您可以为已部署业务的实例制作镜像,基于此镜像快速创建多个具有相同配置和软件环境的实例。您可以将私有镜像共享给同其他京东云用户,被共享镜像会显示在目标用户同区域的共享镜像列表中。

本举例中基于部署 Nginx WEB 服务的云主机创建私有镜像,并部署 GoAccess 用来统计源端用户的访问情况,高可用组弹性扩展时使用该镜像创建云主机实例。
独创分布式网络负载均衡实践-InfoQ-7

步骤 2:创建实例模板
独创分布式网络负载均衡实践-InfoQ-8

高可用组

高可用组 (Availability Group,简称 AG) 是京东云提供的业务高可用部署解决方案,是计算资源逻辑集合。提供了组内单元在数据中心内横跨多个故障域(Fault Domain,简称 FD) 均衡部署的机制,示例分散部署在相互隔离的物理资源上,当出现硬件故障或定时维护时只会影响部分实例,您的业务仍为可用状态。故障域间故障隔离,最大程度规避了局部故障对高可用应用整体的影响:

1、基于实例模板创建高可用组;
2、开启高可用组的自动伸缩功能,设置组内最大实例个数、最小实例个数及移除策略;
3、添加告警策略,基于监控指标实现后端服务器的弹性伸缩。
独创分布式网络负载均衡实践-InfoQ-9独创分布式网络负载均衡实践-InfoQ-10

分布式网络负载均衡

步骤一:创建 DNLB 实例
DNLB 实例必须与后端服务器组属于同一个地域下的同一个私有网络;
DNLB 实例默认全可用区分布式部署,不需要用户额外配置。
独创分布式网络负载均衡实践-InfoQ-11

步骤二:创建监听器
监听器用来通过协议和端口号监听需要进行负载均衡的请求。
独创分布式网络负载均衡实践-InfoQ-12

步骤三:创建后端服务
后端服务用来定义访问流量自 DNLB 转发到后端服务器的转发协议、端口和调度算法。DNLB 默认透传客户端源 IP 地址,不需要用户在 DNLB 和后端服务器上额外配置,满足用户溯源或基于源 IP 统计需求。
独创分布式网络负载均衡实践-InfoQ-13

步骤四:创建健康检查
DNLB 通过健康检查定时检测后端服务器的运行状况,可自定义检测频率、健康 / 不健康判断条件。开启健康检查后,当后端服务器运行异常时,DNLB 将停止向其分发流量,且将流量分发给其他运行正常的后端服务器,异常后端服务器恢复正常后,DNLB 再继续向其分发流量。

当绑定的后端服务为高可用组时,如不配置健康检查的端口,默认为后端服务上配置的端口。
独创分布式网络负载均衡实践-InfoQ-14

步骤五:添加服务器组
添加高可用组作为后端服务器组提供服务。高可用组内的实例将根据负载情况按照设置的弹缩策略,自动增加或减少。
独创分布式网络负载均衡实践-InfoQ-15

验证服务访问情况

(1)在浏览器中输入 DNLB 的公网 IP,请求默认使用 80 端口,验证服务可以正常访问。
独创分布式网络负载均衡实践-InfoQ-16

(2)DNLB 可透传客户端源 IP,不需后端服务器做任何额外配置。通过可视化工具 GoAccess 可统计不同源 IP 的访问情况。
独创分布式网络负载均衡实践-InfoQ-17

文章评论