概要:由于移动云桌面市场前景较好,各区域大力支持下,售卖率较高,同时带来了一些并发的问题,由于一个CS最多支持2000个并发会话,为了满足云桌面客户的并发量,我参照官方推荐,使用VAI作为CONNECTION SERVER 和 UAG的负载均衡,并对AVI进行了UAG和CS 负载均衡的POC。
一、有关Horizon View 使用AVI做负载均衡的POC试验
移动云云桌面Horizon架构:
1.前期网络规划
地址类型 | 地址规划 |
---|---|
AVI Controller01 管理地址 | 172.20.254.235 |
Service Engine 管理地址 | 172.20.254.116-172.20.254.119 |
Horizon CS01 业务地址 | 192.168.253.200 |
Horizon CS02 业务地址 | 192.168.253.199 |
Horizon CS VIP 业务地址 | 192.168.253.150 |
UAG01业务地址 | 192.168.253.249 |
UAG02业务地址 | 192.168.253.248 |
UAG VIP业务地址 | 192.168.253.250 |
2.Application中创建Cloud(基于VMware)
Cloud 是安装或运行Avi Vantage的环境的容器
在基础架构Infrastructure页面中创建Clouds
点击创建按钮
DateCenter中选择 对应数据中心
配置相关网络
设置或者新建Service Engine Group
Service Engine是在一个组中创建的,Service Engine Group包含se应该如何调整大小、如何放置以及如何使其高度可用的定义。每个Cloud将至少有一个SE组。每个Service Engine可能只存在于一个组中。每个组充当一个隔离域。一个Service Engine Group中的Service Engine资源可能会被移动以容纳虚拟服务,但是Service Engine Group之间永远不会共享SE资源 。
记得选择对于的Cloud ,Service Engine Group 是所以唯一的Cloud下的,点击创建
其中High Availability Mode 有3中高可用模式:
- Active/Standby: 两台 Service Engine 其中一主一备,只能创建两个业务引擎。对于一个服务器上的每个活动的虚拟服务,另一个服务器上都有一个配置好的备用服务,备用服务可以在活动SE发生故障时接管。在这种HA模式下没有服务引擎扩展
- Active/Active:这种HA模式将虚拟服务分发到至少两个Service Engine
- N + M (buffer): 这种默认模式允许至多N个活动SE提供虚拟业务,其容量相当于组内M个Service Engine随时准备吸收Service Engine的故障
高级配置中 选择 Service Engine 虚拟机命名浅醉、所属VC文件夹、集群和主机信息
点击保存,完成 Service Engine Group 的创建
以上,我们就完成了,AVI基本的架构,后面就是涉及到具体负载的业务组件了。
3.Template中创建IP Group(内部服务器地址组)
IP Group 是 底层负载服务的ip集合
点击创建按钮
输入唯一Ip group 的名称,输入 底层服务的ip地址,点击添加按钮,添加ip,点击保存。
4.Template中创建IP中创建创建服务可用性的健康检查
负载均衡很重要的一点是,如何判断底层是否可以用呢,如果底层服务不可用时,需要暂停不可用底层服务的,或者将不可用的服务剔除负载。
在将客户端负载平衡到特定服务器之前,Avi Vantage 必须验证服务器是否正常工作以及是否能够适应额外的工作负载。运行状况监控器通过主动向服务器发送综合事务或被动监控客户端与服务器的体验来执行此功能。Avi Vantage 定期发送来自托管虚拟服务的服务引擎的活动运行状况监视器
下面就要创建 服务的监控检查监控。
点击创建按钮,如下图
上图中,需要输入健康监控的唯一名称,监控的手段,有HTTPS/HTTP/TCP/UDP/PING等,并设置其他选项。详见:什么是health-monitors
在输入请求的端口信息和请求的url,Horizon Connection Server 中的端口是443,可以通过q请求/portal/favicon.ico
资源判断CS是否正常。(虽然这里有点暴力,地址能访问,不代表CS内部正常)。
最后在 通过Response Code
以2XX
开头,代表访问正常,也代表CS状态健康。
点击保存。
5.Application中创建POOL绑定各种负载均衡策略及组件
pool护分配给它们的服务器列表,并执行健康监控、负载平衡、持久性和涉及 Avi-Vantage
与服务器交互的功能。典型的虚拟服务将指向一个池;但是,更高级的配置可能会通过HTTP
请求策略或DataScripts跨多个池切换虚拟服务内容。一个池一次只能被一个虚拟服务使用或引用。
详情见:什么是pool
进入Application 选择Pools 点击创建
填写pool的负载均衡策略等
- name:为池提供唯一名称。
- Default server port:与服务器的新连接将使用此目标服务端口。默认端口为 80,除非它是从虚拟服务继承的(如果池是在同一工作流中创建的),或者端口是手动分配的。通过在Step2: Servers选项卡中编辑单个服务器的服务端口字段,可以在每个服务器的基础上更改默认服务器端口设置。
- Load Balance: Round Robin- 新连接按顺序发送到池中下一个符合条件的服务器。这种静态算法最适合基本负载测试,但不适用于生产流量,因为它没有考虑单个服务器的变化速度或周期性打嗝。
- Enable real time metrics:Checking this option enables real time metrics for server and pool metrics. Default is OFF.
- Persistence: 默认情况下,每次客户端打开与虚拟服务的新连接时,Avi Vantage 都会将客户端负载平衡到新服务器。不能保证客户端会重新连接到它之前连接到的同一台服务器。持久性配置文件确保来自同一客户端的后续连接将连接到同一服务器。持久性可以被认为是负载均衡的对立面:客户端与 Avi Vantage 的第一个连接是负载均衡的;此后,该客户端及其建立的任何连接将在所需的时间段内持久保存到同一服务器。对于大多数在本地维护客户端会话信息的服务器来说,持久连接是至关重要的。例如,许多 HTTP 应用程序会将用户的信息保存在内存中 20 分钟,这使用户能够通过重新连接到同一服务器来继续他们的会话。作为最佳实践,需要持久性的 HTTP 虚拟服务应该使用 HTTP cookie,而需要持久性的一般 TCP 或 UDP 应用程序将使用客户端的源 IP。
选择之前创建IP Group
点击保存。
6.Application中创建VirtualService
虚拟服务是 Avi Vantage 负载平衡和代理功能的核心。虚拟服务向外部世界通告 IP 地址和端口并侦听客户端流量。当虚拟服务接收流量时,它可以配置为:
- 代理客户端的网络连接。 执行安全、加速、负载均衡、收集流量统计和其他任务。 将客户端的请求数据转发到目的池进行负载均衡。
- 执行安全、加速、负载均衡、收集流量统计和其他任务。
- 将客户端的请求数据转发到目的池进行负载均衡。
代理客户端的网络连接。
通常,客户端和 Vantage 之间的连接在 SE 处终止或代理,这会在其自身和服务器之间打开一个新的 TCP 连接。服务器将直接响应 Vantage IP 地址,而不是原始客户端地址。Vantage 通过自身与客户端之间的 TCP 连接将响应转发给客户端。
首先进入Application 选择Virtual Service,点击创建,选择 Advance setup
选择我们之前创建的Cloud
进入到创建页面:
输入 Virtual Service 的唯一名称,输入VIP,选择 TCP/UDP Profile 和Application Profile
有关Application Profile 详见:application profile 参考
有TCP/UDP Profile 详见:TCP/UDP Profile
添加VIP 对应端口,映射到 后台服务端口
添加之前创建的pool
点击保存,及创建Virtual Service,之后会显示 创建的Virtual Service:
在Infrastructure 会出现 Sevice Engine 正在安装中(图中是已经安装好的)
注意,如果一般在安装SE中,下图红框中会显示 进度:
7、验证负载均衡效果
我们可以查看VirtualSerivce的 日志,分析请求的日志记录
如需要通过UAG 访问Horizon 的云桌面,则需要对UAG进行负载均衡,其配置与 上面方式大致一致,有需要的同学,可以尝试配置一下。
作者:庞飞
链接:https://ecloud.10086.cn/api/query/developer/user/home.html?ticket=ST-15374-0HLCgSGLDecRBJAffNVH-cas01.example.org#L2FwaS9xdWVyeS9kZXZlbG9wZXIvYmxvZy9ibG9nZGV0YWlsLmh0bWw/YmxvZ19pZD0yMzcyN2U2ZGYzNWY0ODNjOTQzYzE2NWQ3MGVhMWVkOA==
来源:移动云开发者社区