lost and found ( for me ? )

OpenStack kolla : enable LBaaS

Assume you have already set up OpenStack multi nodes with kolla.
http://lost-and-found-narihiro.blogspot.jp/2017/09/deploy-openstack-multi-nodes-with-kolla.html


Destroy an existing environment.
# kolla-ansible destroy --yes-i-really-really-mean-it


edit globals.yml.  enable lbaas.
# egrep lbaas /etc/kolla/globals.yml | grep -v ^#
enable_horizon_neutron_lbaas: "yes"
enable_neutron_lbaas: "yes"


deploy OpenStack.
# kolla-ansible deploy ./multimode

# kolla-ansible post-deploy

# ./usr/local/share/kolla-ansible/init-runonce


Launch two instances. ( OS is Ubuntu )
root@controller:~# openstack server list
+--------------------------------------+------------+--------+--------------------+--------+----------+
| ID                                   | Name       | Status | Networks           | Image  | Flavor   |
+--------------------------------------+------------+--------+--------------------+--------+----------+
| 8c5d5851-d1e2-44a7-9f3f-5dfbed6b4da6 | instance01 | ACTIVE | demo-net=10.0.0.13 | xenial | m1.small |
| 1aa40f22-180b-4d42-b0fa-72ad813288ab | instance02 | ACTIVE | demo-net=10.0.0.12 | xenial | m1.small |
+--------------------------------------+------------+--------+--------------------+--------+----------+


Create a load balancer via GUI








root@controller:~# source /etc/kolla/admin-openrc.sh
root@controller:~# neutron
(neutron) lbaas-loadbalancer-list
+--------------------------------------+------+-------------+---------------------+----------+
| id                                   | name | vip_address | provisioning_status | provider |
+--------------------------------------+------+-------------+---------------------+----------+
| db08bd1b-9f22-4281-8439-1ae808b79e54 | lb01 | 10.0.0.4    | ACTIVE              | haproxy  |
+--------------------------------------+------+-------------+---------------------+----------+
(neutron) lbaas-pool-list
+--------------------------------------+--------+----------+----------------+
| id                                   | name   | protocol | admin_state_up |
+--------------------------------------+--------+----------+----------------+
| 6183cf5f-8efe-44c5-8cfb-5cae52f3de04 | Pool 1 | HTTP     | True           |
+--------------------------------------+--------+----------+----------------+
(neutron) lbaas-listener-list
+--------------------------------------+--------------------------------------+------------+----------+---------------+----------------+
| id                                   | default_pool_id                      | name       | protocol | protocol_port | admin_state_up |
+--------------------------------------+--------------------------------------+------------+----------+---------------+----------------+
| 270a57ce-3205-40fb-926f-201bb7d064ac | 6183cf5f-8efe-44c5-8cfb-5cae52f3de04 | Listener 1 | HTTP     |            80 | True           |
+--------------------------------------+--------------------------------------+------------+----------+---------------+----------------+
(neutron) lbaas-healthmonitor-list
+--------------------------------------+------+------+----------------+
| id                                   | name | type | admin_state_up |
+--------------------------------------+------+------+----------------+
| 80567969-c3b8-45fa-89f8-ac969bb21449 |      | HTTP | True           |
+--------------------------------------+------+------+----------------+
(neutron)


add floating IPs for the LB.


Associate a floating IP with the LB.


run HTTP service on the two instances.
root@instance01:~# echo 'instance01' > /var/www/html/index.html
root@instance01:~# curl http://127.0.0.1
instance01
root@instance01:~#

root@instance02:~# echo 'instance02' > /var/www/html/index.html
root@instance02:~# curl http://127.0.0.1
instance02


Confirm you can get a reply from LB’s IP.


LB demo net IP : 10.0.0.4
LB floating IP : 192.168.100.123
root@controller:~# docker ps | grep l3
6fcf0ce0f41e        192.168.100.10:5000/kolla/ubuntu-source-neutron-l3-agent:4.0.2            "kolla_start"       2 hours ago         Up 2 hours                              neutron_l3_agent

root@controller:~# docker exec -i -t -u root 6fcf0ce0f41e ip netns exec qrouter-315eb0f1-5d80-45f0-9d4c-bfba3e98b9c4 curl http://10.0.0.4
instance01
curl (http://10.0.0.4/): response: 200, time: 0.003, size: 11
root@controller:~# docker exec -i -t -u root 6fcf0ce0f41e ip netns exec qrouter-315eb0f1-5d80-45f0-9d4c-bfba3e98b9c4 curl http://10.0.0.4
instance02
curl (http://10.0.0.4/): response: 200, time: 0.002, size: 11
root@controller:~# docker exec -i -t -u root 6fcf0ce0f41e ip netns exec qrouter-315eb0f1-5d80-45f0-9d4c-bfba3e98b9c4 curl http://10.0.0.4
instance01
curl (http://10.0.0.4/): response: 200, time: 0.002, size: 11
root@controller:~#


via a LB’s floating IP.
$ curl http://192.168.100.123
instance02
$ curl http://192.168.100.123
instance01
$ curl http://192.168.100.123
instance02


stop apache on instance02.
ubuntu@instance02:~$ sudo systemctl stop apache2


access to the floating IP
$ curl http://192.168.100.123
instance01
$ curl http://192.168.100.123
instance01
$ curl http://192.168.100.123
instance01


Source IP address is NATed to LB’s IP
on the instance02.
root@instance02:~# tcpdump -nn -i ens3 port 80 | grep -i get
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
04:36:05.861461 IP 10.0.0.4.43086 > 10.0.0.12.80: Flags [P.], seq 1:38, ack 1, win 221, options [nop,nop,TS val 1987433 ecr 800265], length 37: HTTP: GET / HTTP/1.0


(neutron) lbaas-loadbalancer-list
+--------------------------------------+------+-------------+---------------------+----------+
| id                                   | name | vip_address | provisioning_status | provider |
+--------------------------------------+------+-------------+---------------------+----------+
| db08bd1b-9f22-4281-8439-1ae808b79e54 | lb01 | 10.0.0.4    | ACTIVE              | haproxy  |
+--------------------------------------+------+-------------+---------------------+----------+


(neutron) lbaas-loadbalancer-stats db08bd1b-9f22-4281-8439-1ae808b79e54
+--------------------+-------+
| Field              | Value |
+--------------------+-------+
| active_connections | 0     |
| bytes_in           | 2558  |
| bytes_out          | 7821  |
| total_connections  | 33    |
+--------------------+-------+
(neutron) lbaas-loadbalancer-status db08bd1b-9f22-4281-8439-1ae808b79e54
{
   "loadbalancer": {
       "name": "lb01",
       "provisioning_status": "ACTIVE",
       "listeners": [
           {
               "name": "Listener 1",
               "provisioning_status": "ACTIVE",
               "pools": [
                   {
                       "name": "Pool 1",
                       "provisioning_status": "ACTIVE",
                       "healthmonitor": {
                           "provisioning_status": "ACTIVE",
                           "type": "HTTP",
                           "id": "80567969-c3b8-45fa-89f8-ac969bb21449",
                           "name": ""
                       },
                       "members": [
                           {
                               "name": "",
                               "provisioning_status": "ACTIVE",
                               "address": "10.0.0.13",
                               "protocol_port": 80,
                               "id": "67328b92-fe19-4c59-868d-6599bdeaeba0",
                               "operating_status": "ONLINE"
                           },
                           {
                               "name": "",
                               "provisioning_status": "ACTIVE",
                               "address": "10.0.0.12",
                               "protocol_port": 80,
                               "id": "e17d3eb6-d9cd-4f4c-8d51-756484c8f48c",
                               "operating_status": "ONLINE"
                           }
                       ],
                       "id": "6183cf5f-8efe-44c5-8cfb-5cae52f3de04",
                       "operating_status": "ONLINE"
                   }
               ],
               "l7policies": [],
               "id": "270a57ce-3205-40fb-926f-201bb7d064ac",
               "operating_status": "ONLINE"
           }
       ],
       "pools": [
           {
               "name": "Pool 1",
               "provisioning_status": "ACTIVE",
               "healthmonitor": {
                   "provisioning_status": "ACTIVE",
                   "type": "HTTP",
                   "id": "80567969-c3b8-45fa-89f8-ac969bb21449",
                   "name": ""
               },
               "members": [
                   {
                       "name": "",
                       "provisioning_status": "ACTIVE",
                       "address": "10.0.0.13",
                       "protocol_port": 80,
                       "id": "67328b92-fe19-4c59-868d-6599bdeaeba0",
                       "operating_status": "ONLINE"
                   },
                   {
                       "name": "",
                       "provisioning_status": "ACTIVE",
                       "address": "10.0.0.12",
                       "protocol_port": 80,
                       "id": "e17d3eb6-d9cd-4f4c-8d51-756484c8f48c",
                       "operating_status": "ONLINE"
                   }
               ],
               "id": "6183cf5f-8efe-44c5-8cfb-5cae52f3de04",
               "operating_status": "ONLINE"
           }
       ],
       "id": "db08bd1b-9f22-4281-8439-1ae808b79e54",
       "operating_status": "ONLINE"
   }
}
(neutron)


remove a load balancer.
root@controller:~# neutron
(neutron) lbaas-pool-list
+--------------------------------------+--------+----------+----------------+
| id                                   | name   | protocol | admin_state_up |
+--------------------------------------+--------+----------+----------------+
| 6183cf5f-8efe-44c5-8cfb-5cae52f3de04 | Pool 1 | HTTP     | True           |
+--------------------------------------+--------+----------+----------------+
(neutron) lbaas-pool-delete 6183cf5f-8efe-44c5-8cfb-5cae52f3de04
healthmonitor 80567969-c3b8-45fa-89f8-ac969bb21449 is using this pool
Neutron server returns request_ids: ['req-6c76ef5d-d046-4579-8020-509870dd1c1b']
(neutron) lbaas-healthmonitor-list
+--------------------------------------+------+------+----------------+
| id                                   | name | type | admin_state_up |
+--------------------------------------+------+------+----------------+
| 80567969-c3b8-45fa-89f8-ac969bb21449 |      | HTTP | True           |
+--------------------------------------+------+------+----------------+
(neutron) lbaas-healthmonitor-delete 80567969-c3b8-45fa-89f8-ac969bb21449
Deleted healthmonitor: 80567969-c3b8-45fa-89f8-ac969bb21449
(neutron) lbaas-pool-delete 6183cf5f-8efe-44c5-8cfb-5cae52f3de04
Deleted pool: 6183cf5f-8efe-44c5-8cfb-5cae52f3de04
(neutron) lbaas-listener-list
+--------------------------------------+-----------------+------------+----------+---------------+----------------+
| id                                   | default_pool_id | name       | protocol | protocol_port | admin_state_up |
+--------------------------------------+-----------------+------------+----------+---------------+----------------+
| 270a57ce-3205-40fb-926f-201bb7d064ac |                 | Listener 1 | HTTP     |            80 | True           |
+--------------------------------------+-----------------+------------+----------+---------------+----------------+
(neutron) lbaas-listener-delete 270a57ce-3205-40fb-926f-201bb7d064ac
Deleted listener: 270a57ce-3205-40fb-926f-201bb7d064ac
(neutron) lbaas-loadbalancer-list
+--------------------------------------+------+-------------+---------------------+----------+
| id                                   | name | vip_address | provisioning_status | provider |
+--------------------------------------+------+-------------+---------------------+----------+
| db08bd1b-9f22-4281-8439-1ae808b79e54 | lb01 | 10.0.0.4    | ACTIVE              | haproxy  |
+--------------------------------------+------+-------------+---------------------+----------+
(neutron) lbaas-loadbalancer-delete db08bd1b-9f22-4281-8439-1ae808b79e54
Deleted loadbalancer: db08bd1b-9f22-4281-8439-1ae808b79e54
(neutron)