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)
|