您可以创建 Avi Load Balancer 配置文件,如应用程序配置文件、持久性配置文件和网络配置文件。此外,还可以进行其他创建,例如,创建单个持久性配置文件,并将该配置文件提供给组织中的另一个团队以供日后使用。

这些示例模板涵盖了创建 Avi Load Balancer 配置文件的几个场景。第一个示例显示了如何创建包含应用程序配置文件、持久性配置文件和网络配置文件的模板。第二个示例展示了如下模板:包含适用于 Avi Load Balancer 的不同类型的持久性配置文件以及云区域分配帮助程序。其余示例侧重于单个持久性配置文件。

这些模板示例涵盖了创建 Avi Load Balancer 配置文件的最低要求。创建与您的组织相关的模板时,请记住,可能需要其他属性。

有关配置文件的详细信息,请参见《VMware NSX Advanced Load Balancer 配置》指南中的负载均衡部分。

应用程序、持久性和网络配置文件

此示例 Avi Load Balancer 模板使用一个应用程序配置文件、一个网络配置文件和一个持久性配置文件。

应用程序配置文件确定虚拟服务的行为。网络配置文件确定网络协议的类型和设置。应用程序配置文件和网络配置文件都与虚拟服务相关联。持久性配置文件控制使客户端在指定持续时间内保持连接到同一服务器的设置。该配置文件连接到 Avi Load Balancer 池。

formatVersion: 1
inputs:
  count:
    type: integer
    title: count
    default: 2
resources:
  Idem_AVILB_PROFILES_HEALTH_MONITOR_1:
    type: Idem.AVILB.PROFILES.HEALTH_MONITOR
    properties:
      name: prof-monitor-${uuid()}
      type: HEALTH_MONITOR_PING
      account: Avi
      tenant_ref: admin
      cloud_ref: cloud01_vcenter-cmbu-w01-vc11
      is_federated: false
      monitor_port: 8000
      send_interval: 8
      receive_timeout: 4
      successful_checks: 4
      failed_checks: 4
  Idem_AVILB_PROFILES_APPLICATION_PROFILE_1:
    type: Idem.AVILB.PROFILES.APPLICATION_PROFILE
    properties:
      name: prof-application-${uuid()}
      type: APPLICATION_PROFILE_TYPE_HTTP
      account: Avi
      http_profile:
        connection_multiplexing_enabled: true
        detect_ntlm_app: true
        websockets_enabled: true
  Idem_AVILB_PROFILES_NETWORK_PROFILE_1:
    type: Idem.AVILB.PROFILES.NETWORK_PROFILE
    properties:
      name: prof-network-${uuid()}
      account: Avi
      profile:
        type: PROTOCOL_TYPE_TCP_PROXY
        tcp_proxy_profile:
          automatic: true
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: prof-vip-${uuid()}
      account: Avi
      tenant_ref: admin
      cloud_ref: cloud01_vcenter-cmbu-w01-vc11
      vip:
        - auto_allocate_floating_ip: false
          auto_allocate_ip: true
          auto_allocate_ip_type: V4_ONLY
          avi_allocated_fip: false
          avi_allocated_vip: false
          enabled: true
          ipam_network_subnet:
            network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
            subnet:
              ip_addr:
                addr: 10.202.20.0
                type: V4
              mask: 22
  Idem_AVILB_PROFILES_APPLICATION_PERSISTENCE_PROFILE_1:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    properties:
      name: prof-persistence-${uuid()}
      account: Avi
      persistence_type: PERSISTENCE_TYPE_CLIENT_IP_ADDRESS
      server_hm_down_recovery: HM_DOWN_PICK_NEW_SERVER
      ip_persistence_profile:
        ip_persistent_timeout: 5
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: prof-pool-${uuid()}
      account: Avi
      tenant_ref: admin
      cloud_ref: cloud01_vcenter-cmbu-w01-vc11
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      default_server_port: 8000
      networks:
        - network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
      health_monitor_refs:
        - ${resource.Idem_AVILB_PROFILES_HEALTH_MONITOR_1.name}
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
      application_persistence_profile_ref: ${resource.Idem_AVILB_PROFILES_APPLICATION_PERSISTENCE_PROFILE_1.name}
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: prof-vs-${uuid()}
      account: Avi
      tenant_ref: admin
      cloud_ref: cloud01_vcenter-cmbu-w01-vc11
      cloud_type: CLOUD_NONE
      type: VS_TYPE_NORMAL
      traffic_enabled: true
      services:
        - enable_ssl: false
          port: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
      application_profile_ref: ${resource.Idem_AVILB_PROFILES_APPLICATION_PROFILE_1.name}
      network_profile_ref: ${resource.Idem_AVILB_PROFILES_NETWORK_PROFILE_1.name}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      image: webserver
      cpuCount: 2
      totalMemoryMB: 4096
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
      count: ${input.count}
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing

持久性配置文件和分配帮助程序

此示例模板包含所有持久性配置文件类型以及分配帮助程序。

云区域分配帮助程序协助基于云帐户上的标记将部署请求定向到所需的 VMware Avi Load Balancer Controller。

formatVersion: 1
name: Create a ALB Persistence Profile
version: 1
inputs:
  env:
    type: string
    title: Environment
    description: Select Dev or Prod ALB environment
    default: env:dev
    oneOf:
      - title: Dev ALB
        const: env:dev
      - title: Prod ALB
        const: env:prod
  name:
    type: string
    title: Persistence Profile Name
    description: A user-friendly name for the persistence profile
  persistenceType:
    type: string
    title: Persistence Type
    description: Select a method used to persist clients to the same server for a duration of time or a session.
    oneOf:
      - title: App Cookie
        const: PERSISTENCE_TYPE_APP_COOKIE
      - title: Client IP Address
        const: PERSISTENCE_TYPE_CLIENT_IP_ADDRESS
      - title: Custom HTTP Header
        const: PERSISTENCE_TYPE_CUSTOM_HTTP_HEADER
      - title: GSLB Site
        const: PERSISTENCE_TYPE_GSLB_SITE
      - title: HTTP Cookie
        const: PERSISTENCE_TYPE_HTTP_COOKIE
      - title: TLS
        const: PERSISTENCE_TYPE_TLS
  server_hm_down_recovery:
    type: string
    title: Select New Server When Persistent Server Is Down ?
    description: Specifies behavior when a persistent server has been marked down by a health monitor. Enum options - HM_DOWN_PICK_NEW_SERVER, HM_DOWN_ABORT_CONNECTION, HM_DOWN_CONTINUE_PERSISTENT_SERVER
    default: HM_DOWN_PICK_NEW_SERVER
    oneOf:
      - title: Immediate
        const: HM_DOWN_PICK_NEW_SERVER
      - title: Never
        const: HM_DOWN_CONTINUE_PERSISTENT_SERVER
  timeout:
    type: integer
    title: Persistence Timeout
    description: The length of time after a client's connections have closed before expiring the client's persistence to a server. Allowed values are 1-720. Unit is Min.
    minimum: 1
    maximum: 720
    default: 20
  ip_mask:
    type: integer
    title: IP Mask
    description: Mask to be applied on client IP. This may be used to persist clients from a subnet to the same server. When set to 0, all requests are sent to the same server. Allowed values are 0-128.
    minimum: 0
    maximum: 128
    default: 0
  prst_hdr_name:
    type: string
    title: Custom Header / App Cookie Name
    description: Header or App Cookie name for application cookie persistence or custom http header.
    default: Set Header Name
  always_send_cookie:
    type: boolean
    title: Always Send Cookie ?
    description: If no persistence cookie was received from the client, always send it.
  cookie_name:
    type: string
    title: Cookie Name
    description: HTTP cookie name for cookie persistence.
    default: Set HTTP Cookie Name
  http_only:
    type: boolean
    title: HTTP Only
    description: Sets the HttpOnly attribute in the cookie. Setting this helps to prevent the client side scripts from accessing this cookie, if supported by browser.
  is_persistent_cookie:
    type: boolean
    title: Is Persistent Cookie
    description: When True, the cookie used is a persistent cookie, i.e. the cookie shouldn't be used at the end of the timeout. By default, it is set to false, making the cookie a session cookie, which allows clients to use it even after the timeout, if the session is still open.
resources:
  Allocations_CloudZone_1:
    type: Allocations.CloudZone
    metadata:
      layoutPosition:
        - 1
        - 2
    properties:
      accountType: avilb
      constraints:
        - tag: ${input.env}
  hdr_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 0
        - 1
    properties:
      name: ${input.name}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      description: Managed by Aria Automation
      count: ${input.persistenceType == "PERSISTENCE_TYPE_CUSTOM_HTTP_HEADER" ? 1 :0}
      persistence_type: ${input.persistenceType}
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      hdr_persistence_profile:
        prst_hdr_name: ${input.prst_hdr_name}
  tls_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 0
        - 3
    properties:
      name: ${input.name}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      description: Managed by Aria Automation
      count: ${input.persistenceType == "PERSISTENCE_TYPE_TLS" ? 1 :0}
      persistence_type: ${input.persistenceType}
  app_cookie_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 0
    properties:
      name: ${input.name}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      description: Managed by Aria Automation
      count: ${input.persistenceType == "PERSISTENCE_TYPE_APP_COOKIE" ? 1 :0}
      persistence_type: ${input.persistenceType}
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      app_cookie_persistence_profile:
        prst_hdr_name: ${input.prst_hdr_name}
        timeout: ${input.timeout}
  ip_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 1
    properties:
      name: ${input.name}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      description: Managed by Aria Automation
      count: ${input.persistenceType == "PERSISTENCE_TYPE_CLIENT_IP_ADDRESS" ? 1 :0}
      persistence_type: ${input.persistenceType}
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      ip_persistence_profile:
        ip_mask: ${input.ip_mask}
        ip_persistent_timeout: ${input.timeout}
  gslb_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 3
    properties:
      name: ${input.name}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      description: Managed by Aria Automation
      count: ${input.persistenceType == "PERSISTENCE_TYPE_GSLB_SITE" ? 1 :0}
      persistence_type: ${input.persistenceType}
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      is_federated: true
      http_cookie_persistence_profile:
        cookie_name: ${input.cookie_name}
        is_persistent_cookie: ${input.is_persistent_cookie}
        timeout: ${input.timeout}
  http_cookie_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 4
    properties:
      name: ${input.name}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      description: Managed by Aria Automation
      count: ${input.persistenceType == "PERSISTENCE_TYPE_HTTP_COOKIE" ? 1 :0}
      persistence_type: ${input.persistenceType}
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      http_cookie_persistence_profile:
        always_send_cookie: ${input.always_send_cookie}
        cookie_name: ${input.cookie_name}
        http_only: ${input.http_only}
        is_persistent_cookie: ${input.is_persistent_cookie}
        timeout: ${input.timeout}

单个持久性配置文件

有关持久性配置文件的详细信息,请参见《VMware NSX Advanced Load Balancer 配置》指南中的持久性

配置文件 示例模板

HTTP Cookie 持久性配置文件

此示例模板展示了如何在 Avi Load Balancer 云帐户中创建 HTTP Cookie 持久性配置文件。

formatVersion: 1
name: Persistence Profile - HTTP Cookie
version: 1
inputs:
  name:
    type: string
    title: Persistence Profile Name
    description: A user-friendly name for the persistence profile
  server_hm_down_recovery:
    type: string
    title: Select New Server When Persistent Server Is Down ?
    description: Specifies behavior when a persistent server has been marked down by a health monitor. Enum options - HM_DOWN_PICK_NEW_SERVER, HM_DOWN_ABORT_CONNECTION, HM_DOWN_CONTINUE_PERSISTENT_SERVER
    default: HM_DOWN_PICK_NEW_SERVER
    oneOf:
      - title: Immediate
        const: HM_DOWN_PICK_NEW_SERVER
      - title: Never
        const: HM_DOWN_CONTINUE_PERSISTENT_SERVER
  timeout:
    type: integer
    title: Persistence Timeout
    description: The length of time after a client's connections have closed before expiring the client's persistence to a server. Allowed values are 1-720. Unit is Min.
    minimum: 1
    maximum: 720
    default: 20
  always_send_cookie:
    type: boolean
    title: Always Send Cookie ?
    description: If no persistence cookie was received from the client, always send it.
  cookie_name:
    type: string
    title: Cookie Name
    description: HTTP cookie name for cookie persistence.
  http_only:
    type: boolean
    title: HTTP Only
    description: Sets the HttpOnly attribute in the cookie. Setting this helps to prevent the client side scripts from accessing this cookie, if supported by browser.
  is_persistent_cookie:
    type: boolean
    title: Is Persistent Cookie
    description: When True, the cookie used is a persistent cookie, i.e. the cookie shouldn't be used at the end of the timeout. By default, it is set to false, making the cookie a session cookie, which allows clients to use it even after the timeout, if the session is still open.
resources:
  http_cookie_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 1
    properties:
      name: ${input.name}
      account: avi-account
      description: Managed by Aria Automation
      persistence_type: PERSISTENCE_TYPE_HTTP_COOKIE
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      http_cookie_persistence_profile:
        always_send_cookie: ${input.always_send_cookie}
        cookie_name: ${input.cookie_name}
        http_only: ${input.http_only}
        is_persistent_cookie: ${input.is_persistent_cookie}
        timeout: ${input.timeout}

应用程序 Cookie 持久性配置文件

此示例模板展示了如何在 Avi Load Balancer 云帐户中创建应用程序 Cookie 持久性配置文件。

formatVersion: 1
name: Persistence Profile - App Cookie
version: 1
inputs:
  name:
    type: string
    title: Persistence Profile Name
    description: A user-friendly name for the persistence profile
  server_hm_down_recovery:
    type: string
    title: Select New Server When Persistent Server Is Down ?
    description: Specifies behavior when a persistent server has been marked down by a health monitor. Enum options - HM_DOWN_PICK_NEW_SERVER, HM_DOWN_ABORT_CONNECTION, HM_DOWN_CONTINUE_PERSISTENT_SERVER
    default: HM_DOWN_PICK_NEW_SERVER
    oneOf:
      - title: Immediate
        const: HM_DOWN_PICK_NEW_SERVER
      - title: Never
        const: HM_DOWN_CONTINUE_PERSISTENT_SERVER
  timeout:
    type: integer
    title: Persistence Timeout
    description: The length of time after a client's connections have closed before expiring the client's persistence to a server. Allowed values are 1-720. Unit is Min.
    minimum: 1
    maximum: 720
    default: 20
  prst_hdr_name:
    type: string
    title: App Cookie Name
    description: App Cookie name for application cookie persistence or custom http header.
resources:
  app_cookie_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 0
    properties:
      name: ${input.name}
      account: avi-account
      description: Managed by Aria Automation
      persistence_type: PERSISTENCE_TYPE_APP_COOKIE
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      app_cookie_persistence_profile:
        prst_hdr_name: ${input.prst_hdr_name}
        timeout: ${input.timeout}

HTTP 自定义标头持久性配置文件

此示例模板展示了如何在 Avi Load Balancer 云帐户中创建自定义 HTTP 标头持久性配置文件。

formatVersion: 1
name: Persistence Profile - Custom HTTP Header
version: 1
inputs:
  name:
    type: string
    title: Persistence Profile Name
    description: A user-friendly name for the persistence profile
  server_hm_down_recovery:
    type: string
    title: Select New Server When Persistent Server Is Down ?
    description: Specifies behavior when a persistent server has been marked down by a health monitor. Enum options - HM_DOWN_PICK_NEW_SERVER, HM_DOWN_ABORT_CONNECTION, HM_DOWN_CONTINUE_PERSISTENT_SERVER
    default: HM_DOWN_PICK_NEW_SERVER
    oneOf:
      - title: Immediate
        const: HM_DOWN_PICK_NEW_SERVER
      - title: Never
        const: HM_DOWN_CONTINUE_PERSISTENT_SERVER
  prst_hdr_name:
    type: string
    title: Custom Header Name
    description: Header name for application cookie persistence or custom http header.
resources:
  hdr_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 0
        - 1
    properties:
      name: ${input.name}
      account: avi-account
      description: Managed by Aria Automation
      persistence_type: PERSISTENCE_TYPE_CUSTOM_HTTP_HEADER
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      hdr_persistence_profile:
        prst_hdr_name: ${input.prst_hdr_name}

客户端 IP 持久性配置文件

此示例模板展示了如何在 Avi Load Balancer 云帐户中创建客户端 IP 持久性配置文件。

formatVersion: 1
name: Persistence Profile - Client IP
version: 1
inputs:
  name:
    type: string
    title: Persistence Profile Name
    description: A user-friendly name for the persistence profile
  server_hm_down_recovery:
    type: string
    title: Select New Server When Persistent Server Is Down ?
    description: Specifies behavior when a persistent server has been marked down by a health monitor. Enum options - HM_DOWN_PICK_NEW_SERVER, HM_DOWN_ABORT_CONNECTION, HM_DOWN_CONTINUE_PERSISTENT_SERVER
    default: HM_DOWN_PICK_NEW_SERVER
    oneOf:
      - title: Immediate
        const: HM_DOWN_PICK_NEW_SERVER
      - title: Never
        const: HM_DOWN_CONTINUE_PERSISTENT_SERVER
  timeout:
    type: integer
    title: Persistence Timeout
    description: The length of time after a client's connections have closed before expiring the client's persistence to a server. Allowed values are 1-720. Unit is Min.
    minimum: 1
    maximum: 720
    default: 20
  ip_mask:
    type: integer
    title: IP Mask
    description: Mask to be applied on client IP. This may be used to persist clients from a subnet to the same server. When set to 0, all requests are sent to the same server. Allowed values are 0-128.
    minimum: 0
    maximum: 128
    default: 0
resources:
  ip_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 1
        - 1
    properties:
      name: ${input.name}
      account: avi-account
      description: Managed by Aria Automation
      persistence_type: PERSISTENCE_TYPE_CLIENT_IP_ADDRESS
      server_hm_down_recovery: ${input.server_hm_down_recovery}
      ip_persistence_profile:
        ip_mask: ${input.ip_mask}
        ip_persistent_timeout: ${input.timeout}

TLS 持久性配置文件

此示例模板展示了如何在 Avi Load Balancer 云帐户中创建 TLS 持久性配置文件。

formatVersion: 1
name: Persistence Profile - TLS
version: 1
inputs:
  name:
    type: string
    title: Persistence Profile Name
    description: A user-friendly name for the persistence profile
resources:
  tls_persistence_profile:
    type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE
    metadata:
      layoutPosition:
        - 0
        - 1
    properties:
      name: ${input.name}
      account: avi-account
      description: Managed by Aria Automation
      persistence_type: PERSISTENCE_TYPE_TLS