Citrix ADC管理分区验证参考设计
功能概述
Citrix ADC Admin Partitions在单个Citrix ADC实例中支持软件级别的多租户。每个分区都有自己的控制平面和网络平面。
管理分区的主要好处是:
- 控制平面—配置和管理隔离
- 数据平面——关键分区数据和文件严格控制在分区边界内
- 网络平面—使用自己的网络配置隔离流量。同一个Citrix ADC上的两个分区看到的通过每个分区的流量不相同
本文档详细介绍了管理员分区启用的典型用例,以及在客户环境中使用管理员分区的指南。
管理分区用例
管理分区的企业用例
Citrix ADC管理员可以将一个Citrix ADC划分为多个ADC,并将分区分配给不同的应用程序管理员,如Microsoft SharePoint和Microsoft Lync。每个应用程序管理员/所有者都可以进行自己的配置更改。
IP重叠:IP重叠的主要好处是可以跨不同的Admin分区使用相同的IP范围,而不会产生任何IP冲突。对于后端服务器,可以使用相同的私有IP地址集。IP重叠场景下,vlan不能共享。
虚拟路由:每个分区的路由配置是唯一的,每个分区所有者可以配置自己的路由协议。
名称空间隔离:实体名称在不同的分区中是惟一的,因此可以在不同的Admin分区中使用相同的名称。
参考图:
单网卡—多个vlan
IP重叠:
管理分区的服务提供者用例
服务提供者可以对Citrix ADC进行分区,并根据各自的带宽需求和并发连接数量将其分配给各个客户机。
服务提供者可以使用NITRO api开发编排工具,从各自的客户端获取关于带宽需求和并发连接的输入,创建分区并将其分配给客户端。
以下是一组帮助服务提供者的隔离:
文件系统:每个分区被分配到文件系统的一部分,存储在该分区空间中的文件对其他分区是不可见的。SSL certs/密钥存储在该分区中,对其他分区所有者不可见,因此使每个分区都是安全的。
共享VLAN:在具有多租户部署的典型服务提供者中,终端客户可能没有独立的vlan用于传入的流量。当不可能有专用VLAN时,共享VLAN特性共享VLAN。
VLAN标记:单个接口可以跨多个管理分区共享,并通过使用带标记的VLAN进行隔离。对于untagged VLAN,使用共享VLAN。
故障诊断和调试:管理员可以独立查看每个分区的流量统计信息,并通过分区ID过滤出日志。跟踪函数确保了分区独立性,因为从一个分区发起的跟踪永远不会看到来自另一个分区的包。
参考图
实现管理分区的指南
管理员分区支持共享资源,包括带宽、内存和并发连接,并提供网络、数据和管理平面的隔离。
分区的资源
ADC管理员在配置管理分区时需要了解以下细节:
- 连接数- (TCP连接数)
- 内存
- 带宽需求
连接数量和带宽需求取决于应用程序和各自分区处理的流量。ADC管理员与应用程序管理员协商后将获得分区的连接/带宽。
内存分配的指导方针
分配给默认分区的内存量至少应该是总可用内存量的50%,原因如下:
- 为将来客户提供灵活性,以便在达到极限的情况下增加其他分区的内存。
- 所有分区的集成缓存内存取自默认分区。
PE可使用的总内存为4gb。因此,除管理分区外,总共可以分配2 GB给所有分区。
分配给管理分区的内存有两个用途:
- 存储静态对象(配置、SSL密钥)
- 动态对象——根据启用的特性列表和分配给动态对象的连接数量的不同,内存会有所不同
ADC管理员使用来自应用程序所有者的连接和带宽需求以及以下指导原则来进行内存估计。
为配置分配静态内存的指南
表1列出了常用的配置和所需的内存。
表1
类型的配置 | 每个包引擎分配的内存(以KB为单位) |
---|---|
添加剪断 | 255 |
添加IPv4服务器 | 0.384 |
添加服务 | 5.253 |
使用服务添加vServer | 11.157 |
绑定vlan到分区 | 0.116 |
添加路由到分区 | 0.564 |
添加acl | 0.5 |
添加监控 | 4.34 |
添加服务团体 | 4.625 |
绑定服务器到服务组 | 5.817 |
添加cs操作 | 4.532 |
添加cs策略 | 2.548 |
添加cs vserver | 11.589 |
绑定cs策略到cs vServer | 7.348 |
配置是跨PE复制的,因此上面的需求需要乘以PE的数量。
动态内存指南
表2
功能 | 内存需求 |
---|---|
连接(仅适用于Citrix ADC版本为12.0及以上) | 每1k连接2.4 MB |
持久会话 | 600kb / 1k会话 |
GSLB持久会话 | 每1k会话6 MB |
SSL | SSL Offload中1000 SSL连接/会话为6mb,端-端SSL中1000 SSL连接/会话为9mb |
AAA -依赖于用户数量 | 用户数量* 2kb |
重写——获取重写策略将解析的最大长度 | 连接数*最大长度 |
Responder—获取Responder策略将解析的最大长度 | 连接数*最大长度 |
TCP缓冲 | 20%的连接*配置的TCP缓冲区大小 |
动态内存=从上表中每一行计算出的内存之和。
在计算的总内存中添加10-20%的缓冲区。
一些特性(如AppQoE)的内存需求没有提供,因为对于这些特性,分区内存消耗的内存可以忽略不计,10-20%的缓冲区足以处理它们。
总内存=静态内存* PE的个数+动态内存
让我们假设我们得出的结论是,所需的内存是1 GB,包引擎的数量是4。然后,对于特定的分区,所需的内存量由以下公式推导:
管理分区内存配置=(所需内存数量/包引擎数量)
Admin分区内存= 1GB/4 = 250mb
达到资源限制时的行为
- 连接-新的连接将被删除
- 带宽—新流量将被丢弃
- 内存-新的流量将被丢弃
您可以配置SNMP警报,当特定分区的资源耗尽时会触发该警报。snmp trap列表在附加资源部分给出。
网络平面
VLAN:为Admin partition配置并分配不同的VLAN,以保持网络级别的隔离。
路由:每个分区的路由配置都是唯一的。
ADC管理员与网络管理员协商(使用来自应用程序管理员的输入),根据网络拓扑定义VLAN和路由相关的配置。
L3参数:可以是分区特定的。一些L3参数是Drop DF Packets, ICMP err threshold, overridernat等,输入应该来自网络或ADC管理员。
控制平面:用户体验
管理分区提供不同级别的隔离,允许用户安全地管理隔离的ADC实例。
不同级别的隔离包括:
- UI页面-配置,仅显示该分区的统计信息
- 诊断—跟踪隔离。跟踪不会捕获其他分区的流量
- SNMP警报—在分区级别配置
- 进行日志级别隔离
可使用以下方法配置ui级隔离:
- 在各自的分区中,启用mgmt。访问一个SNIP,并使用该SNIP访问GUI。这将只提供该分区的ui级隔离和可见性。
表3
日志类型 | 分区特定的 |
---|---|
博客 | 是的 |
Techsupport包 | 是的 |
Auditlogs | 没有 |
/var/log | 没有 |
企业用例的管理分区
本节描述一个企业客户用例,其中有四个应用程序使用Admin partition。
客户需求
需要托管4个应用程序
每个应用程序都有自己的管理员和一组不同的ADC需求。下表列出了应用程序及其独特需求。
表4
应用程序 | 特征 | 需求/功能 |
---|---|---|
SharePoint | 共享文件,音频,文件等。 | 缓存,压缩,认证,SSL卸载,SSL配置文件 |
数据库 | 自定义SQL规则、身份验证、读写分离以获得更好的性能 | SQL相关关键字的内容切换、策略基础 |
企业网站 | 公共访问-容易受到攻击,应用防火墙 | DDoS, AppQOE, AppFW, SSL配置文件 |
前景 | 集成AD、SSO,在HTTP协议下性能更好 | 认证单点登录,SSL卸载 |
从上面的需求表中可以清楚地看到,每个应用程序都需要一组不同的配置来实现Citrix ADC的全部优点。建议对Citrix ADC进行分区,并将这些分区分配给各自的应用程序所有者。
带宽和连接估计
前景和SharePoint
像SharePoint、Exchange和Lync这样的企业应用程序的带宽依赖于:
- 并发用户数
- 类型的使用
- 交换——消息的平均大小和数量
- 文件类型,读和写的比例
应用程序管理员使用上述两个因素计算带宽需求,并将信息提供给Citrix ADC管理员,以配置管理分区。
例子:
Outlook 2010的带宽:用户类型(轻、中、重等)。对于中等用户,平均发送10封邮件,接收40封邮件。size 50 kb = 2.15 Kbps。对于1,000个用户,所需带宽为2,150kbps。
SharePoint的带宽:用户数= 1000。假设20%的用户在任何时间点都是活跃的,平均页面负载大小为100 KB,在1小时内访问大约10个页面:
= 100 KB*
200*
10 /小时= 200000 KB/小时= 200000*8(每字节8位)/3600(无秒)
= 444 Kbps
每秒连接数=活动用户的数量*
10
该软件
根据查询的速率和响应的大小,推导出带宽和连接。
企业网站
带宽要求:平均页面大小*
任何时间的最大用户数*
2
连接数:最大用户数*每个用户的连接数
例子:
带宽:4 kb10002 = 48000 Kbps
最大用户数= 1000,每个用户连接数= 10。连接数= 10K
如果大多数用户来自HTTP/1.1,那么每个用户的连接数将是2-3,但如果混合更倾向于HTTP/1.0,那么连接数将是10-15。每个用户连接的乘因子数根据流量/客户端组合的不同而变化为3-15。
配置的内存取决于:
- 在各自的管理分区中的配置列表-静态内存。参见表1了解更多细节。
- 动态内存——连接数量和连接类型(HTTP vs. SSL)——请参阅表2了解更多细节。
- 包引擎的数量。内存=(静态内存+动态内存)/(包引擎数量)
ADC管理的步骤
- 收集每个应用程序的带宽和连接
- 分别为SharePoint、Database和Outlook创建三个分区。使用上一步中的带宽和连接,并将其分配给各自的分区。如果客户需要AppFW,则可以将企业网站托管在默认分区上,因为AppFW只支持在默认分区上。
- 为每个分区创建用户并共享凭证。
启用集成缓存并设置缓存内存。缓存内存取自默认分区中配置的缓存内存。有关分配的详细信息,请参阅《IC》附录部分。
- 在咨询ADC管理员后分配缓存内存。尽量分配系统中总缓存内存的30-40%。如果分配的总容量为10gb,请在SharePoint分区中分配约3-4 GB的缓存空间。
- 应用程序所有者最初应该监视缓存统计信息,以检查好处的级别。
- 检查缓存对象命中率,如果大量的缓存对象有很高的命中率,增加特定分区的IC内存的大小。
- 启用压缩
- SharePoint将发布不同类型的文件(Excel、PowerPoint、Word),如果将相同的文件压缩并交付给客户端,将减少带宽使用。
数据库用户
- 配置CS、VIP和后端服务器。
- 使用内容切换来分割读/写请求并重定向到相应的服务器集。
企业网站
- 配置VIP和后端服务器。
使集成缓存。
- 企业网站位于默认分区中,因此其他分区中未使用的缓存内存可用于企业网站。假设SharePoint和Outlook各自消耗35%,那么总消耗将是70%,剩下的30%留给默认分区(企业网站)。如果总缓存内存是10gb,默认分区将有3gb的缓存内存。
- 应用程序所有者最初应该监视缓存统计信息,以检查好处的级别。
- 检查缓存对象命中率,如果大量的缓存对象有很高的命中率,那么增加特定分区的IC内存的大小。
- 使前端优化。
- 启用AppFW。
服务提供者管理分区用例
服务提供者托管微软应用程序,并将IIS、SharePoint和MSSQL应用程序作为服务提供。他们的客户通常有这些要求:
客户需求
客户1:访问数据库服务器,其读写分割为90:10,最终客户希望配置自定义sql相关过滤器
客户2:通过SSL访问web应用,最终客户希望控制他们的SSL证书
客户3:从服务提供者访问托管的SharePoint
服务提供者为其客户托管一个门户,以便:
- 选择要承载的应用程序
- 带宽需求
服务提供者为其客户托管一个门户,以便:
- 选择要承载的应用程序
- 带宽需求
- 连接
根据所做的选择,服务提供者可以使用NITRO api为适当的分区配置与后端特定应用程序相关的配置。
根据客户选择的应用程序,选择适当的选项。
- 使用SSL的Web应用程序
- SSL证书选项将被绑定到VIP
- HTTP到HTTPS重定向
- SSL配置文件相关参数
- SQL
- 客户想要配置的SQL相关过滤器
- SharePoint
- 缓存内存限制和规则
- 压缩的政策
在创建Admin partition之后,Service Provider遵循两个选项中的一个来实现确切的需求。
配置选项1:
服务提供者收集来自客户的请求,并在各自的分区上执行它们。
配置选项2:
使用NITRO api自动化管理分区。可以从前端门户收集输入,并在后端执行NITRO api来配置分区。
功能考虑
特性支持:Admin分区支持大多数特性,只支持少数特性。具体列表请参见Citrix文档并检入特定的软件版本。它将包含一个列出可支持性矩阵的表。
配置的限制。管理分区不支持:
聚类
MPX-FIPS设备
结论
Admin Partitions的主要好处是支持在软件级别分离ADC,并为每个分区所有者提供安全、隔离的用户体验。
额外的资源
故障诊断工具
Admin分区常见问题:
在ESX上VPX的管理分区:
配置自定义MAC地址时,非默认分区不可达。
解决方案:混杂模式需要在ESX上启用,以使非默认分区工作。
配置失败:
配置可能无法抛出输入文件不存在的错误。
需要使用相对路径,而不是绝对路径。
VLAN配置:
- Admin Partition VLAN支持tagged VLAN,因此当VLAN被tagged时,Citrix ADC接口所连接的交换机应该配置相应的VLAN。对于无标记VLAN,使用共享VLAN配置
集成高速缓存内存分配
要在分区的Citrix ADC上配置集成缓存(IC),在默认分区上定义IC内存后,超级用户可以在每个管理分区上配置IC内存,以便分配给所有管理分区的IC内存总数不超过默认分区上定义的IC内存。未为管理分区配置的内存仍可用于默认分区。
例如,如果一个有两个管理分区的Citrix ADC设备将10gb的IC内存分配给默认分区,两个管理分区的IC内存分配如下:
Partition1: 4 GB
Partition2: 3 GB
然后,默认分区有10 - (4 + 3)= 3gb的IC内存可用。
请注意:
如果所有的IC内存都被admin分区占用,则默认分区没有可用的IC内存。
查询内存使用情况的命令
- 分区内的系统内存统计将显示该分区的聚合系统级内存分配,而分区名称统计将显示分区内使用的内存百分比。
>add partition p1 Done >switch partition p1 Done p1> stat system memory Done Citrix ADC memory Information: Maximum memory Available (MB): 50 memory current Available (MB): 50 memory Allocated (MB) 7 memory Allocated (%) 14.95 InUse memory (MB) 7 InUse memory (%) 14.95 Free memory (MB) 42 >stat partition p1 partition (s) Summary MinBW MaxBW MaxConn MaxMem p1 10240 10240 1024 10 partition Stats:速率(/s)当前总带宽—0当前连接数—0内存使用率(%)—14总包丢弃数0 7总连接丢弃数(KB) 0 0总连接丢弃数0 0
- 配置内存:由于每个配置都复制到每个包引擎中,因此在每个包引擎中分配内存。例如,如果“add lb vserver”命令在peach Packet Engine中大约占用10KB,而我们在一个5 - Packet Engine系统中创建了10MB的分区,那么它总共消耗50KB的分区内存。
- 通过在Citrix ADC shell上应用配置并运行以下命令,可以测量特定配置的内存需求的精确值:
root@ns# nsconmsg -s nsppeid=0 -s nspartid=1 -g mem_cur_usedsize -d current显示性能信息Citrix ADC V20性能数据Citrix ADC NS11.0: Build 65.572。nc, Date: Apr 7 2016, 10:32:51 reltime:mili second between two records Thu Feb 23 13:45:18 2017 Index rtime totalcount-val delta rate/sec symbol-name&device-no 0 22681 1597631 8965 5333 mem_cur_usedsize partition_ctx(p1) (PART-1)
在这个实验中,PPE-0为Partition ID 1使用了大约9KB的内存。在Citrix ADC上配置的每个Partition都有一个惟一的ID。
下面的命令允许测量给定分区的整个系统(包括所有数据包引擎)的内存估计。
root@ns# nsconmsg -s nspartid=1 -g mem_cur_used -d current显示性能信息Citrix ADC V20性能数据Citrix ADC NS11.0: Build 65.572。nc, Date: Apr 7 2016, 10:32:51 reltime:mili second between two records Thu Feb 23 13:44:27 2017 Index rtime totalcount-val delta rate/sec symbol-name&device-no 0 7000 7881865 6403 5333 mem_cur_usedsize partition_ctx(p1) (PART-1)
Citrix ADC 12.0中引入的SNMP trap列表
陷阱的名字 | 描述 |
---|---|
partitionCONNLimitExceeded | 分区的连接限制已用尽,新的连接正在被丢弃 |
partitionCONNLimitNormal | 分区现在可以接受新的连接 |
partitionBWLimitExceeded | 分区的BW限制已用尽,包正在被丢弃 |
paritionBWThresholdReached | 当前BW使用率>= 80% |
partitionCONNThresholdReached | 当前活动连接计数>= 80% |
paritionCONNThresholdNormal | 当前活动连接计数<= 60% |
partitionMEMThresholdReached | PE >当前内存使用率= 80% |
partitionMEMThresholdNormal | PE当前内存使用率<= 60% |
partitionMEMLimitExceeded | PE >当前内存使用率= 95% |