Neutron load balancer returns 503 response when load balancing algorithm is changed

Bug #1527178 reported by Igor Zinovik
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
vmware-nsx
Fix Released
Undecided
Kobi Samoray

Bug Description

Affected version:
NSX Version: 6.1.4, Build: 2691049
Neutron NSX plugin 2015.1.2 (package is built using git tag 2015.1.2)

Scenario
a) create extern network "EXTERNAL_NET"
b) create tenant network "INTERNAL_NET" (DHCP enabled)
c) create exclusive router "ROUTER" and set gateway as "EXTERNAL_NET"
d) add interface to "ROUTER" in "INTERNAL_NET"
e) launch 2 instances in "INTERNAL_NET"
f) create load balancer pool "lb_http" with SOURCE_IP lb-algorithm in "INTERNAL_NET"
g) add both instances created in step e) as members in "lb_http" pool
h) create load balancer vIP "lb_vip" on port 80 in "INTERNAL_NET" for "lb_http" load balancer
i) assign floating IP on "lb_vip"
k) add permissive rule for HTTP traffic into 'default' security group
l) add healthmonitor for "lb_http" pool
m) check that load balancer works (make request with curl on vIP)
n) switch load balancer algorithm from SOURCE_IP to ROUND_ROBING for "lb_http"
m) check that load balancer works (make request with curl on vIP)

Expected result:
 load balancer works fine
Actual result:
 503 response

CLI commands scenario:
$ neutron net-create EXTERNAL --router:external --shared
$ neutron subnet-create --allocation-pool start=172.16.211.100,end=172.16.211.150 --gateway 172.16.211.1 --disable-dhcp EXTERNAL 172.16.211.0/24

$ neutron net-create INTERNAL_NET
$ neutron subnet-create INTERNAL_NET --name INTERNAL_NET-subnet 192.168.0.0/24

$ neutron router-create ROUTER --router_type exclusive
$ neutron router-interface-add ROUTER INTERNAL_NET-subnet
$ neutron router-gateway-set ROUTER EXTERNAL

$ nova boot --flavor m1.tiny --image TestVM-VMDK --nic net-id=$(neutron net-list|awk '/INTERNAL_NET/ {print $2}') INSTANCE1
$ nova boot --flavor m1.tiny --image TestVM-VMDK --nic net-id=$(neutron net-list|awk '/INTERNAL_NET/ {print $2}') INSTANCE2

$ fixedip_i1=$(nova list | awk '/INSTANCE1/ {print $12}' | awk -F '=' '{print $2}' | awk -F ',' '{print $1}')
$ fixedip_i2=$(nova list | awk '/INSTANCE2/ {print $12}' | awk -F '=' '{print $2}' | awk -F ',' '{print $1}')

$ neutron lb-pool-create --lb-method SOURCE_IP --name lb_http --protocol HTTP --subnet-id $(neutron subnet-list|awk '/INTERNAL_NET/ {print $2}')

$ neutron lb-member-create --protocol-port 80 lb_http --address $fixedip_i1
$ neutron lb-member-create --protocol-port 80 lb_http --address $fixedip_i2

$ neutron lb-vip-create --name lb_vip --subnet-id $(neutron subnet-list|awk '/INTERNAL_NET/ {print $2}') --protocol-port 80 --protocol HTTP lb_http
$ fixedip_vip=$(neutron lb-vip-list | awk '/lb_vip/ {print $6}')
$ portuuid_vip=$(neutron port-list | grep $fixedip_vip | awk '{print $2}')
$ neutron floatingip-create EXTERNAL --port-id $portuuid_vip

$ neutron security-group-rule-create --protocol tcp --port-range-min 80 --port-range-max 80 $(neutron security-group-list |awk '/default/ {print $2}'|head -n 1)

$ neutron lb-healthmonitor-create --max-retries 2 --timeout 2 --delay 2 --type HTTP
$ neutron lb-healthmonitor-associate $(neutron lb-healthmonitor-list|awk '/HTTP/ {print $2}') lb_http

test load balancer with curl

$ neutron lb-pool-update lb_http --lb-method ROUND_ROBIN

test load balancer with curl

Revision history for this message
Igor Zinovik (izinovik) wrote :
Revision history for this message
Igor Zinovik (izinovik) wrote :
Kobi Samoray (ksamoray)
Changed in vmware-nsx:
assignee: nobody → Kobi Samoray (ksamoray)
Changed in vmware-nsx:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to vmware-nsx (master)

Reviewed: https://review.openstack.org/259883
Committed: https://git.openstack.org/cgit/openstack/vmware-nsx/commit/?id=588f84bf7b6c2ef8564600723048042113c7f3f9
Submitter: Jenkins
Branch: master

commit 588f84bf7b6c2ef8564600723048042113c7f3f9
Author: Kobi Samoray <email address hidden>
Date: Mon Dec 21 10:17:46 2015 +0200

    Update pool erases member config

    When a LBaaSv1 pool is being updated, the update erases the pool config.

    Change-Id: Ib0fab216c5affa0c3075689c8e7dd8b1c9e18598
    Fixes-Bug: #1527178

Changed in vmware-nsx:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to vmware-nsx (stable/liberty)

Fix proposed to branch: stable/liberty
Review: https://review.openstack.org/260915

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to vmware-nsx (stable/liberty)

Reviewed: https://review.openstack.org/260915
Committed: https://git.openstack.org/cgit/openstack/vmware-nsx/commit/?id=5b744c7dacb6bbcbf90d2c295816b3d677fec1e3
Submitter: Jenkins
Branch: stable/liberty

commit 5b744c7dacb6bbcbf90d2c295816b3d677fec1e3
Author: Kobi Samoray <email address hidden>
Date: Mon Dec 21 10:17:46 2015 +0200

    Update pool erases member config

    When a LBaaSv1 pool is being updated, the update erases the pool config.

    Conflicts:
     vmware_nsx/plugins/nsx_v/vshield/edge_loadbalancer_driver.py
     vmware_nsx/tests/unit/nsx_v/test_edge_loadbalancer_driver.py

    Fixes-Bug: #1527178
    Change-Id: Ib0fab216c5affa0c3075689c8e7dd8b1c9e18598
    (cherry picked from commit 588f84bf7b6c2ef8564600723048042113c7f3f9)

tags: added: in-stable-liberty
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.