Configuring a Virtual IP for High Availability

By configuring multiple instances to run a critical service, you can make that service highly available and minimize downtime or data loss that can result from the failure of individual resources. If one of the instances running the service fails, a standby instance becomes available. 

An important step in setting up high availability in Metacloud is to configure a virtual IP address (VIP), which does not correspond to a specific network interface. All instances that are pooled for high availability "share" the VIP. If a master instance fails, a backup instance immediately starts using the VIP, and traffic continues flowing to and from that address, uninterrupted.

Note: Another feature of many high-availability implementations is the ability to launch a VM to replace a failed instance, which is outside the scope of this solution.

High Availability Example: Web Server

The following steps provide an example of how to use a VIP in Metacloud to support a high-availability implementation, in this case a Web server running on two instances. Each instance has the following processes installed on it:

  • NGINX-an open-source HTTP server.
  • Keepalived-uses the Virtual Router Redundancy Protocol (VRRP) to check the health of pooled instances and dynamically "move" a VIP from a failed instance to a backup. 
  • HAProxy-a standard Linux infrastructure for managing workload between instances.

In this example, Server_1 is the "master" instance and Server_2 is the backup. If Server_1 fails, the VIP is "moved" to Server_2.

high_avail.png

This solution does not provide the steps for installing these components. Refer to product documentation for each component.

This article only provides the specific steps in the Metacloud command-line interface (CLI) for configuring a VIP and attaching it to instances designated for a high-availability service. 

Setting up the VIP

Note: Before taking the following steps, make sure you have a network, subnet, and router available in Metacloud. The router should have a gateway to an external (public) network. See Creating and Managing Networks for instructions. 

Create a port for the VIP. 

$ openstack port create --network 71e8421b-2bb7-419b-804c-c6971378139e vip
+-----------------------+------------------------------------------------+
| Field                 | Value                                          |
+-----------------------+------------------------------------------------+
| admin_state_up        | UP                                             |
| allowed_address_pairs |                                                |
| binding_host_id       |                                                |
| binding_profile       |                                                |
| binding_vif_details   |                                                |
| binding_vif_type      | unbound                                        |
| binding_vnic_type     | normal                                         |
| created_at            | None                                           |
| description           | None                                           |
| device_id             |                                                |
| device_owner          |                                                |
| dns_assignment        | fqdn='host-192-168-1-17.openstacklocal.',      |
|                       | hostname='host-192-168-1-17',                  |
|                       | ip_address='192.168.1.17'                      |
| dns_name              |                                                |
| extra_dhcp_opts       | None                                           |
| fixed_ips             | ip_address='192.168.1.17', subnet_id='<UUID>   |
| id                    | <VIP_UUID>                                     |
| ip_address            | None                                           |
| mac_address           | fa:16:3e:f1:a9:fa                              |
| name                  | vip                                            |
| network_id            | <NETWORK_UUID>                                 |
| option_name           | None                                           |
| option_value          | None                                           |
| port_security_enabled | False                                          |
| project_id            | <PROJECT_UUID>                                 |
| qos_policy_id         | None                                           |
| revision_number       | None                                           |
| security_groups       | <SECURITY_GROUP_UUID>                          |
| status                | DOWN                                           |
| subnet_id             | None                                           |
| updated_at            | None                                           |
+-----------------------+------------------------------------------------+

Create a security group.

$ openstack security group create load_balance
+-----------------+---------------------------------------------------------------------------------+
| Field           | Value                                                                           |
+-----------------+---------------------------------------------------------------------------------+
| created_at      | None                                                                            |
| description     | load_balance                                                                    |
| id              | <SECURITY_GROUP_UUID>                                                           |
| name            | load_balance                                                                    |
| project_id      | <PROJECT_UUID>                                                                  |
| revision_number | None                                                                            |
| rules           | direction='egress', ethertype='IPv4', id='<RULE_UUID>'                          |
|                 | direction='egress', ethertype='IPv6', id='<RULE_UUID>'                          |
| updated_at      | None                                                                            |
+-----------------+---------------------------------------------------------------------------------+

Create a rule for the security group that allows ingress on port 112 for VRRP. 

$ openstack security group rule create load_balance --protocol 112 --ingress --ethertype IPv4
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | None                                 |
| description       | None                                 |
| direction         | ingress                              |
| ether_type        | IPv4                                 |
| id                | <RULE_UUID>                          |
| name              | None                                 |
| port_range_max    | None                                 |
| port_range_min    | None                                 |
| project_id        | <RULE_UUID>                          |
| protocol          | 112                                  |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | None                                 |
| security_group_id | <RULE_UUID>                          |
| updated_at        | None                                 |
+-------------------+--------------------------------------+

Create another rule that allows ingress on port 22 for SSH access. You will need this to install required components on each instance.

$ openstack security group rule create load_balance --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | None                                 |
| description       | None                                 |
| direction         | ingress                              |
| ether_type        | IPv4                                 |
| id                | <RULE_UUID>                          |
| name              | None                                 |
| port_range_max    | 22                                   |
| port_range_min    | 22                                   |
| project_id        | <PROJECT_UUID>                       |
| protocol          | tcp                                  |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | None                                 |
| security_group_id | <SECURITY_GROUP_UUID>                |
| updated_at        | None                                 |
+-------------------+--------------------------------------+

Launch the first instance to be used in the high-availability pool. Include the security group you just created.

$ openstack server create server_1 --flavor m1.small --image ubuntu_1404_server_cloudimg_amd64 --security-group load_balance --key-name ssh_entry --availability-zone stage1 --nic net-id=71e8421b-2bb7-419b-804c-c6971378139e
+-------------------------------------+--------------------------------------------------------------------------+
| Field                               | Value                                                                    |
+-------------------------------------+--------------------------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                                   |
| OS-EXT-AZ:availability_zone         | stage1                                                                   |
| OS-EXT-SRV-ATTR:host                | <HOST_NAME>                                                              |
| OS-EXT-SRV-ATTR:hypervisor_hostname | <HOST_NAME>                                                              |
| OS-EXT-SRV-ATTR:instance_name       | instance-000034bf                                                        |
| OS-EXT-STS:power_state              | NOSTATE                                                                  |
| OS-EXT-STS:task_state               | networking                                                               |
| OS-EXT-STS:vm_state                 | building                                                                 |
| OS-SRV-USG:launched_at              | None                                                                     |
| OS-SRV-USG:terminated_at            | None                                                                     |
| accessIPv4                          |                                                                          |
| accessIPv6                          |                                                                          |
| addresses                           |                                                                          |
| adminPass                           | gLgTkAAi4sHj                                                             |
| config_drive                        |                                                                          |
| created                             | 2017-03-18T00:25:47Z                                                     |
| flavor                              | m1.small (2)                                                             |
| hostId                              | <HOST_UUID>                                                              |
| id                                  | <INSTANCE_UUID>                                                          |
| image                               | ubuntu_1404_server_cloudimg_amd64 (<IMAGE_UUID>)                         |
| key_name                            | ssh_entry                                                                |
| name                                | server_1                                                                 |
| progress                            | 0                                                                        |
| project_id                          | <PROJECT_UUID>                                                           |
| properties                          |                                                                          |
| security_groups                     | name='load_balance'                                                      |
| status                              | BUILD                                                                    |
| updated                             | 2017-03-18T00:25:47Z                                                     |
| user_id                             | <USER_UUID>                                                              |
| volumes_attached                    |                                                                          |
+-------------------------------------+--------------------------------------------------------------------------+

Launch the second instance to be used in the high-availability pool. Include the security group you just created.

$ openstack server create server_2 --flavor m1.small --image ubuntu_1404_server_cloudimg_amd64 --security-group load_balance --key-name ssh_entry --availability-zone stage1 --nic net-id=71e8421b-2bb7-419b-804c-c6971378139e
+-------------------------------------+--------------------------------------------------------------------------+
| Field                               | Value                                                                    |
+-------------------------------------+--------------------------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                                   |
| OS-EXT-AZ:availability_zone         | stage1                                                                   |
| OS-EXT-SRV-ATTR:host                | None                                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                                     |
| OS-EXT-SRV-ATTR:instance_name       | instance-000034c2                                                        |
| OS-EXT-STS:power_state              | NOSTATE                                                                  |
| OS-EXT-STS:task_state               | scheduling                                                               |
| OS-EXT-STS:vm_state                 | building                                                                 |
| OS-SRV-USG:launched_at              | None                                                                     |
| OS-SRV-USG:terminated_at            | None                                                                     |
| accessIPv4                          |                                                                          |
| accessIPv6                          |                                                                          |
| addresses                           |                                                                          |
| adminPass                           | 7kcixwnNH3CW                                                             |
| config_drive                        |                                                                          |
| created                             | 2017-03-18T00:27:38Z                                                     |
| flavor                              | m1.small (2)                                                             |
| hostId                              |                                                                          |
| id                                  | <INSTANCE_UUID>                                                          |
| image                               | ubuntu_1404_server_cloudimg_amd64 (<IMAGE_UUID>)                         |
| key_name                            | ssh_entry                                                                |
| name                                | server_2                                                                 |
| progress                            | 0                                                                        |
| project_id                          | <PROJECT_UUID>                                                           |
| properties                          |                                                                          |
| security_groups                     | name='load_balance'                                                      |
| status                              | BUILD                                                                    |
| updated                             | 2017-03-18T00:27:38Z                                                     |
| user_id                             | <USER_UUID>                                                              |
| volumes_attached                    |                                                                          |
+-------------------------------------+--------------------------------------------------------------------------+

Add floating IPs for both new instances so that you can connect to them with SSH.

$ openstack server add floating ip server_1 184.94.253.86
$ openstack server show server_1
+-------------------------------------+--------------------------------------------------------------------------+
| Field                               | Value                                                                    |
+-------------------------------------+--------------------------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                                   |
| OS-EXT-AZ:availability_zone         | <AZ_NAME>                                                                |
| OS-EXT-SRV-ATTR:host                | <HOST_NAME>                                                              |
| OS-EXT-SRV-ATTR:hypervisor_hostname | <HOST_NAME>                                                              |
| OS-EXT-SRV-ATTR:instance_name       | instance-000034bf                                                        |
| OS-EXT-STS:power_state              | Running                                                                  |
| OS-EXT-STS:task_state               | None                                                                     |
| OS-EXT-STS:vm_state                 | active                                                                   |
| OS-SRV-USG:launched_at              | 2017-03-18T00:25:52.000000                                               |
| OS-SRV-USG:terminated_at            | None                                                                     |
| accessIPv4                          |                                                                          |
| accessIPv6                          |                                                                          |
| addresses                           | silver=192.168.1.15, 184.94.253.86                                       |
| config_drive                        |                                                                          |
| created                             | 2017-03-18T00:25:47Z                                                     |
| flavor                              | m1.small (2)                                                             |
| hostId                              | <HOST_UUID>                                                              |
| id                                  | <INSTANCE_UUID>                                                          |
| image                               | ubuntu_1404_server_cloudimg_amd64 (<IMAGE_UUID>)                         |
| key_name                            | ssh_entry                                                                |
| name                                | server_1                                                                 |
| progress                            | 0                                                                        |
| project_id                          | <PROJECT_UUID>                                                           |
| properties                          |                                                                          |
| security_groups                     | name='load_balance'                                                      |
| status                              | ACTIVE                                                                   |
| updated                             | 2017-03-18T00:25:52Z                                                     |
| user_id                             | <USER_UUID>                                                              |
| volumes_attached                    |                                                                          |
+-------------------------------------+--------------------------------------------------------------------------+
$ openstack server add floating ip server_2 184.94.253.79
$ openstack server show server_2
+-------------------------------------+--------------------------------------------------------------------------+
| Field                               | Value                                                                    |
+-------------------------------------+--------------------------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                                   |
| OS-EXT-AZ:availability_zone         | <AZ_NAME>                                                                |
| OS-EXT-SRV-ATTR:host                | <HOST_NAME>                                                              |
| OS-EXT-SRV-ATTR:hypervisor_hostname | <HOST_NAME>                                                              |
| OS-EXT-SRV-ATTR:instance_name       | instance-000034c2                                                        |
| OS-EXT-STS:power_state              | Running                                                                  |
| OS-EXT-STS:task_state               | None                                                                     |
| OS-EXT-STS:vm_state                 | active                                                                   |
| OS-SRV-USG:launched_at              | 2017-03-18T00:27:44.000000                                               |
| OS-SRV-USG:terminated_at            | None                                                                     |
| accessIPv4                          |                                                                          |
| accessIPv6                          |                                                                          |
| addresses                           | silver=192.168.1.16, 184.94.253.79                                       |
| config_drive                        |                                                                          |
| created                             | 2017-03-18T00:27:38Z                                                     |
| flavor                              | m1.small (2)                                                             |
| hostId                              | <HOST_UUID>                                                              |
| id                                  | <INSTANCE_UUID>                                                          |
| image                               | ubuntu_1404_server_cloudimg_amd64 (<IMAGE_UUID>)                         |
| key_name                            | ssh_entry                                                                |
| name                                | server_2                                                                 |
| progress                            | 0                                                                        |
| project_id                          | <PROJECT_UUID>                                                           |
| properties                          |                                                                          |
| security_groups                     | name='load_balance'                                                      |
| status                              | ACTIVE                                                                   |
| updated                             | 2017-03-18T00:27:44Z                                                     |
| user_id                             | <USER_UUID>                                                              |
| volumes_attached                    |                                                                          |
+-------------------------------------+--------------------------------------------------------------------------+

Install and configure NGINX on both instances.

Install and configure Keepalived on both instances.

Install and configure HAProxy on both instances. Make sure to restart the HAProxy service on each instance after editing the /etc/haproxy/haproxy.cfg file.

Back in the Metacloud CLI, view the network interface list for the first instance so that you can find the port that takes the VIP.

$ nova interface-list server_1
+------------+--------------------------------------+--------------------------------------+--------------+-------------------+
| Port State | Port ID                              | Net ID                               | IP addresses | MAC Addr          |
+------------+--------------------------------------+--------------------------------------+--------------+-------------------+
| ACTIVE     | <PORT_UUID>                          | <NETWORK_UUID>                       | 192.168.1.15 | fa:16:3e:fa:ed:8a |
+------------+--------------------------------------+--------------------------------------+--------------+-------------------+

Assign the VIP to the port on the first instance.

$ neutron port-update <PORT_UUID> --allowed_address_pairs list=true type=dict ip_address=192.168.1.17
Updated port: <PORT_UUID>

Note: If you need multiple VIPs, see Assigning Multiple VIPs.

Verify that the port allows the address pair for the VIP.

$ openstack port show afde63f7-daa7-4037-94f3-ebcd3f17a6e6
+-----------------------+---------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                             |
+-----------------------+---------------------------------------------------------------------------------------------------+
| admin_state_up        | UP                                                                                                |
| allowed_address_pairs | ip_address='192.168.1.17', mac_address='fa:16:3e:fa:ed:8a'                                        |
| binding_host_id       | <HOST_NAME>                                                                                       |
| binding_profile       |                                                                                                   |
| binding_vif_details   | port_filter='True'                                                                                |
| binding_vif_type      | bridge                                                                                            |
| binding_vnic_type     | normal                                                                                            |
| created_at            | None                                                                                              |
| description           | None                                                                                              |
| device_id             | <ATTACHED_DEVICE_UUID>                                                                            |
| device_owner          | compute:stage1                                                                                    |
| dns_assignment        | fqdn='host-192-168-1-15.openstacklocal.', hostname='host-192-168-1-15', ip_address='192.168.1.15' |
| dns_name              |                                                                                                   |
| extra_dhcp_opts       |                                                                                                   |
| fixed_ips             | ip_address='192.168.1.15', subnet_id='<UUID>'                       |
| id                    | <PORT_UUID>                                                                                       |
| ip_address            | None                                                                                              |
| mac_address           | fa:16:3e:fa:ed:8a                                                                                 |
| name                  |                                                                                                   |
| network_id            | <NETWORK_UUID>                                                                                    |
| option_name           | None                                                                                              |
| option_value          | None                                                                                              |
| port_security_enabled | False                                                                                             |
| project_id            | <PROJECT_UUID>                                                                                    |
| qos_policy_id         | None                                                                                              |
| revision_number       | None                                                                                              |
| security_groups       | <SECURITY_GROUP_UUID>                                                                             |
| status                | ACTIVE                                                                                            |
| subnet_id             | None                                                                                              |
| updated_at            | None                                                                                              |
+-----------------------+---------------------------------------------------------------------------------------------------+

View the network interface list for the second instance so that you can find the port that takes the VIP.

$ nova interface-list server_2
+------------+--------------------------------------+--------------------------------------+--------------+-------------------+
| Port State | Port ID                              | Net ID                               | IP addresses | MAC Addr          |
+------------+--------------------------------------+--------------------------------------+--------------+-------------------+
| ACTIVE     | <PORT_UUID>                          | <NETWORK_UUID>                       | 192.168.1.16 | fa:16:3e:a9:5a:99 |
+------------+--------------------------------------+--------------------------------------+--------------+-------------------+

Assign the VIP to the port on the second instance.

$ neutron port-update <PORT_UUID> --allowed_address_pairs list=true type=dict ip_address=192.168.1.17
Updated port: <PORT_UUID>
$ openstack port show baebd769-610d-454b-a4fb-1f68a09b2aff
+-----------------------+---------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                             |
+-----------------------+---------------------------------------------------------------------------------------------------+
| admin_state_up        | UP                                                                                                |
| allowed_address_pairs | ip_address='192.168.1.17', mac_address='fa:16:3e:a9:5a:99'                                        |
| binding_host_id       | <HOST_NAME>                                                                                       |
| binding_profile       |                                                                                                   |
| binding_vif_details   | port_filter='True'                                                                                |
| binding_vif_type      | bridge                                                                                            |
| binding_vnic_type     | normal                                                                                            |
| created_at            | None                                                                                              |
| description           | None                                                                                              |
| device_id             | <ATTACHED_DEVICE_UUID>                                                                            |
| device_owner          | compute:stage1                                                                                    |
| dns_assignment        | fqdn='host-192-168-1-16.openstacklocal.', hostname='host-192-168-1-16', ip_address='192.168.1.16' |
| dns_name              |                                                                                                   |
| extra_dhcp_opts       |                                                                                                   |
| fixed_ips             | ip_address='192.168.1.16', subnet_id='<SUBNET_UUID>'                                              |
| id                    | <PORT_UUID>                                                                                       |
| ip_address            | None                                                                                              |
| mac_address           | fa:16:3e:a9:5a:99                                                                                 |
| name                  |                                                                                                   |
| network_id            | <NETWORK_UUID>                                                                                    |
| option_name           | None                                                                                              |
| option_value          | None                                                                                              |
| port_security_enabled | False                                                                                             |
| project_id            | <PROJECT_UUD>                                                                                     |
| qos_policy_id         | None                                                                                              |
| revision_number       | None                                                                                              |
| security_groups       | <SECURITY_GROUP_UUID>                                                                             |
| status                | ACTIVE                                                                                            |
| subnet_id             | None                                                                                              |
| updated_at            | None                                                                                              |
+-----------------------+---------------------------------------------------------------------------------------------------+

Verifying that the VIP Works

Note: Make sure the HAProxy service is running on both instances.

Run ip a on server_1.

The eth0 interface on server_1, the master server, has two IP addresses: the address assigned to the VM when it was launched in Metacloud and the VIP.

cloud@server-1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:fa:ed:8a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.15/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.17/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fefa:ed8a/64 scope link 
       valid_lft forever preferred_lft forever

Run ip a on server_2.

The eth0 interface on server_2 only has the IP address that was assigned when the VM was created in Metacloud.

cloud@server-2:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:a9:5a:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.16/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fea9:5a99/64 scope link 
       valid_lft forever preferred_lft forever

Stop the HAProxy service on server_1.

Run ip a on the server_1.

The eth0 interface on server_1 now only has the address assigned to the VM when it was launched in Metacloud. It no longer has the VIP.

cloud@server-1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:fa:ed:8a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.15/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fefa:ed8a/64 scope link 
       valid_lft forever preferred_lft forever

Run ip a on the server_2.

With the haproxy service still running on server_2, the eth0 interface on server_2 now has two IP addresses. The VIP has "moved" to server_2.

cloud@server-2:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:a9:5a:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.16/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.17/24 scope global eth0
valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fea9:5a99/64 scope link valid_lft forever preferred_lft forever

Note: Other uses for VIPs include network address translation (NAT), fault-tolerance, and application mobility within networks.

Assigning Multiple VIPs

If you have a server running multiple IP addresses, you need multiple VIPs. For example, you may have two Web sites running on the same Web server. If so, specify all the VIPs in a single command.

Do not run individual commands for each VIP. Each newly added VIP will only overwrite the preceding one.

To use a single command:

neutron port-update <PORT_ID> --allowed_address_pairs list=true type=dict ip_address=<VIP_1> ip_address=<VIP_1>

 

Have more questions? Submit a request
Powered by Zendesk