Virtual servers are combination of an IP and a port that distribute traffic among nodes in a pool. You can associate a virtual server with one or more pools.
Use the following operations to view and manage virtual servers configured in the load balancer.
Retrieve virtual server details
Retrieve information about all virtual servers configured in the load balancer, including configuration data and status information.
GET /virtuals
This operation does not accept a request body.
Response
{
"data": [
{
"id": "VIP-127.0.0.1-80",
"address": "127.0.0.1",
"addressStatus": "yes",
"appService": null,
"auth": {},
"autoLasthop": "default",
"bwcPolicy": null,
"clonePools": {},
"cmpEnabled": "yes",
"connectionLimit": 0,
"description": null,
"fallbackPersistence": null,
"gtmScore": 0,
"ipForward": "",
"ipProtocol": "tcp",
"lastHopPool": null,
"mask": "255.255.255.255",
"metadata": {},
"mirror": "disabled",
"mobileAppTunnel": "disabled",
"nat64": "disabled",
"partition": "Common",
"persist": {
"cookie": {
"default": "yes"
}
},
"policies": "none",
"pool": {},
"port": {
"type": "equal",
"value": 80
},
"profiles": {
"http": {
"context": "all"
},
"tcp": {
"context": "all"
}
},
"rateClass": null,
"rateLimit": "disabled",
"rateLimitDstMask": 0,
"rateLimitMode": "object",
"rateLimitSrcMask": 0,
"relatedRules": null,
"rules": null,
"securityLogProfiles": {},
"source": "0.0.0.0/0",
"sourceAddressTranslation": {
"pool": "none",
"type": "none"
},
"sourcePort": "preserve",
"synCookieStatus": "not-activated",
"trafficClasses": {},
"translateAddress": "enabled",
"translatePort": "enabled",
"vlans": {},
"vsIndex": 7
}
]
}
Add a virtual server
Add a virtual server configuration to the load balancer. When you add a virtual server configuration, do not specify an IP address unless you want to add a configuration to an existing address on a unique port.
POST /virtuals
Request body
{
"address": "172.16.1.160",
"source": "0.0.0.0\/0",
"ipProtocol": "tcp",
"ipForward": "disabled",
"gtmScore": 0,
"description": "New Description",
"fallbackPersistence": null,
"port": {
"value": 80,
"type": "equal"
},
"connectionLimit": 99
}
Response
Returns event information for the request. Use the event ID to get event status and output information.
{
"data": {
"eventId": "02d1ba2a-0edf-4583-8e2c-ab0b54c78193",
"status": "PROCESSING",
"resource": "Virtuals",
"eventRef": "/events/<eventId:str>",
"timestamp": "2016-03-18T03:18:35.5077939Z"
}
}
Retrieve virtual server statistics
Retrieve statistical information for all virtual servers configured in the load balancer.
GET /virtuals/stats
This operation does not accept a request body.
Response
{
"data": [
{
"clientside": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"cmpEnableMode": "all-cpus",
"cmpEnabled": "enabled",
"csMaxConnDur": 0,
"csMeanConnDur": 0,
"csMinConnDur": 0,
"destination": "127.0.0.1:80",
"ephemeral": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"fiveMinAvgUsageRatio": 0,
"fiveSecAvgUsageRatio": 0,
"id": "VIP-127.0.0.1-80",
"name": "VIP-127.0.0.1-80",
"oneMinAvgUsageRatio": 0,
"status": {
"availabilityState": "unknown",
"enabledState": "enabled",
"statusReason": "The children pool member(s) either don't have service checking enabled, or service check results are not available yet"
},
"syncookie": {
"accepts": 0,
"hwAccepts": 0,
"hwSyncookies": 0,
"hwsyncookieInstance": 0,
"rejects": 0,
"swsyncookieInstance": 0,
"syncacheCurr": 0,
"syncacheOver": 0,
"syncookies": 0
},
"syncookieStatus": "not-activated",
"totRequests": 0
},
{
"clientside": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"cmpEnableMode": "all-cpus",
"cmpEnabled": "enabled",
"csMaxConnDur": 0,
"csMeanConnDur": 0,
"csMinConnDur": 0,
"destination": "127.0.0.1:443",
"ephemeral": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"fiveMinAvgUsageRatio": 0,
"fiveSecAvgUsageRatio": 0,
"id": "TestVip-DONT-DELETE",
"name": "TestVip-DONT-DELETE",
"oneMinAvgUsageRatio": 0,
"status": {
"availabilityState": "unknown",
"enabledState": "enabled",
"statusReason": "The children pool member(s) either don't have service checking enabled, or service check results are not available yet"
},
"syncookie": {
"accepts": 0,
"hwAccepts": 0,
"hwSyncookies": 0,
"hwsyncookieInstance": 0,
"rejects": 0,
"swsyncookieInstance": 0,
"syncacheCurr": 0,
"syncacheOver": 0,
"syncookies": 0
},
"syncookieStatus": "not-activated",
"totRequests": 0
},
{
"clientside": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"cmpEnableMode": "all-cpus",
"cmpEnabled": "enabled",
"csMaxConnDur": 0,
"csMeanConnDur": 0,
"csMinConnDur": 0,
"destination": "127.0.0.1:443",
"ephemeral": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"fiveMinAvgUsageRatio": 0,
"fiveSecAvgUsageRatio": 0,
"id": "VIP-127.0.0.1-443",
"name": "VIP-127.0.0.1-443",
"oneMinAvgUsageRatio": 0,
"status": {
"availabilityState": "available",
"enabledState": "enabled",
"statusReason": "The virtual server is available"
},
"syncookie": {
"accepts": 0,
"hwAccepts": 0,
"hwSyncookies": 0,
"hwsyncookieInstance": 0,
"rejects": 0,
"swsyncookieInstance": 0,
"syncacheCurr": 0,
"syncacheOver": 0,
"syncookies": 0
},
"syncookieStatus": "not-activated",
"totRequests": 0
},
{
"clientside": {
"bitsIn": 2784874696,
"bitsOut": 13416053656,
"curConns": 5,
"maxConns": 61,
"pktsIn": 5698557,
"pktsOut": 1560895,
"totConns": 1485109
},
"cmpEnableMode": "all-cpus",
"cmpEnabled": "enabled",
"csMaxConnDur": 14319373760,
"csMeanConnDur": 7972,
"csMinConnDur": 56,
"destination": "any:any",
"ephemeral": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"fiveMinAvgUsageRatio": 0,
"fiveSecAvgUsageRatio": 0,
"id": "VS-FORWARDING",
"name": "VS-FORWARDING",
"oneMinAvgUsageRatio": 0,
"status": {
"availabilityState": "unknown",
"enabledState": "enabled",
"statusReason": "The children pool member(s) either don't have service checking enabled, or service check results are not available yet"
},
"syncookie": {
"accepts": 0,
"hwAccepts": 0,
"hwSyncookies": 0,
"hwsyncookieInstance": 0,
"rejects": 2,
"swsyncookieInstance": 0,
"syncacheCurr": 0,
"syncacheOver": 0,
"syncookies": 0
},
"syncookieStatus": "not-activated",
"totRequests": 0
}
]
}
Retrieve virtual server information by ID
Retrieve information about the specified virtual server.
GET /virtuals/{virtualId}
This operation does not accept a request body.
Response
{
"data": [
{
"id": "VIP-127.0.0.1-80",
"address": "127.0.0.1",
"addressStatus": "yes",
"appService": "none",
"auth": {},
"autoLasthop": "default",
"bwcPolicy": null,
"clonePools": {},
"cmpEnabled": "yes",
"connectionLimit": 0,
"description": "none",
"fallbackPersistence": null,
"gtmScore": 0,
"ipForward": "",
"ipProtocol": "tcp",
"lastHopPool": null,
"mask": "255.255.255.255",
"metadata": null,
"mirror": "disabled",
"mobileAppTunnel": "disabled",
"nat64": "disabled",
"partition": "Common",
"persist": {
"cookie": {
"default": "yes"
}
},
"policies": {},
"pool": {},
"port": {
"type": "equal",
"value": 80
},
"profiles": {
"http": {
"context": "all"
},
"tcp": {
"context": "all"
}
},
"rateClass": null,
"rateLimit": "disabled",
"rateLimitDstMask": 0,
"rateLimitMode": "object",
"rateLimitSrcMask": 0,
"relatedRules": null,
"rules": null,
"securityLogProfiles": {},
"source": "0.0.0.0/0",
"sourceAddressTranslation": {
"pool": "none",
"type": "none"
},
"sourcePort": "preserve",
"synCookieStatus": "not-activated",
"trafficClasses": {},
"translateAddress": "enabled",
"translatePort": "enabled",
"vlans": {},
"vsIndex": 7
}
]
}
Update a virtual server by ID
Update the virtual server on a specified device by using the virtual ID.
When you update an existing virtual server, you must specify the address and port in the request.
PUT /virtuals/{virtualId}
Request body
{
"address": "172.16.1.160",
"source": "0.0.0.0\/0",
"ipProtocol": "tcp",
"ipForward": "disabled",
"gtmScore": 0,
"description": "New Description updated",
"fallbackPersistence": null,
"port": {
"value": 80,
"type": "equal"
},
"connectionLimit": 99
}
Response
Returns event information for the request. Use the event ID to get event status and output information.
{
"data": {
"eventId": "02d1ba2a-0edf-4583-8e2c-ab0b54c78193",
"status": "PROCESSING",
"resource": "<virtualId:str>",
"eventRef": "/events/<eventId:str>",
"timestamp": "2016-03-18T03:18:35.5077939Z"
}
}
Remove a virtual server
Remove a specified virtual server from the load balancer configuration.
DELETE /virtuals/{virtualId}
This operation does not accept a request body.
Response
Returns event information for the request. Use the event ID to get event status and output information.
{
"data": {
"eventId": "<eventid:str>",
"status": "PROCESSING",
"resource": "<virtualId:str>",
"timestamp": "2016-03-18T03:18:35.5077939Z",
"eventRef": "/events/<eventId:str>"
}
}
Retrieve persistent profiles for a virtual server
Retrieve information about the persistent profiles configured for a virtual server. These profiles enable tracking and storing session data to ensure that client requests are directed to the same pool member throughout the life of a session or during subsequent sessions.
GET /virtuals/{virtualId}/persists
This operation does not accept a request body.
Response
{
"data": [
{
"profileName": "my-cool-persist"
}
]
}
Update a virtual server persistent profile
Update the persistent profile for a virtual server.
PUT /virtuals/{virtualId}/persists
Request body
{
"names": [
"hash"
]
}
Response
{
"data": {
"eventId": "<eventId:str>",
"status": "PROCESSING",
"resource": "<virtualId:str>",
"timestamp": "2016-03-08T17:22:33.6249648Z",
"eventRef": "/events/<eventId:str>"
}
}
Create a persistent profile
Create a persistent profile configuration for a specified virtual server.
POST /virtuals/{virtualId}/persists
This operation does not accept a request body.
Request body
{
"names": [
"source_addr",
"dest_addr"
]
}
Response
{
"data": {
"eventId": "<eventId:str>",
"status": "PROCESSING",
"resource": "<virtualId:str>",
"timestamp": "2016-03-08T17:22:33.6249648Z",
"eventRef": "/events/<eventId:str>"
}
}
Remove a persistent profile
Remove a persistent profile configuration from a specified virtual server.
DELETE /virtuals/{virtualId}/persists
This operation does not accept a request body.
Response
{
"data": {
"eventId": "<eventId:str>",
"status": "PROCESSING",
"resource": "<virtualId:str>",
"eventRef": "/events/<eventId:str>",
"timestamp": "2016-03-18T03:18:35.5077939Z"
}
}
Retrieve virtual server information by ID
Retrieve statistics for a specified virtual server configured in the load balancer.
GET /virtuals/{virtualId}/stats
This operation does not accept a request body.
Response
Retrieve a list of stats.
{
"data": [
{
"clientside": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"cmpEnableMode": "all-cpus",
"cmpEnabled": "enabled",
"csMaxConnDur": 0,
"csMeanConnDur": 0,
"csMinConnDur": 0,
"destination": "127.0.0.1:80",
"ephemeral": {
"bitsIn": 0,
"bitsOut": 0,
"curConns": 0,
"maxConns": 0,
"pktsIn": 0,
"pktsOut": 0,
"totConns": 0
},
"fiveMinAvgUsageRatio": 0,
"fiveSecAvgUsageRatio": 0,
"id": "VIP-127.0.0.1-80",
"name": "VIP-127.0.0.1-80",
"oneMinAvgUsageRatio": 0,
"status": {
"availabilityState": "unknown",
"enabledState": "enabled",
"statusReason": "The children pool member(s) either don't have service checking enabled, or service check results are not available yet"
},
"syncookie": {
"accepts": 0,
"hwAccepts": 0,
"hwSyncookies": 0,
"hwsyncookieInstance": 0,
"rejects": 0,
"swsyncookieInstance": 0,
"syncacheCurr": 0,
"syncacheOver": 0,
"syncookies": 0
},
"syncookieStatus": "not-activated",
"totRequests": 0
}
]
}
Retrieve virtual pools by virtual ID
Retrieve information about the virtual pools associated with a specified virtual server.
GET /virtuals/{virtualId}/pool
This operation does not accept a request body.
Response
{
"data": [
{
"name": "test_pool"
}
]
}