Avi Load BalancerVMware Aria Automation 통합은 Avi Load Balancer IPAM을 통한 가상 서비스 가상 IP 주소 할당을 지원합니다. 템플릿 내부 또는 입력으로 IP를 지정할 수도 있습니다.

템플릿을 설계할 때는 일부 속성이 필수로 표시되지 않더라도 사용 사례에 따라 템플릿이 작동하는 데 여전히 필요할 수 있다는 점에 유의하십시오. 다음 템플릿 샘플은 다양한 IPAM, vSphereNSX Cloud 시나리오에 대한 지침을 제공합니다.

tier1_lr 특성을 사용하는 일부 템플릿 샘플에서 tier1_lr 이름은 Tier 1 논리적 라우터 이름이 ID와 동일한 경우에만 사용할 수 있습니다. 그렇지 않으면 Tier 1 논리적 라우터 전체 경로(예: /infra/tier-1s/20f6a214-e8b3-4bb3-aaeb-6c06639ada23)를 사용해야 합니다.

시작하기 전에

먼저 Avi Load Balancer 컨트롤러에서 Avi Load Balancer IPAM을 구성한 다음 VMware Aria Automation을 구성합니다.
  1. Avi Load Balancer 컨트롤러에서 서브넷 및 IPAM 프로파일을 구성합니다.

    NSX Advanced Load Balancer IPAM 및 DNS를 참조하십시오.

  2. VMware Aria Automation를 구성합니다.
    1. Automation Assembler에서 Avi Load Balancer 클라우드 계정을 생성하고 프로젝트를 생성하고 클라우드 영역을 추가합니다.

      VMware Avi Load Balancer 클라우드 계정 생성의 내용을 참조하십시오.

    2. 프로비저닝을 위한 네트워크를 구성합니다.

      인프라 > 리소스 > 네트워크로 이동하여 프로비저닝에 사용할 네트워크를 찾고 IPv4/IPv6 CIDR 및 DNS 서버를 구성합니다.

      VMware Aria Automation의 네트워크 리소스의 내용을 참조하십시오.

    3. 이미지 매핑을 구성합니다.

      인프라 > 구성 > 이미지 매핑으로 이동한 후 화면 프롬프트에 따라 새 이미지 매핑을 생성합니다.

      VMware Aria Automation의 이미지 매핑에 대해 알아보기의 내용을 참조하십시오.

    4. 네트워크 프로파일을 구성합니다.

      인프라 > 구성 > 네트워크 프로파일로 이동한 후 화면 프롬프트에 따라 새 네트워크 프로파일을 생성합니다.

      VMware Aria Automation의 네트워크 프로파일에 대해 알아보기의 내용을 참조하십시오.

VS VIP의 정적 IP 주소

Avi Load Balancer 샘플 템플릿에는 가상 서비스, VS VIP 및 풀이 포함됩니다. vSphere 가상 시스템 클러스터가 풀에 할당됩니다. VS VIP에 정적 IP 주소가 있습니다.

formatVersion: 1
inputs:
  count:
    type: integer
    title: vm-count
    default: 2
resources:
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: pool-${uuid()}
      account: Avi
      default_server_port: 8000
      networks:
        - network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
      health_monitor_refs:
        - System-HTTP
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: vs-${uuid()}
      account: Avi
      traffic_enabled: true
      services:
        - port: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: vip-${uuid()}
      account: Avi
      vip:
        - enabled: true
          ip_address:
            addr: 10.202.20.80
            type: V4
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: ${input.count}
      image: webserver
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing

vCenter 클라우드용 VS VIP의 Avi Load Balancer IPAM

Avi Load Balancer 샘플 템플릿은 vCenter 클라우드용입니다.

VS VIP 리소스는 network refsubnet이 포함된 ipam_network_subnet 섹션을 정의합니다. 이 정의는 Avi Load Balancer 컨트롤러에서 VS VIP를 생성할 때 Avi Load Balancer가 정의된 Avi Load Balancer IPAM 프로파일에서 IP 주소를 할당하도록 합니다.

정의된 풀 멤버 클러스터는 정적 네트워크 할당을 사용합니다. Automation Assembler에서 네트워크(예: 도메인, IPv4/IPv6 CIDR, 기본 게이트웨이 및 DNS 서버)를 구성합니다. 그런 다음 이 네트워크를 사용하여 네트워크 범위로 네트워크 프로파일을 설정합니다. 클러스터가 생성되면 네트워크 범위의 IP 주소가 클러스터에 할당됩니다.

inputs:
  count:
    type: integer
    title: count
    default: 2
resources:
  Allocations_CustomNaming_1:
    type: Allocations.CustomNaming
    properties:
      resourceType: Generic
      numberOfNamesToGenerate: 5
      templateName: aviBP
  Idem_AVILB_PROFILES_HEALTH_MONITOR_1:
    type: Idem.AVILB.PROFILES.HEALTH_MONITOR
    properties:
      name: test-mon-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      type: HEALTH_MONITOR_PING
      account: aviAcct
      is_federated: false
      monitor_port: 8000
      send_interval: 8
      receive_timeout: 4
      successful_checks: 4
      failed_checks: 4
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    metadata:
      layoutPosition:
        - 0
        - 2
    properties:
      name: test-pool-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: aviAcct
      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")}
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: test-vs-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: aviAcct
      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}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: ${input.count}
      image: webserver
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    metadata:
      layoutPosition:
        - 2
        - 0
    properties:
      networkType: existing
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: test-vip-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: aviAcct
      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

NSX Cloud용 VS VIP의 Avi Load Balancer IPAM

이 샘플 Avi Load Balancer 템플릿은 NSX Cloud의 Avi Load Balancer용입니다.

NSX Cloud에서 Avi Load Balancer를 프로비저닝하려면 Avi Load Balancer 풀, 가상 서비스 및 VS VIP 리소스에서 계층 1 논리적 라우터(tier1_lr) 및/또는 VRF 컨텍스트(vrf_context_ref)를 정의해야 합니다.

VS VIP 리소스는 network refsubnet이 포함된 ipam_network_subnet 섹션을 정의합니다. 이 정의는 Avi Load Balancer 컨트롤러에서 VS VIP를 생성할 때 Avi Load Balancer가 정의된 Avi Load Balancer IPAM 프로파일에서 IP 주소를 할당하도록 합니다.

formatVersion: 1
inputs: {}
resources:
  Allocations_CustomNaming_1:
    type: Allocations.CustomNaming
    properties:
      resourceType: Generic
      numberOfNamesToGenerate: 5
      templateName: avinsxBP
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: 2
      image: webserver
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: test-vip-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: avinsx
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      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: 192.168.223.0
                type: V4
              mask: 24
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: test-vs-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: avinsx
      cloud_type: CLOUD_NONE
      type: VS_TYPE_NORMAL
      traffic_enabled: true
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      services:
        - enable_ssl: false
          port: 80
          port_range_end: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: test-pool-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: avinsx
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_ref: T1-DONT-DELETE-AVI-Admin-E2E
      health_monitor_refs:
        - System-Ping
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing

NSX Cloud용 VS VIP의 Infoblox IPAM

이 샘플 Avi Load Balancer 템플릿은 Infoblox와의 Avi Load Balancer 통합을 기반으로 합니다. 템플릿은 Infoblox IPAM을 사용하여 NSX Cloud에서 Avi Load Balancer용 VS VIP에 IP 주소를 할당합니다.

템플릿에 있는 ipam_network_subnet 섹션의 network_ref 특성은 Infoblox에 정의된 네트워크 세그먼트의 전체 경로로 설정됩니다. network_ref 값은 /api/network/ 접두사를 포함한 전체 경로여야 합니다. 다른 ref 특성과는 다릅니다.

formatVersion: 1
inputs:
  count:
    type: integer
    title: count
    default: 2
resources:
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: infoblox-vs-${uuid()}
      account: aviinfoblox
      vrf_context_ref: nested-T1
      services:
        - port: 8000
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: infoblox-vip-${uuid()}
      account: aviinfoblox
      vrf_context_ref: nested-T1
      tier1_lr: nested-T1
      vip:
        - auto_allocate_ip: true
          ipam_network_subnet:
            network_ref: /api/network/infoblox--default--192.168.225.0-24
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: infoblox-pool-${uuid()}
      account: aviinfoblox
      tier1_lr: nested-T1
      default_server_port: 8000
      health_monitor_refs:
        - System-HTTP
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: ${input.count}
      image: webserver
      cpuCount: 2
      totalMemoryMB: 4096
      networks:
        - network: ${resource.Cloud_NSX_Network_1.id}
          assignment: static
  Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: existing

풀 멤버에 대한 기존 NSX 보안 그룹

이 샘플 Avi Load Balancer 템플릿은 기존 NSX 보안 그룹을 사용하여 풀 멤버를 할당합니다.

nsx_securitygroup 특성이 정의되고 Idem.AVILB.APPLICATIONS.POOL 리소스의 기존 NSX 보안 그룹 이름으로 설정됩니다.

formatVersion: 1
inputs:
  count:
    type: integer
    title: vm-count
    default: 2
resources:
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: vip-sg-${uuid()}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      vip:
        - auto_allocate_floating_ip: false
          auto_allocate_ip: true
          enabled: true
          auto_allocate_ip_type: V4_ONLY
          ipam_network_subnet:
            network_ref: SEG-DONT-DELETE-AVI-Admin-E2E-Two-Arm-VSVIP
            subnet:
              ip_addr:
                addr: 192.168.223.0
                type: V4
              mask: 24
  Allocations_CloudZone_1:
    type: Allocations.CloudZone
    properties:
      accountType: avilb
      constraints:
        - tag: avi-nsx
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: vs-sg-${uuid()}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      traffic_enabled: true
      services:
        - port: 8000
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: pool-sg-${uuid()}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_ref: T1-DONT-DELETE-AVI-Admin-E2E
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      health_monitor_refs:
        - System-Ping
      nsx_securitygroup:
        - avinsxgroup

단일 풀에 있는 두 개의 고유한 시스템 클러스터

이 샘플 Avi Load Balancer 템플릿에는 풀에 할당된 두 개의 서버 클러스터 Cloud_vSphere_Machine_1(개수 = 2) 및 Cloud_vSphere_Machine_2(개수=3)가 있습니다. Idem 풀의 servers 속성 정의는 일반 바인딩 속성과 다릅니다. 다음과 같은 방식으로 map_to_object 함수를 호출할 때 두 서버 클러스터의 주소를 연결합니다.
${map_to_object(resource.Cloud_vSphere_Machine_1[*].address + resource.Cloud_vSphere_Machine_2[*].address, "ip", "addr")}

가상 서비스, VS VIP, 상태 모니터 및 클라우드 영역 할당 도우미와 같은 다른 구성 요소가 정기적으로 사용됩니다.

formatVersion: 1
inputs: {}
resources:
  Idem_AVILB_PROFILES_HEALTH_MONITOR_1:
    type: Idem.AVILB.PROFILES.HEALTH_MONITOR
    properties:
      name: monitor-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      type: HEALTH_MONITOR_PING
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      is_federated: false
      monitor_port: 8000
      send_interval: 8
      receive_timeout: 4
      successful_checks: 4
      failed_checks: 4
  Allocations_CloudZone_1:
    type: Allocations.CloudZone
    properties:
      accountType: avilb
      constraints:
        - tag: avi-vcenter
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: pool-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      default_server_port: 8000
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address +  resource.Cloud_vSphere_Machine_2[*].address, "ip", "addr")}
      health_monitor_refs:
        - ${resource.Idem_AVILB_PROFILES_HEALTH_MONITOR_1.name}
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: vip-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      vip:
        - auto_allocate_ip: true
          auto_allocate_ip_type: V4_ONLY
          enabled: true
          placement_networks:
            - network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
              subnet:
                ip_addr:
                  addr: 10.202.20.0
                  type: V4
                mask: 22
  Allocations_CustomNaming_1:
    type: Allocations.CustomNaming
    properties:
      resourceType: Generic
      numberOfNamesToGenerate: 1
      templateName: avi-vcenter-bp
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: vs-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      traffic_enabled: true
      services:
        - port: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: 2
      image: photon
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Machine_2:
    type: Cloud.vSphere.Machine
    properties:
      count: 3
      image: photon
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing