Load Balancer Models¶
This section provides an overview of the data models introduced by the Load Balancer app for Nautobot. These models enable users to represent, manage, and track load balancing configurations in a vendor-neutral and infrastructure-aware manner.
The app introduces models to define Virtual Servers, Load Balancer Pools, Load Balancer Pool Members, Health Check Monitors, and SSL Certificate Profiles. Several of these models integrate with Nautobot core apps, including IPAM (for VIPs and pool member IPs), DCIM (for device and chassis assignment), Cloud (for service mapping), and Tenancy (for tenant ownership).
Order of Operations¶
When setting up objects using the Load Balancer data model, it's helpful to follow this recommended order:
- IP Addresses (via Nautobot IPAM)
- Health Check Monitors
- Certificate Profiles (if needed)
- Load Balancer Pools
- Load Balancer Pool Members (assign them to Pools)
- Virtual Servers (link to VIPs and Pools)
This order ensures all necessary relationships and prerequisites are in place as you build your configuration.
Models Overview¶
Model Name | Description |
---|---|
Virtual Server | Represents a front-end VIP and port combination that distributes traffic to a backend pool. |
Load Balancer Pool | A group of backend servers (Pool Members) serving traffic for a Virtual Server. |
Load Balancer Pool Member | An individual backend node within a Load Balancer Pool. |
Health Check Monitor | Monitors the health of Pool Members and Pools to determine availability. |
Certificate Profile | Stores metadata for SSL/TLS certificates used by Virtual Servers or Pool Members. |
Entity Relationship Diagram¶
---
title: Load Balancer Entity Relationship Diagram
---
erDiagram
"nautobot_load_balancer_models.VirtualServer"[VirtualServer] {
string name UK
IPAddress vip FK
int port
choices protocol
Prefix source_nat_pool FK
choices source_nat_type
choices load_balancer_type
boolean enabled
boolean ssl_offload
Device device FK
DeviceRedundancyGroup device_redundancy_group FK
CloudService cloud_service FK
VirtualChassis virtual_chassis FK
Tenant tenant FK
HealthCheckMonitor health_check_monitor FK
CertificateProfile certificate_profiles FK
LoadBalancerPool load_balancer_pool FK
}
"nautobot_load_balancer_models.LoadBalancerPool"[LoadBalancerPool] {
string name
choices load_balancing_algorithm
HealthCheckMonitor health_check_monitor FK
Tenant tenant FK
}
"nautobot_load_balancer_models.LoadBalancerPoolMember"[LoadBalancerPoolMember] {
IPAddress ip_address FK, UK
string label
LoadBalancerPool load_balancer_pool FK
Status status FK
CertificateProfile certificate_profiles FK
int port UK
boolean ssl_offload
HealthCheckMonitor health_check_monitor FK
Tenant tenant FK
}
"nautobot_load_balancer_models.HealthCheckMonitor"[HealthCheckMonitor] {
string name
int interval
int retry
int timeout
int port
choices health_check_type
Tenant tenant FK
}
"nautobot_load_balancer_models.CertificateProfile"[CertificateProfile] {
string name UK
choices certificate_type
string certificate_file_path
string chain_file_path
string key_file_path
datetime expiration_date
string cipher
Tenant tenant FK
}
"ipam.IPAddress"[IPAddress] {
}
"ipam.Prefix"[Prefix] {
}
"dcim.Device"[Device] {
}
"dcim.DeviceRedundancyGroup"[DeviceRedundancyGroup] {
}
"cloud.CloudService"[CloudService] {
}
"dcim.VirtualChassis"[VirtualChassis] {
}
"tenancy.Tenant"[Tenant] {
}
"nautobot_load_balancer_models.VirtualServer" }o--|| "ipam.IPAddress" : "must have"
"nautobot_load_balancer_models.VirtualServer" }o--o| "ipam.Prefix" : has
"nautobot_load_balancer_models.VirtualServer" }o--o| "dcim.Device" : has
"nautobot_load_balancer_models.VirtualServer" }o--o| "dcim.DeviceRedundancyGroup" : has
"nautobot_load_balancer_models.VirtualServer" }o--o| "cloud.CloudService" : has
"nautobot_load_balancer_models.VirtualServer" }o--o| "dcim.VirtualChassis" : has
"nautobot_load_balancer_models.VirtualServer" }o--o| "tenancy.Tenant" : has
"nautobot_load_balancer_models.VirtualServer" }o--o| "nautobot_load_balancer_models.HealthCheckMonitor" : "may have"
"nautobot_load_balancer_models.VirtualServer" }o--o{ "nautobot_load_balancer_models.CertificateProfile" : "may have"
"nautobot_load_balancer_models.VirtualServer" }o--o| "nautobot_load_balancer_models.LoadBalancerPool" : "may have"
"nautobot_load_balancer_models.LoadBalancerPool" }o--o| "nautobot_load_balancer_models.HealthCheckMonitor" : "may have"
"nautobot_load_balancer_models.LoadBalancerPool" }o--o| "tenancy.Tenant" : has
"nautobot_load_balancer_models.LoadBalancerPoolMember" }o--|| "ipam.IPAddress" : "must have"
"nautobot_load_balancer_models.LoadBalancerPoolMember" }o--|| "nautobot_load_balancer_models.LoadBalancerPool" : "must have"
"nautobot_load_balancer_models.LoadBalancerPoolMember" }o--o{ "nautobot_load_balancer_models.CertificateProfile" : "may have"
"nautobot_load_balancer_models.LoadBalancerPoolMember" }o--o| "nautobot_load_balancer_models.HealthCheckMonitor" : "may have"
"nautobot_load_balancer_models.LoadBalancerPoolMember" }o--o| "tenancy.Tenant" : has
"nautobot_load_balancer_models.HealthCheckMonitor" }o--o| "tenancy.Tenant" : has
"nautobot_load_balancer_models.CertificateProfile" }o--o| "tenancy.Tenant" : has
Vendor-Specific Configuration with Custom Fields¶
If you need to store vendor-specific configuration elements — such as F5 iRules, persistence profiles, or application-layer settings — the recommended approach is to use Nautobot's Custom Fields:
- Use a multi-select custom field to track named elements like iRules or HTTP profiles.
- Use a JSON custom field to store unstructured vendor configuration snippets.
- Custom Fields can be scoped to specific object types (e.g., only
VirtualServer
orLoadBalancerPoolMember
) to reflect how your load balancer applies these settings.
This design gives you flexibility to tailor the data model to your environment without forcing unsupported abstractions across different load balancer vendors.