您可以建立 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