写点什么

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

  • 2019-10-30
  • 本文字数:1848 字

    阅读完需:约 6 分钟

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

一、概述

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


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

二、场景需求

  • 负载均衡服务需采用多可用区部署,提供可用区级别的高可用。

  • 后端服务可根据流量负载情况自动调整后端服务器个数,以实现合理利用资源,并提供服- 务器跨 AZ、跨机架的高可用。

  • 后端服务器绑定安全组,提供实例级别的安全防护。

  • 后端服务器需获取客户端的源 IP,基于源 IP 地址统计用户访问量。


产品配置列表


三、配置步骤

私有网络

步骤 1:创建私有网络


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


创建 DNLB 和后端服务器所属的 VPC。DNLB 采用 VPC 内部署,可通过绑定弹性公网 IP 对外提供服务,隐藏内部结构,增强系统安全性。



步骤 2:创建子网


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


为提供子网级的安全性,部署后端服务实例属于单独的私有子网 lb-subnet1,DNLB 属于公有子网 lb-subnet2。


安全组

安全组是一种分布式的、有状态的包过滤虚拟防火墙,可实现对实例的网络访问控制,从而控制一台或多台实例的访问流量。


修改私有网络 dnlb-test-vpc 的安全组“Linux 安全组开放 22 端口”中的规则:


  • 入站规则放行目的端口为 22、80 的流量;

  • 出站规则放行所有流量。

实例模板

步骤 1:创建私有镜像


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


本举例中基于部署 Nginx WEB 服务的云主机创建私有镜像,并部署 GoAccess 用来统计源端用户的访问情况,高可用组弹性扩展时使用该镜像创建云主机实例。



步骤 2:创建实例模板


高可用组

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


1、基于实例模板创建高可用组;


2、开启高可用组的自动伸缩功能,设置组内最大实例个数、最小实例个数及移除策略;


3、添加告警策略,基于监控指标实现后端服务器的弹性伸缩。



分布式网络负载均衡

步骤一:创建 DNLB 实例


DNLB 实例必须与后端服务器组属于同一个地域下的同一个私有网络;


DNLB 实例默认全可用区分布式部署,不需要用户额外配置。



步骤二:创建监听器


监听器用来通过协议和端口号监听需要进行负载均衡的请求。



步骤三:创建后端服务


后端服务用来定义访问流量自 DNLB 转发到后端服务器的转发协议、端口和调度算法。DNLB 默认透传客户端源 IP 地址,不需要用户在 DNLB 和后端服务器上额外配置,满足用户溯源或基于源 IP 统计需求。



步骤四:创建健康检查


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


当绑定的后端服务为高可用组时,如不配置健康检查的端口,默认为后端服务上配置的端口。



步骤五:添加服务器组


添加高可用组作为后端服务器组提供服务。高可用组内的实例将根据负载情况按照设置的弹缩策略,自动增加或减少。


验证服务访问情况

(1)在浏览器中输入 DNLB 的公网 IP,请求默认使用 80 端口,验证服务可以正常访问。



(2)DNLB 可透传客户端源 IP,不需后端服务器做任何额外配置。通过可视化工具 GoAccess 可统计不同源 IP 的访问情况。



2019-10-30 18:01864

评论

发布
暂无评论
发现更多内容

18 张图,一文了解 8 种常见的数据结构,java编程入门类pdf

Java 程序员 后端

2020年IT运维市场大前景到底怎么样,Java开发工程师需要掌握的技能

Java 程序员 后端

如果明天交任务,自己做今晚能完成,而让下属做需要一周时间,怎么办?

石云升

职场经验 11月日更

13 高可用的服务,字节跳动今日学习内容

Java 程序员 后端

2021备战金三银四血拼一波算法:字节+百度,东软医疗java面试题

Java 程序员 后端

开源项目|Go 开发的一款分布式唯一 ID 生成系统

AlwaysBeta

golang 开源 Go 语言

2020云计算省赛总结,springboot教学视频

Java 程序员 后端

13万字!腾讯高工手写JDK源码笔记 带你飙向实战,linux高级教程

Java 程序员 后端

去年今日我凭借这份文档,摇身一变成了被BAT大牛们看中的幸运儿

Java spring 程序员 JVM Kakfa

Java Spring Boot 项目中使用结构化日志节省时间

码语者

Spring Boot Logging

2021年目前最新上千道Java面试题,刷完你不进大厂谁进大厂

Java 程序员 后端

出自清华大牛之手的Redis源码核心手册,已被列为GitHub首推书籍

Java redis 编程 程序员

杨传辉:深挖 OceanBase 背后的技术逻辑,助力数据库核心系统升级

OceanBase 数据库

数据库 开源 分布式 数字化转型 核心系统

12 高可用的应用,微众银行java面试

Java 程序员 后端

2019金九银十前端面经总结,牛客视频面试

Java 程序员 后端

2020全网最新SQL优化面试专题及答案,java自学教程视频

Java 程序员 后端

CVE-2017-10271漏洞复现与分析

喀拉峻

网络安全 信息安全 渗透测试

腾讯架构师推荐架构电子书:多线程+JVM+Nginx+Redis+SpringBoot

nginx redis 程序员 Spring Boot JVM

NodeJs深入浅出之旅:异步I/O (中)🐉

空城机

JavaScript node.js 大前端 Node 11月日更

2021年Java面试题抢先看,够全!中篇(1),Java视频课资源

Java 程序员 后端

2021年Java面试题抢先看,够全!中篇,rebbitmq教程

Java 程序员 后端

2021年最新版阿里、腾讯、美团300道Java初级,你掌握了多少?

Java 程序员 后端

2021年第一波福利已送达!献上“独家全新,netty框架工作原理

Java 程序员 后端

OceanBase 创始人阳振坤 | 十余年打磨 国产数据库之路砥砺前行

OceanBase 数据库

数据库 开发者 趋势 1024 CSDN

18 应用服务器集群的伸缩性设计,java面试多线程和分布式

Java 程序员 后端

阿里云性能测试服务 PTS 新面貌 - 压测协议、施压能力全新升级

阿里巴巴云原生

阿里云 容器 云原生 性能测试 产品升级

2021年Java程序员请先把这几项硬技能熟悉掌握,再想着跳槽拿高薪(1)

Java 程序员 后端

2021年最新基于Spring Cloud的微服务架构分析,mysql面试笔试题

Java 程序员 后端

互联网+质量基础设施服务平台,NQI一站式服务平台搭建

电微13828808271

周傲英:替代工程只是契机,转型升级才是大势所驱

OceanBase 数据库

数据库 开源 数字化转型 云栖大会

2021年Java程序员请先把这几项硬技能熟悉掌握,再想着跳槽拿高薪

Java 程序员 后端

独创分布式网络负载均衡实践_架构_京东云_InfoQ精选文章