En tant qu'administrateur de cloud, vous pouvez exploiter le plug-in VMware Avi Load Balancer pour provisionner des ressources basées sur des plug-ins lors de la création de votre infrastructure. Vous pouvez également utiliser des aides d'allocation pour fournir une logique d'allocation pour vos ressources Avi Load Balancer.
Avant de commencer
Avant de commencer avec l'un des exemples de modèle, vous devez créer votre compte de cloud Avi Load Balancer dans Automation Assembler, créer un projet, puis ajouter la zone de cloud. Pour obtenir des instructions, reportez-vous à la section Création d'un compte de cloud VMware Avi Load Balancer.
Modèle LBaaS simple
Cet exemple de modèle montre comment vous pouvez créer un service virtuel, un pool et des ressources d'adresses IP virtuelles avec un minimum d'entrées.
Toutes les ressources Avi Load Balancer utilisées dans cet exemple font référence aux constructions Avi Load Balancer qui pointent vers le contrôleur Avi Load Balancer.
Aucune machine ou serveur n'est provisionné dans ce modèle. Vous obtenez la liste des serveurs qui peuvent être mis à jour en continu.
Le modèle correspond par défaut à un pool vide, mais le formulaire et l'entrée sont configurés afin que vous puissiez entrer des adresses IP réelles et qu'un pool normal soit créé.
formatVersion: 1 name: ALB - LBaaS Demo - Simple version: 1 inputs: port: type: integer title: Port description: Traffic sent to servers will use this destination server port unless overridden by the server's specific port attribute. default: 80 servers: type: array title: Servers description: The pool directs load balanced traffic to this list of destination servers. The servers can be configured by IP address, name, network or via IP Address Group. Leaving 0.0.0.0 will result in an empty pool being created. items: type: string minItems: 0 default: - 0.0.0.0 resources: VIP: type: Idem.AVILB.APPLICATIONS.VS_VIP properties: name: vip-${uuid()} account: avi-account description: Managed by Aria Automation vip: - vip_id: 0 auto_allocate_ip: true ipam_network_subnet: network_ref: VMNetwork-PortGroup VirtualService: type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE properties: name: vs-${uuid()} account: avi-account description: Managed by Aria Automation services: - port: ${input.port} pool_ref: ${resource.Pool.name} vsvip_ref: ${resource.VIP.name} Pool: type: Idem.AVILB.APPLICATIONS.POOL properties: name: pool-${uuid()} account: avi-account description: Managed by Aria Automation default_server_port: ${input.port} servers: '${input.servers[0] == "0.0.0.0" ? null :map_by(input.servers, address => {"ip": {"addr": address, "type" : "V4"}})}'
Modèle LBaaS avancé
Cet exemple de modèle montre comment vous pouvez créer un service virtuel, un pool et des ressources IP virtuelles connectés à un réseau existant avec une aide d'allocation de zone de cloud. En outre, le pool est configuré avec le moniteur de santé HTTP du système.
formatVersion: 1 name: ALB - LBaaS Demo 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 port: type: integer title: Port description: Input the server ip's to add to the pool. default: 80 servers: type: array title: Servers description: Input the server ip's to add to the pool. Leaving 0.0.0.0 will result in an empty pool being created. items: type: string minItems: 0 default: - 0.0.0.0 resources: Allocations_CloudZone_1: type: Allocations.CloudZone properties: accountType: avilb constraints: - tag: ${input.env} VIP: type: Idem.AVILB.APPLICATIONS.VS_VIP properties: name: vip-${uuid()} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} description: Managed by Aria Automation vip: - vip_id: 0 auto_allocate_ip: true ipam_network_subnet: network_ref: ${resource.Cloud_vSphere_Network_1.resourceName} VirtualService: type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE properties: name: vs-${uuid()} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} description: Managed by Aria Automation services: - port: ${input.port} pool_ref: ${resource.Pool.name} vsvip_ref: ${resource.VIP.name} Pool: type: Idem.AVILB.APPLICATIONS.POOL properties: name: pool-${uuid()} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} description: Managed by Aria Automation default_server_port: ${input.port} servers: '${input.servers[0] == "0.0.0.0" ? null :map_by(input.servers, address => {"ip": {"addr": address, "type" : "V4"}})}' health_monitor_refs: - System-HTTP Cloud_vSphere_Network_1: type: Cloud.vSphere.Network properties: networkType: existing constraints: - tag: net:vm
Modèle de serveurs Web simple
Cet exemple de modèle montre comment vous pouvez créer un service virtuel, un pool, une adresse IP virtuelle et deux ressources de machine virtuelle de serveur Web connectées à un réseau existant. Le pool est configuré pour surveiller le port 80 à l'aide de l'algorithme Round Robin.
formatVersion: 1 name: ALB - Web Servers 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 clusterSize: type: string enum: - small - medium - large default: small title: Web Server Cluster Size description: Web Server Cluster Size. Small creates one web server and no ALB. Medium creates 2 web servers and a ALB. Large creates 4 web servers and a ALB. username: type: string title: Username default: demouser password: type: string title: Password encrypted: false default: VMware1! port: type: integer title: Port default: 80 health_monitor: type: array items: type: string title: Health Monitors default: - System-HTTP minItems: 1 maxItems: 10 lb_algorithm: type: string title: Load Balancer Algorithm description: The load balancing algorithm will pick a server within the pool's list of available servers. readOnly: false default: LB_ALGORITHM_LEAST_CONNECTIONS oneOf: - title: Least Connections const: LB_ALGORITHM_LEAST_CONNECTIONS - title: Round Robin const: LB_ALGORITHM_ROUND_ROBIN - title: Fastest Response const: LB_ALGORITHM_FASTEST_RESPONSE - title: Consistent Hash const: LB_ALGORITHM_CONSISTENT_HASH - title: Least Load const: LB_ALGORITHM_LEAST_LOAD - title: Fewest Servers const: LB_ALGORITHM_FEWEST_SERVERS - title: Random const: LB_ALGORITHM_RANDOM - title: Fewest Tasks const: LB_ALGORITHM_FEWEST_TASKS - title: Core Affinity const: LB_ALGORITHM_CORE_AFFINITY resources: ALB_HEALTH_MONITOR: type: Idem.AVILB.PROFILES.HEALTH_MONITOR properties: name: web-health-${uuid()} description: Managed by Aria Assembler type: ${input.health_monitor} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} Allocations_CloudZone_1: type: Allocations.CloudZone properties: accountType: avilb constraints: - tag: ${input.env} ALB_APPLICATION_PERSISTENCE_PROFILE: type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE properties: name: apache-appprofile-${uuid()} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} description: Managed by Aria Automation persistence_type: PERSISTENCE_TYPE_CLIENT_IP_ADDRESS server_hm_down_recovery: HM_DOWN_PICK_NEW_SERVER ip_persistence_profile: ip_mask: 24 ip_persistent_timeout: 20 SecurityGroup: type: Cloud.SecurityGroup properties: constraints: - tag: ${input.env} securityGroupType: existing VIP: type: Idem.AVILB.APPLICATIONS.VS_VIP properties: name: web-vip-${uuid()} description: Managed by Aria Automation count: ${input.clusterSize == "small" ? 0:1} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} vip: - vip_id: 0 auto_allocate_ip: true ipam_network_subnet: network_ref: ${resource.Cloud_vSphere_Network_1.resourceName} VirtualService: type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE properties: name: web-vs-${uuid()} description: Managed by Aria Assembler count: ${input.clusterSize == "small" ? 0:1} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} cloud_type: CLOUD_VCENTER services: - port: ${input.port} vsvip_ref: ${resource.VIP[0].name} pool_ref: ${resource.Pool[0].name} Pool: type: Idem.AVILB.APPLICATIONS.POOL properties: name: web-pool-${uuid()} description: Managed by Aria Automation count: ${input.clusterSize == "small" ? 0:1} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} default_server_port: ${input.port} health_monitor_refs: - ${resource.ALB_HEALTH_MONITOR.name} lb_algorithm: ${input.lb_algorithm} application_persistence_profile_ref: ${resource.ALB_APPLICATION_PERSISTENCE_PROFILE.name} servers: '${map_by(resource.Web_Server[*].address, address => {"ip": {"addr": address, "type" : "V4"}})}' Web_Server: type: Cloud.vSphere.Machine properties: name: web count: 2 flavor: small imageRef: https://cloud-images.ubuntu.com/releases/18.04/release/ubuntu-18.04-server-cloudimg-amd64.ova cloudConfig: | packages: - apache2 - open-vm-tools runcmd: ### update the top of the web page to the web servers resource name - sed -i 's/Apache2 Ubuntu Default Page/${self.resourceName}/g' /var/www/html/index.html ### Restart services - systemctl reload apache2 - systemctl restart apache2 ### Log completion - echo 'Cloud-init is done!' >> /tmp/finished.txt networks: - network: ${resource.Cloud_vSphere_Network_1.id} securityGroups: - ${resource.SecurityGroup.id} Cloud_vSphere_Network_1: type: Cloud.vSphere.Network properties: networkType: existing constraints: - tag: net:vm
Modèle de serveurs Web avancé
Ce modèle montre comment vous pouvez créer un service virtuel, un pool et des ressources IP virtuelles connectés à un réseau existant avec une aide d'allocation de zone de cloud. En outre, un moniteur de santé et un profil de persistance d'application sont créés et configurés dans le pool. Enfin, les groupes de sécurité sont énumérés par balise et les serveurs Web de machine virtuelle y sont ajoutés.
formatVersion: 1 name: ALB - Web Servers 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 clusterSize: type: string enum: - small - medium - large default: small title: Web Server Cluster Size description: Web Server Cluster Size. Small creates one web server and no ALB. Medium creates 2 web servers and a ALB. Large creates 4 web servers and a ALB. username: type: string title: Username default: demouser password: type: string title: Password encrypted: false default: VMware1! port: type: integer title: Port default: 80 health_monitor: type: array items: type: string title: Health Monitors default: - System-HTTP minItems: 1 maxItems: 10 lb_algorithm: type: string title: Load Balancer Algorithm description: The load balancing algorithm will pick a server within the pool's list of available servers. readOnly: false default: LB_ALGORITHM_LEAST_CONNECTIONS oneOf: - title: Least Connections const: LB_ALGORITHM_LEAST_CONNECTIONS - title: Round Robin const: LB_ALGORITHM_ROUND_ROBIN - title: Fastest Response const: LB_ALGORITHM_FASTEST_RESPONSE - title: Consistent Hash const: LB_ALGORITHM_CONSISTENT_HASH - title: Least Load const: LB_ALGORITHM_LEAST_LOAD - title: Fewest Servers const: LB_ALGORITHM_FEWEST_SERVERS - title: Random const: LB_ALGORITHM_RANDOM - title: Fewest Tasks const: LB_ALGORITHM_FEWEST_TASKS - title: Core Affinity const: LB_ALGORITHM_CORE_AFFINITY resources: ALB_HEALTH_MONITOR: type: Idem.AVILB.PROFILES.HEALTH_MONITOR properties: name: web-health-${uuid()} description: Managed by Aria Assembler type: ${input.health_monitor} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} Allocations_CloudZone_1: type: Allocations.CloudZone properties: accountType: avilb constraints: - tag: ${input.env} ALB_APPLICATION_PERSISTENCE_PROFILE: type: Idem.AVILB.PROFILES.APPLICATION_PERSISTENCE_PROFILE properties: name: apache-appprofile-${uuid()} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} description: Managed by Aria Automation persistence_type: PERSISTENCE_TYPE_CLIENT_IP_ADDRESS server_hm_down_recovery: HM_DOWN_PICK_NEW_SERVER ip_persistence_profile: ip_mask: 24 ip_persistent_timeout: 20 SecurityGroup: type: Cloud.SecurityGroup properties: constraints: - tag: ${input.env} securityGroupType: existing VIP: type: Idem.AVILB.APPLICATIONS.VS_VIP properties: name: web-vip-${uuid()} description: Managed by Aria Automation count: ${input.clusterSize == "small" ? 0:1} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} vip: - vip_id: 0 auto_allocate_ip: true ipam_network_subnet: network_ref: ${resource.Cloud_vSphere_Network_1.resourceName} VirtualService: type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE properties: name: web-vs-${uuid()} description: Managed by Aria Assembler count: ${input.clusterSize == "small" ? 0:1} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} cloud_type: CLOUD_VCENTER services: - port: ${input.port} vsvip_ref: ${resource.VIP[0].name} pool_ref: ${resource.Pool[0].name} Pool: type: Idem.AVILB.APPLICATIONS.POOL properties: name: web-pool-${uuid()} description: Managed by Aria Automation count: ${input.clusterSize == "small" ? 0:1} account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name} default_server_port: ${input.port} health_monitor_refs: - ${resource.ALB_HEALTH_MONITOR.name} lb_algorithm: ${input.lb_algorithm} application_persistence_profile_ref: ${resource.ALB_APPLICATION_PERSISTENCE_PROFILE.name} servers: '${map_by(resource.Web_Server[*].address, address => {"ip": {"addr": address, "type" : "V4"}})}' Web_Server: type: Cloud.vSphere.Machine properties: name: web count: 2 flavor: small imageRef: https://cloud-images.ubuntu.com/releases/18.04/release/ubuntu-18.04-server-cloudimg-amd64.ova cloudConfig: | packages: - apache2 - open-vm-tools runcmd: ### update the top of the web page to the web servers resource name - sed -i 's/Apache2 Ubuntu Default Page/${self.resourceName}/g' /var/www/html/index.html ### Restart services - systemctl reload apache2 - systemctl restart apache2 ### Log completion - echo 'Cloud-init is done!' >> /tmp/finished.txt networks: - network: ${resource.Cloud_vSphere_Network_1.id} securityGroups: - ${resource.SecurityGroup.id} Cloud_vSphere_Network_1: type: Cloud.vSphere.Network properties: networkType: existing constraints: - tag: net:vm