写点什么

京东云应用负载均衡(ALB)多功能实操

  • 2019-10-22
  • 本文字数:3736 字

    阅读完需:约 12 分钟

京东云应用负载均衡(ALB)多功能实操

应用负载均衡(Application Load Balancer,简称 ALB)是京东云自主研发的一款七层负载均衡产品,主要面向 HTTP 和 HTTPS 流量的 WEB 应用程序,提供灵活的功能配置。应用负载均衡在请求级别运行,可以为应用层业务提供更加出色的服务。

一、实操说明

自动伸缩功能将搭配京东云弹性伸缩产品与云主机进行实操,然后通过京东云应用型负载均衡(ALB)进行请求的分发;



会话保持/3 种调度策略/健康检查功能将会利用京东云应用型负载均衡支持原生容器的特性进行实操;


二、环境搭建

1. 新建应用负载均衡(ALB)

打开京东云控制台在左侧导航中找到网络-负载均衡,如图在华北-北京新建应用型负载均衡实例



如图,选择应用负载均衡后,点击确定



配置如下:


  • 计费类型:按配置

  • 地域和可用区:华北-北京、可用区选择全部

  • 网络:选择自己创建的私有网络,安全组开放全部端口(主要用于测试,生产环境请按照实际情况开放特定端口)

  • 带宽:1Mbps

  • 名称:alb_test



在负载均衡产品控制台点击上述我们创建的应用型负载均衡实例 alb_test



点击虚拟服务器组-新建虚拟服务器组



分组名称 server_group(暂不添加后端服务器实例)


2. 制作自定义镜像

为方便后续操作,本步骤我们需要有一个安装有 Nginx 服务的 Centos 7.4 的自定义镜像


首先创建云主机(制作完就可以删除了);


制作自定义镜像环境建议配置如下:


  • 计费类型:按配置

  • 地域:华北-北京,可用区随意

  • 镜像:官方-Centos 7.4 64 位

  • 规格:通用 标准型 1 核 4GB

  • 存储:默认

  • 网络:选择自己创建的私有网络,为方便测试,安全组选择默认安全组开放全部端口

  • 带宽:1Mbps

  • 名称:buildimg(自定义)



创建完云主机后,SSH 远程连接,执行如下脚本


安装 Nginx+PHP 服务脚本:


1\wget  -O - https://pocenv-hcc.s3.cn-north-1.jdcloud-oss.com/JDCloud_LNP_test_Marin.Han.sh 
复制代码



脚本执行完成后,我们开始制作镜像,在云主机实例控制台找到我们创建的云主机将其停止



停止成功后,我们点击右侧更多选项,点击制作镜像


信息如下:


  • 名称:LNP_Centos7

  • 描述:包含 Nginx+PHP 的 Centos7.4 64 位镜像


定义镜像创建完成后,我们上面创建的云主机就可以删除了



云主机删除成功后,其绑定的公网 IP 不会被自动删除,我们需要手动删除,在左侧导航网络-私有网络-弹性公网 IP,找到对应的公网 IP 删除


3. 新建弹性伸缩

在京东云控制台找到弹性伸缩产品页面,找到启动配置选项,在华北-北京地域创建启动配置,配置信息如下:


  • 配置名称:JAS_test

  • 地域:华北-北京

  • 镜像类型:私有

  • 私有镜像:选择我们上面创建的私有镜像 LNP_Centos7

  • 规格类型:1 核 4GB

  • 存储:默认

  • 带宽:点击暂不购买



完成启动配置的创建后,左侧点击伸缩组,同样在华北-北京区域创建伸缩组,配置信息如下:


  • 名称:JAS_group

  • 初始实例数:1,在 1-2 个实例之间进行扩展

  • 启动配置:选择上面创建好的启动配置

  • 选择网络:选择你创建的 VPC 网络(选择你上面创建负载均衡所在的 VPC)

  • 安全组:为方便测试,选择默认安全组开放全部端口

  • 支持可用区:选择全部可用区

  • 移出策略:为效果明显,我们选择移出最早创建的云主机(默认移出策略:移出指定数量云主机并让组内剩余云主机在物理位置上尽可能均衡分布。)

  • 负载均衡:从负载均衡接收流量,选择你上面创建的负载均衡 alb_test 和虚拟服务器组 server_group,端口 80



由于我们设置的弹性伸缩初始实例数为 1,所以在保存伸缩配置后会根据启动配置自动生成 1 台云主机(为方便观察效果,这里记录下内网 IP:10.0.0.59)



在伸缩组-伸缩活动中也可以查看到伸缩记录



初始伸缩完成会进行冷却



我们打开上面创建的负载均衡 alb_test,找到虚拟服务器组 server_group,能够看到弹性伸缩自动新建的云主机 10.0.0.34 已与负载均衡自动关联


4. 新建原生容器

这里运用自定义的 DockerHub 公共仓库镜像,我们需要点击控制台左侧弹性计算-原生容器-镜像仓库认证信息-华北-北京-添加镜像仓库认证信息,配置如下:


  • 名称:DockerHub

  • 类型:docker-registry

  • 仓库域名

  • 用户名/密码:不填写(因为是公共仓库,所以可不填写,写了也没用)

  • 邮箱:不填写




点击左侧容器实例,如图在华北-北京新建容器实例



容器①配置:


  • 计费类型:按配置

  • 地域:华北-北京

  • 可用区:默认

  • 镜像:第三方镜像

  • 镜像仓库:DockerHub

  • 镜像名称:marin0224/alb_test:web01

  • 镜像信息(自动生成)

  • 规格:1 核 4GB(默认)

  • 存储:默认

  • 网络:选择自己创建的私有网络(VPC)

  • 带宽:暂不购买

  • 高级设置:运行的命令 /run.sh

  • 名称:alb_test_web01



如上,同样方式创建第二个原生容器


容器②配置:


  • 计费类型:按配置

  • 地域:华北-北京

  • 可用区:默认

  • 镜像:第三方镜像

  • 镜像仓库:DockerHub

  • 镜像名称:marin0224/alb_test:web02

  • 镜像信息(自动生成)

  • 规格:1 核 4GB(默认)

  • 存储:默认

  • 网络:选择自己创建的私有网络(VPC)

  • 带宽:暂不购买

  • 高级设置:运行的命令 /run.sh

  • 名称:alb_test_web02


两个容器创建完成后,如下图:


三、产品测试

1.自动扩缩容

我们在伸缩组中的报警策略页面添加策略,配置如下:


  • 策略名称:policy1

  • 监听该规则:内存使用率-2 分钟内-平均值-<-1%-连续 2 次(此规格镜像默认启动内存使用率大概 4%左右,所以监听规则设置低于 1%是一定会触发报警的。仅供测试)

  • 伸缩规则:增加 1 台云主机,冷却 1 秒


等待伸缩组冷却完成(状态变为正常)后,我们将创建伸缩组触发的云主机(10.0.0.59)停止来模拟故障



等待几分钟,能够再次自动成功弹出 1 台新的云主机(10.0.0.62),且最早创建的云主机(10.0.0.59)也被移除



我们在找到伸缩组 JAS_group,在伸缩活动页面查看伸缩动态,发现由于我们停止云主机导致检测不健康而被移除,并成功创建了新的云主机



成功弹出的云主机(10.0.0.62)会自动与绑定的负载均衡 alb_test 实例关联,并移除原来不健康的云主机(10.0.0.59)实例



当伸缩组冷却结束后,我们在伸缩组的定时任务中定时增加 1 台云主机,定时任务名称为 add_vm(执行时间设置间隔是 5 分钟,由于是测试,选择当前时间之后最近的时间点就行),用来模拟业务量突增


如果在设置的定时任务时间伸缩组在冷却,则定时任务不会触发。



在伸缩活动中查看状态



在云主机控制台能够看到根据定时任务新弹出的云主机(内网 IP10.0.0.4)



并且,在负载均衡的虚拟服务器组中我们可以看到,新弹出的云主机自动与负载均衡关联



在新建的负载均衡实例 alb_test 上添加一个 HTTP 协议的监听器,如下图点击监听器-新建监听器:



前端监听配置:按照默认下一步即可



后端转发配置:新建一个后端服务 backend_test,其他保持默认配置(加权轮询/不开启会话保持),然后点击下一步



健康检查:按照默认,下一步



添加服务器组:服务器组选择我们上面新建的虚拟服务器组 server_group,也就是说弹性伸缩会配合 ALB 实现伸缩功能,点击确定



复制应用负载均衡的公网 IP 到浏览器查看效果,如下图(刚开始 ALB 配置生效中,可能会出现 502 属于正常现象):


2.ALB 的会话保持功能

京东云应用负载均衡(ALB)是支持云主机与原生容器的会话保持功能的,这里我们实操对京东云原生容器的支持。


在负载均衡实例控制台找到我们上面新建的负载均衡实例 alb_test 点进去,在虚拟服务器组里我们编辑上面我们新建的服务组 server_group



我们将原来的 2 台弹性伸缩生成的云主机删除,然后将上面创建的 2 台原生容器加进来,然后点击确定



我们复制负载均衡实例的公网 IP 到浏览器查看结果(刚开始负载均衡配置生效中,可能会报 502,多刷新几遍)


由于我们设置的是加权轮询规则,所以每次刷新浏览器就会在容器①与容器②之间切换



接下来我们到负载均衡的后端服务编辑 backend_test



将如图中的会话保持功能打开



复制负载均衡公网 IP 到浏览器后,不停刷新,发现请求会一直保持分发到某一台后端服务器(我这里是原生容器②)



由于我们上面设置的会话保持超时时间是 30 秒,且转发规则为加权轮询,所以 30 秒过后,重新刷新浏览器后,请求会被分发到原生容器①


3.三种调度策略效果

调度策略一:加权最小连接数


在一个浏览器中(例如谷歌浏览器)打开多个窗口来对负载均衡发起请求,请求指向某一台后端服务器(我这里是原生容器①);


接下来我们到负载均衡的后端服务编辑 backend_test,将如图中的会话保持功能关闭,并将调度算法更改为加权最小连接数;



为效果明显,在另一个浏览器中(例如火狐浏览器)打开一个窗口对负载均衡发起请求,请求会被分发到另一台处理请求数较少的后端服务器(我这里是原生容器②);



调度策略二:加权轮询


我们将调度算法改为加权轮询



在浏览器中输入负载均衡的公网 IP,每刷新一次浏览器,请求就会轮询分发到后端原生容器(处理请求的后端会不停的换)



调度策略三:源 IP


我们将调度策略改为源 IP



我们打开 3 种不同的浏览器(谷歌、火狐、Microsoft Edge)分别访问负载均衡,当第一个浏览器请求被分配到某一台后端机器的时候(我这里是原生容器①),其他的浏览器请求也都会被分配到这台机器


4.健康检查

确保负载均衡的状态检查功能为开启状态(默认情况下为开启),调度算法为加权轮询



我们将负载均衡虚拟服务器组中对应的任意一台原生容器停止,用以模拟服务器故障



现在我访问负载均衡,刷新浏览器,发现即便调度策略为加权轮询,请求也只会分发到原生容器②,因为原生容器①已经被检测异常


打开负载均衡的后端服务详情,我们能看到原生容器①的健康状态为异常



2019-10-22 19:121514

评论

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

数学计算软件 Wolfram Mathematica for Mac 中文详细安装包

Rose

SnippetsLab for Mac(mac代码管理器)v2.6激活版

Rose

PDF编辑软件 Acrobat Pro DC 2019 for Mac中文激活版

Rose

在Unity中训练智能体

北京木奇移动技术有限公司

AI应用 AI智能体 软件外包公司

观测云产品更新 | 场景图表、基础设施、监控告警策略等

观测云

产品迭代

Cocktail for Mac(系统清理)注册激活码

Rose

云起无垠创始人参与模糊测试研究被网络安全四大顶级会议—NDSS2024收录

云起无垠

sublime text for mac(跨平台代码编辑器代码编辑器)中文版

Mac相关知识分享

数据安全标准合辑之「实施指南类」(附下载)

极盾科技

Mint Blockchain:用 NFT 链接全球消费者的 Layer2 网络

NFT Research

NFT #Web3 L2

喜报!MIAOYUN再获国家高新技术企业认定

MIAOYUN

云原生 信创 高新企业 高新技术企业 高企认定

Spring 应用合并之路(二):峰回路转,柳暗花明

京东科技开发者

产品经理如何进行竞品分析

易成研发中心

产品经理 竞品分析

SponsorBlock for YouTube for Mac(跳过youtube赞助商广告)v5.10.2激活版

iMac小白

小间距LED屏发展特点和市场趋势解析

Dylan

技术 LED显示屏 全彩LED显示屏 led显示屏厂家

如何用Chat GPT打造爆款Listing

kookeey代理严选

代理IP 跨境电商 ChatGPT ChatGPT4 亚马逊运营

提供方耗时正常,调用方毛刺频频

京东科技开发者

QT软件外包开发流程

北京木奇移动技术有限公司

软件外包公司 QT外包开发 QT开发公司

AI智能体开发框架及特点

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI口语练习

文献解读-Processing UMI Datasets at High Accuracy and Efficiency with the Sentieon ctDNA Analysis Pipeline

INSVAST

基因测序 液体活检 生信分析 Sentieon 变异检测

边缘计算+人工智能:让设备更聪明的秘密

天津汇柏科技有限公司

边缘计算 AI 人工智能

阿里巴巴商品详情数据接口(alibaba.item_get)丨阿里巴巴API实时接口指南

tbapi

阿里巴巴API接口 阿里巴巴商品详情接口

Adobe Bridge 2024下载,Br2024中文破解版

Rose

KAG 技术实践分享|信创环境下实现高效知识图谱抽取

可信AI进展

OmniOutliner 5 Pro:项目管理利器,高效规划每一步!

Rose

webGL开发框架及特点

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

Swish for Mac(MacBook触控板窗口管理)

Mac相关知识分享

数据安全标准合辑之「检测评估类」(附下载)

极盾科技

彻底改变你的代码:JavaScript linter—Oxlint

京东科技开发者

Axure RP 11:交互设计新高度,打造极致用户体验!

Rose

「百度集团」资深副总裁、原IDG负责人李震宇加入“华为系”具身智能赛道初创公司!

机器人头条

自动驾驶 华为 人形机器人 具身智能

京东云应用负载均衡(ALB)多功能实操_软件工程_韩超超_InfoQ精选文章