应用负载均衡(Application Load

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

一、实操说明

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

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

二、环境搭建

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

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

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

配置如下:

计费类型:按配置

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

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

带宽: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 | bash

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

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

信息如下:

名称: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

仓库域名:https://index.docker.io

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

邮箱:不填写

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

容器①配置:

计费类型:按配置

地域:华北-北京

可用区:默认

镜像:第三方镜像

镜像仓库:DockerHub

镜像名称:marin0224/alb_test:web01

镜像信息:https://index.docker.io/marin...:web01(自动生成)

规格:1核4GB(默认)

存储:默认

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

带宽:暂不购买

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

名称:alb_test_web01

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

容器②配置:

计费类型:按配置

地域:华北-北京

可用区:默认

镜像:第三方镜像

镜像仓库:DockerHub

镜像名称:marin0224/alb_test:web02

镜像信息:https://index.docker.io/marin...: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.健康检查

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

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

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

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

加入→"京东云"了解更多详情

欢迎点击“京东云”了解更多精彩

京东云php环境配置,干货 | 京东云应用负载均衡(ALB)多功能实操相关推荐

  1. 在虚拟机上搭建云平台环境(7)云平台组件服务安装

    在虚拟机上搭建云平台环境(7)云平台组件服务安装 本文涉及到代码复制,粘贴.CSDN中会复制多余信息导致出错,选择删除多余信息,或者去我的Blog添加配置 https://julur.github.i ...

  2. nginx怎么轮询两台php,Nginx 配置轮询分流-实现负载均衡【测试通过】

    做php2年多了,一直觉得这个玩意很高深,最近总想去了解下.今天抽时间,弄了感觉这个东西没有想象的那么难弄.简单的实现,确实非常容易,但是足可以实现负载均衡分布的功能了.今天就给大家分享下,也算是一个 ...

  3. Nginx+memcached+tomcat配置集群session共享负载均衡

    Nginx+memcached+tomcat配置集群session共享负载均衡 配置环境: windows xp下 jdk1.7.0_10      nginx-1.2.6  (附下载)      m ...

  4. 9、配置链路聚合技术和负载均衡技术

    1.相关知识 什么是骨干网络的链路聚合技术 在许多交换机或交换机设备组成的网络环境中,通常都使用一些备份连接,以提高网络的健全性.稳定性.这种备份连接也叫备份链路.冗余链路等 以太网组织委员会制定的链 ...

  5. 【Nginx那些事】nginx配置实例(二)负载均衡

    [Nginx那些事]系列 [Nginx那些事]nginx 安装及常用指令 [Nginx那些事]Nginx 配置文件说明 [Nginx那些事]nginx原理解析 [Nginx那些事]nginx配置实例( ...

  6. 桌面云计算机的配置,Citrix桌面云实验环境的部署配置

    Citrix桌面云实验环境的部署配置 发布时间:2020-06-05 14:03:31 来源:亿速云 阅读:319 作者:Leah 栏目:云计算 这篇文章给大家分享的是Citrix桌面云实验环境的部署 ...

  7. 滴滴云服务器快速配置搭建滴滴云GPU云服务器搭建深度学习环境

    滴滴云GPU云服务器搭建深度学习环境 1.创建云服务器 1.1注册滴滴云 首先注册滴滴云,并进行实名认证,否则无法创建云服务器.点击"控制台",进入控制台页面. 1.2选择配置 点 ...

  8. 香橙派mqtt阿里云终端(二) --python3.5环境配置以及阿里云环境测试

    书接上回,我搭好了树莓派所需的环境以及往我的个人服务网站上添加了我的树莓派终端,过程当中也是踩了不少坑,不过总算是过来了.接下来切入正题. 目录 python环境以及包配置 基础包安装 阿里云服务器配 ...

  9. 【云服务器 ECS 实战】一文掌握负载均衡服务原理及配置方法

    一.负载均衡基本原理概述 协议/端口 轮询策略 会话保持 二.云服务器 ECS 负载均衡相关配置 协议&监听配置 后端服务器配置 健康检查配置 测试 在上期文章中,介绍了负载均衡的概述及优势, ...

最新文章

  1. java interface list_你了解注解内的@interface List么
  2. 万字长文综述目标检测领域,你要的都在这里
  3. CV之ICG:计算机视觉之图像标题生成(Image Caption Generator)算法的简介、使用方法、案例应用之详细攻略
  4. Windows 7 扩展玻璃效果(Aero Glass)
  5. rabbitmq 启动异常_RabbitMQ:消息发送确认 与 消息接收确认(ACK)
  6. java 语法 冒号_java中生僻的冒号跳转语法
  7. asp.net core web api之异常
  8. teamviewer无法建立连接原因未知_3389远程无法连接的5种原因分析
  9. jquery级试题_腾讯2020前端面试题含答案解析
  10. 不同价格段用户购买手机关注的功能
  11. java统计字符串数字出现次数_java实现统计字符串中大写字母,小写字母及数字出现次数的方法示例...
  12. Confluence 6 附件存储配置
  13. Hadoop安装教程_单机/伪分布式配置
  14. ROS常用命令及脚本
  15. 王阳明:致良知就是让你成为真正的自己
  16. 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明
  17. 腾讯云图,让数据说话
  18. autocad ios 虚线_CAD交互绘制虚线(com接口)
  19. 《人生只有一次,去做自己喜欢的事》读书笔记
  20. 两个栈来实现一个队列的C++代码(某公司社会招聘笔试题)

热门文章

  1. 修改内网服务器数据,内网服务器拷数据
  2. 在虚幻引擎5中构建你的首款游戏 - 10[完] - 特效音效镜头震动打包
  3. 【毕业设计】深度学习身份证识别系统 - 机器视觉 python
  4. java appdata_纯手写!!转移系统用户资料和更改AppData路径的方法 不接受反驳!...
  5. c语言五猴分桃案例分析,C语言程序设计五猴分桃问题实验报告.doc
  6. css中translation,css3 translate属性
  7. 女朋友让我深夜十二点催她睡觉,我用Python轻松搞定
  8. 大幅提升CLIP图像分类准确率-Tip-Adapter
  9. 【codevs 4246】奶牛的身高 差分约束
  10. csr蓝牙适配 linux,Linux系统下蓝牙立体声配置A2DP profile