Citrix Application Delivery Controller (ADC)


BMC Helix Discovery supports the following types of Citrix Load Balancers (ADC):

  • MPX — Hardware-based application delivery appliances.
  • SDX  Hardware-based appliances with advanced virtualization to consolidate up to 115 independently-managed Citrix ADC instances.
  • VPX — Virtual-based application delivery appliances.

Starting with TKU December 2024, only the REST API can be used to discover Citrix NetScaler ADC and build the Load Balancer model. As a result, configuring both REST API and SNMP credentials for Citrix NetScaler ADC is no longer required.

REST API credentials type for Citrix NetScaler ADC is "Citrix NetScaler NITRO REST API".

This document outlines the NetScalerVPX_LoadBalancer pattern, which constructs the Discovery Load Balancer model. It retrieves details about configured Virtual Servers, Services, and Service Groups from the NetScaler ADC using REST API as the primary method or SNMP as a fallback. Any configuration no longer reported is removed from the model.

Load Balancer Model

Citrix NetScaler ADC uses the following conceptual model:

  • Virtual Server (n) - (n) Service Group (n) - (n) Server
  • Virtual Server (n) - (n) Service (n) - (1) Server

A Virtual Server is modeled as a Load Balancer Service.

A Service and a Server are modeled as a Load Balancer Pool and a Load Balancer Member.

A Service Group and Servers are modeled as a Load Balancer Pool  and Load Balancer Members.

For Citrix NetScaler hardware-based appliances that can run virtual instance pattern creates corresponding Virtual Machines and links these VMs to virtual Network Devices:

Untitled Diagram2.png

A NetScaler appliance can be partitioned into logical entities called admin partitions, where each partition can be configured and used as a separate NetScaler appliance.

VPX policies and actions are supported in order to create proper relationships between Load Balancer Services and Pools.

Please note that partition discovery, as well as the processing of VPX policies and actions, are only available with REST API access.

REST API configuration

The following API endpoints are used during discovery of the Citrix NetScaler ADC:

Method

URI

Purpose

POST

/nitro/v1/config/login

Get login token

POST

/nitro/v1/config/logout

Close the session

POST

/nitro/v1/config/nspartition

Switch to non-default partition (if any)

GET

/nitro/v1/config/nsversion

Get Netscaler SW version

GET

/nitro/v1/config/csaction

Get content switching (CS) actions

GET

/nitro/v1/config/cspolicy

Get content switching (CS) policies

GET

/nitro/v1/config/nspartition

Get partitions

GET

/nitro/v1/config/lbvserver

Get Load Balancer Service configuration

GET

/nitro/v1/config/csvserver

Get Load Balancer Service configuration for Content Switching

GET

/nitro/v1/config/service

Get Load Balancer Pool configuration

GET

/nitro/v1/config/servicegroup

Get Load Balancer Pool configuration

GET

/nitro/v1/config/servicegroup_servicegroupmember_binding

Get Load Balancer Member configuration

GET

/nitro/v1/config/lbvserver_binding

Get links between Service and Pool, Load Balancer Member configuration

In order to get information using REST API calls user with read-only command policy configured is required.

Supported virtual server types

  • unknown
  • loadbalancing
  • loadbalancinggroup
  • sslvpn
  • contentswitching
  • cacheredirection

Supported virtual server states

  • down
  • unknown
  • busy
  • outOfService
  • transitionToOutOfService
  • up
  • transitionToOutOfServiceDown

Supported protocol types

  • http
  • ftp
  • tcp
  • udp
  • sslBridge
  • monitor
  • monitorUdp
  • nntp
  • httpserver
  • httpclient
  • rpcserver
  • rpcclient
  • nat
  • any
  • ssl
  • dns
  • adns
  • snmp
  • ha
  • monitorPing
  • sslOtherTcp
  • aaa
  • secureMonitor
  • sslvpnUdp
  • rip
  • dnsClient
  • rpcServer
  • rpcClient
  • dhcrpa
  • sipudp
  • dnstcp
  • adnstcp
  • rtsp
  • push
  • sslPush
  • dhcpClient
  • radius
  • rdp
  • mysql
  • mssql
  • diameter
  • sslDiameter
  • tftp
  • serviceUnknown

Supported device HA mode

  • Standalone
  • Primary
  • Secondary
  • Unknown

Supported device HA state

  • Unknown
  • Init
  • Down
  • Up
  • PartialFail
  • MonitorFail
  • MonitorOk
  • CompleteFail
  • Dumb
  • Disabled
  • PartialFailSSL
  • RouteMonitorFail

Modeled Load Balancer Components

Load Balancer Instance

The pattern creates a Load Balancer Instance with the attributes displayed below.

Attributes

Value

key

A hash of the device key and load balancer type.

type

A load balancer type.

name

A %LB_TYPE% on %device.name%.

version

A version of the device OS.

failover_type

A failover type used on the device.

failover_state

A failover state reported by the device.

__failover_group

No sample.

__failover_paired_ipaddr

No sample.

The pattern models a network service relationship between the device and the Load Balancer Instance.

Load Balancer Service

The pattern creates a Load Balancer Service with the attributes displayed below.

Attributes

Value

key

A hash of the instance key, virtual server name, ip address, and port.

name

A virtual server name.

ip_addr

A virtual server IP address.

port

A virtual server port.

type

A virtual server type.

protocol

A virtual server protocol type.

state

A virtual server state.

dns_names

A dns name of a virtual server IP address.

_config_hash

Contains a hash of the virtual server name, IP address, port, type,protocol, and state.

The pattern models a containment relationship between the Load Balancer Instance and a Load Balancer Service.

The pattern also models a containment relationship between the Load Balancer Service and a Load Balancer Pool.

Load Balancer Pool

The pattern creates a Load Balancer Pool with the attributes displayed below.

Attributes

Value

key

A hash of the instance key and pool name.

name

A pool name.

protocol

A protocol used.

_config_hash

Contains a hash of the pool name, and protocol.

The pattern models a containment relationship between the Load Balancer Instance and a Load Balancer Pool.

Load Balancer Member

The pattern creates a Load Balancer Member  for every server and populates the attributes displayed below.

Attributes

Value

key

A hash of the instance key, IP address and port of the real server.

ip_addr

A server IP address.

port

A server port.

name

A pair of server IP address and port.

_config_hash

Contains a hash of the server ip address, port, and type.

The pattern models a containment relationship between the Load Balancer Pool and a Load Balancer Member.

Virtual Machine

The pattern creates a Virtual Machine for every virtual instances and populates the attributes displayed below.

Attributes

Value

key

A hash of the instance uuid, physical device key.

name

Virtual Machine name

short_name

Virtual Machine short name

type

"Citrix XenServer"

vm_type

"XenServer"

vm_name

Virtual Load Balancer name

vm_uuid

Virtual Machine UUID

version

XenServer version

vm_guest_os

Virtual Load Balancer OS

product_version

XenServer product version

edition

XenServer edition

buid

XenServer build

state

Virtual Machine state

The pattern models a relationships between the Virtual Machine and physical, virtual Load Balancer.

Known limitations

  • VPX "expression based" content switch actions are not supported.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*