Public bug reported: Description of problem: ======================= IPv6 VIP remains in ERROR state due to haproxy cannot bind socket.
neutron.services.loadbalancer.agent.agent_manager Traceback (most recent call last): neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/agent/agent_manager.py", line 214, in create_vip neutron.services.loadbalancer.agent.agent_manager driver.create_vip(vip) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 318, in create_vip neutron.services.loadbalancer.agent.agent_manager self._refresh_device(vip['pool_id']) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 315, in _refresh_device neutron.services.loadbalancer.agent.agent_manager self.deploy_instance(logical_config) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/openstack/common/lockutils.py", line 249, in inner neutron.services.loadbalancer.agent.agent_manager return f(*args, **kwargs) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 311, in deploy_instance neutron.services.loadbalancer.agent.agent_manager self.create(logical_config) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 92, in create neutron.services.loadbalancer.agent.agent_manager self._spawn(logical_config) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 115, in _spawn neutron.services.loadbalancer.agent.agent_manager ns.netns.execute(cmd) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/agent/linux/ip_lib.py", line 550, in execute neutron.services.loadbalancer.agent.agent_manager check_exit_code=check_exit_code, extra_ok_codes=extra_ok_codes) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/agent/linux/utils.py", line 84, in execute neutron.services.loadbalancer.agent.agent_manager raise RuntimeError(m) neutron.services.loadbalancer.agent.agent_manager RuntimeError: neutron.services.loadbalancer.agent.agent_manager Command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ip', 'netns', 'exec', Version-Release number of selected component (if applicable): ============================================================= openstack-neutron-2014.2.1-2.el7ost.noarch haproxy-1.5.2-3.el7_0.x86_64 How reproducible: ================= 2/2 Steps to Reproduce: =================== 1. Spawn Two instances and wait for them to become active Via tenant_a: nova boot tenant_a_instance --flavor m1.small --image <image_id> --min-count 2 --key-name tenant_a_keypair --security-groups default --nic net-id=<internal_ipv4_a_id> --nic net-id=<tenant_a_radvd_stateful_id> 2. Retrive your instances IPv6 addresses, tenant id and the subnet id you are about to use. You may use any IPv6 subnet, in this example we'll use tenant_a_radvd_stateful_subnet # nova list | awk '/tenant_a_instance/ {print $12}' | cut -d"=" -f2 | sed -e s/\;\// # neutron subnet-list | awk '/tenant_a_radvd_stateful_subnet/ {print $2}' 3. Create a LBaaS pool # neutron lb-pool-create --lb-method ROUND_ROBIN --name Ipv6_LBaaS --protocol HTTP --subnet-id c54f8745-2aba-42da-8845-15050db1d5d1 4. Add members to the pool # neutron lb-member-create Ipv6_LBaaS --address 2001:65:65:65:f816:3eff:feda:b05e --protocol-port 80 # neutron lb-member-create Ipv6_LBaaS --address 2001:65:65:65:f816:3eff:fe82:5d8 --protocol-port 80 5. Create a VIP: # neutron lb-vip-create Ipv6_LBaaS --name Ipv6_LBaaS_VIP --protocol-port 80 --protocol HTTP --subnet-id 0458273a-efe8-4d37-b2a0-e11cbd5e4d13 6. Check the VIP status: # neutron lb-vip-show Ipv6_LBaaS_VIP | grep status Actual results: =============== 1. status = ERROR 2. lbaas-agent.log (attached): TRACE neutron.services.loadbalancer.agent.agent_manager Stderr: '[ALERT] 349/101731 (20878) : Starting frontend fcb9db64-e877-4e95-a86f-fed6d1b244c2: cannot bind socket [2001:64:64:64::a:80]\n' Expected results: ================= IPv6 VIP should work. Additional info: ================ 1. Tested with RHEL7 2. haproxy configuration: global daemon user nobody group haproxy log /dev/log local0 log /dev/log local1 notice stats socket /var/lib/neutron/lbaas/2c18a738-05f4-4099-8348-94575c9ed290/sock mode 0666 level user defaults log global retries 3 option redispatch timeout connect 5000 timeout client 50000 timeout server 50000 frontend cb833240-d5ed-43b9-9ef1-5bc70e961366 option tcplog bind 2001:65:65:65:f816:3eff:fe86:d7ce:80 mode http default_backend 2c18a738-05f4-4099-8348-94575c9ed290 option forwardfor backend 2c18a738-05f4-4099-8348-94575c9ed290 mode http balance roundrobin option forwardfor timeout check 3s option httpchk GET / http-check expect rstatus 200 server a2b475f0-3247-49d4-8e04-bf570ffc9fb2 2001:65:65:65:f816:3eff:fe82:5d8:80 weight 1 check inter 3s fall 1 server ab96b468-3950-47ea-a37b-f9b9fab7485b 2001:65:65:65:f816:3eff:feda:b05e:80 weight 1 check inter 3s fall 1 ** Affects: neutron Importance: Undecided Status: New ** Attachment added: "lbaas-agent.log" https://bugs.launchpad.net/bugs/1403001/+attachment/4282042/+files/lbaas-agent.log -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1403001 Title: LBaaS VIP does not work with IPv6 addresses because haproxy cannot bind socket Status in OpenStack Neutron (virtual network service): New Bug description: Description of problem: ======================= IPv6 VIP remains in ERROR state due to haproxy cannot bind socket. neutron.services.loadbalancer.agent.agent_manager Traceback (most recent call last): neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/agent/agent_manager.py", line 214, in create_vip neutron.services.loadbalancer.agent.agent_manager driver.create_vip(vip) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 318, in create_vip neutron.services.loadbalancer.agent.agent_manager self._refresh_device(vip['pool_id']) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 315, in _refresh_device neutron.services.loadbalancer.agent.agent_manager self.deploy_instance(logical_config) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/openstack/common/lockutils.py", line 249, in inner neutron.services.loadbalancer.agent.agent_manager return f(*args, **kwargs) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 311, in deploy_instance neutron.services.loadbalancer.agent.agent_manager self.create(logical_config) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 92, in create neutron.services.loadbalancer.agent.agent_manager self._spawn(logical_config) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py", line 115, in _spawn neutron.services.loadbalancer.agent.agent_manager ns.netns.execute(cmd) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/agent/linux/ip_lib.py", line 550, in execute neutron.services.loadbalancer.agent.agent_manager check_exit_code=check_exit_code, extra_ok_codes=extra_ok_codes) neutron.services.loadbalancer.agent.agent_manager File "/usr/lib/python2.7/site-packages/neutron/agent/linux/utils.py", line 84, in execute neutron.services.loadbalancer.agent.agent_manager raise RuntimeError(m) neutron.services.loadbalancer.agent.agent_manager RuntimeError: neutron.services.loadbalancer.agent.agent_manager Command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ip', 'netns', 'exec', Version-Release number of selected component (if applicable): ============================================================= openstack-neutron-2014.2.1-2.el7ost.noarch haproxy-1.5.2-3.el7_0.x86_64 How reproducible: ================= 2/2 Steps to Reproduce: =================== 1. Spawn Two instances and wait for them to become active Via tenant_a: nova boot tenant_a_instance --flavor m1.small --image <image_id> --min-count 2 --key-name tenant_a_keypair --security-groups default --nic net-id=<internal_ipv4_a_id> --nic net-id=<tenant_a_radvd_stateful_id> 2. Retrive your instances IPv6 addresses, tenant id and the subnet id you are about to use. You may use any IPv6 subnet, in this example we'll use tenant_a_radvd_stateful_subnet # nova list | awk '/tenant_a_instance/ {print $12}' | cut -d"=" -f2 | sed -e s/\;\// # neutron subnet-list | awk '/tenant_a_radvd_stateful_subnet/ {print $2}' 3. Create a LBaaS pool # neutron lb-pool-create --lb-method ROUND_ROBIN --name Ipv6_LBaaS --protocol HTTP --subnet-id c54f8745-2aba-42da-8845-15050db1d5d1 4. Add members to the pool # neutron lb-member-create Ipv6_LBaaS --address 2001:65:65:65:f816:3eff:feda:b05e --protocol-port 80 # neutron lb-member-create Ipv6_LBaaS --address 2001:65:65:65:f816:3eff:fe82:5d8 --protocol-port 80 5. Create a VIP: # neutron lb-vip-create Ipv6_LBaaS --name Ipv6_LBaaS_VIP --protocol-port 80 --protocol HTTP --subnet-id 0458273a-efe8-4d37-b2a0-e11cbd5e4d13 6. Check the VIP status: # neutron lb-vip-show Ipv6_LBaaS_VIP | grep status Actual results: =============== 1. status = ERROR 2. lbaas-agent.log (attached): TRACE neutron.services.loadbalancer.agent.agent_manager Stderr: '[ALERT] 349/101731 (20878) : Starting frontend fcb9db64-e877-4e95-a86f-fed6d1b244c2: cannot bind socket [2001:64:64:64::a:80]\n' Expected results: ================= IPv6 VIP should work. Additional info: ================ 1. Tested with RHEL7 2. haproxy configuration: global daemon user nobody group haproxy log /dev/log local0 log /dev/log local1 notice stats socket /var/lib/neutron/lbaas/2c18a738-05f4-4099-8348-94575c9ed290/sock mode 0666 level user defaults log global retries 3 option redispatch timeout connect 5000 timeout client 50000 timeout server 50000 frontend cb833240-d5ed-43b9-9ef1-5bc70e961366 option tcplog bind 2001:65:65:65:f816:3eff:fe86:d7ce:80 mode http default_backend 2c18a738-05f4-4099-8348-94575c9ed290 option forwardfor backend 2c18a738-05f4-4099-8348-94575c9ed290 mode http balance roundrobin option forwardfor timeout check 3s option httpchk GET / http-check expect rstatus 200 server a2b475f0-3247-49d4-8e04-bf570ffc9fb2 2001:65:65:65:f816:3eff:fe82:5d8:80 weight 1 check inter 3s fall 1 server ab96b468-3950-47ea-a37b-f9b9fab7485b 2001:65:65:65:f816:3eff:feda:b05e:80 weight 1 check inter 3s fall 1 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1403001/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp