...
|
...
|
@@ -1,13 +1,17 @@
|
1
|
|
-Configure Load-Balancer in Kilo
|
|
1
|
+Configure Load-Balancer Version 2
|
2
|
2
|
=================================
|
3
|
3
|
|
4
|
|
-The Kilo release of OpenStack will support Version 2 of the neutron load balancer. Until now, using OpenStack `LBaaS V2 <http://docs.openstack.org/api/openstack-network/2.0/content/lbaas_ext.html>`_ has required a good understanding of neutron and LBaaS architecture and several manual steps.
|
|
4
|
+Starting in the OpenStack Liberty release, the
|
|
5
|
+`neutron LBaaS v2 API <http://developer.openstack.org/api-ref-networking-v2-ext.html>`_
|
|
6
|
+is now stable while the LBaaS v1 API has been deprecated. The LBaaS v2 reference
|
|
7
|
+driver is based on Octavia.
|
5
|
8
|
|
6
|
9
|
|
7
|
10
|
Phase 1: Create DevStack + 2 nova instances
|
8
|
11
|
--------------------------------------------
|
9
|
12
|
|
10
|
|
-First, set up a vm of your choice with at least 8 GB RAM and 16 GB disk space, make sure it is updated. Install git and any other developer tools you find useful.
|
|
13
|
+First, set up a vm of your choice with at least 8 GB RAM and 16 GB disk space,
|
|
14
|
+make sure it is updated. Install git and any other developer tools you find useful.
|
11
|
15
|
|
12
|
16
|
Install devstack
|
13
|
17
|
|
...
|
...
|
@@ -24,6 +28,7 @@ Edit your ``local.conf`` to look like
|
24
|
24
|
[[local|localrc]]
|
25
|
25
|
# Load the external LBaaS plugin.
|
26
|
26
|
enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas
|
|
27
|
+ enable_plugin octavia https://git.openstack.org/openstack/octavia
|
27
|
28
|
|
28
|
29
|
# ===== BEGIN localrc =====
|
29
|
30
|
DATABASE_PASSWORD=password
|
...
|
...
|
@@ -42,13 +47,13 @@ Edit your ``local.conf`` to look like
|
42
|
42
|
ENABLED_SERVICES+=,horizon
|
43
|
43
|
# Nova
|
44
|
44
|
ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch
|
45
|
|
- IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"
|
46
|
45
|
# Glance
|
47
|
46
|
ENABLED_SERVICES+=,g-api,g-reg
|
48
|
47
|
# Neutron
|
49
|
48
|
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta
|
50
|
|
- # Enable LBaaS V2
|
|
49
|
+ # Enable LBaaS v2
|
51
|
50
|
ENABLED_SERVICES+=,q-lbaasv2
|
|
51
|
+ ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api
|
52
|
52
|
# Cinder
|
53
|
53
|
ENABLED_SERVICES+=,c-api,c-vol,c-sch
|
54
|
54
|
# Tempest
|
...
|
...
|
@@ -69,11 +74,11 @@ Create two nova instances that we can use as test http servers:
|
69
|
69
|
::
|
70
|
70
|
|
71
|
71
|
#create nova instances on private network
|
72
|
|
- nova boot --image $(nova image-list | awk '/ cirros-0.3.0-x86_64-disk / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node1
|
73
|
|
- nova boot --image $(nova image-list | awk '/ cirros-0.3.0-x86_64-disk / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node2
|
|
72
|
+ nova boot --image $(nova image-list | awk '/ cirros-.*-x86_64-uec / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node1
|
|
73
|
+ nova boot --image $(nova image-list | awk '/ cirros-.*-x86_64-uec / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node2
|
74
|
74
|
nova list # should show the nova instances just created
|
75
|
75
|
|
76
|
|
- #add secgroup rule to allow ssh etc..
|
|
76
|
+ #add secgroup rules to allow ssh etc..
|
77
|
77
|
neutron security-group-rule-create default --protocol icmp
|
78
|
78
|
neutron security-group-rule-create default --protocol tcp --port-range-min 22 --port-range-max 22
|
79
|
79
|
neutron security-group-rule-create default --protocol tcp --port-range-min 80 --port-range-max 80
|
...
|
...
|
@@ -91,9 +96,16 @@ Phase 2: Create your load balancers
|
91
|
91
|
::
|
92
|
92
|
|
93
|
93
|
neutron lbaas-loadbalancer-create --name lb1 private-subnet
|
|
94
|
+ neutron lbaas-loadbalancer-show lb1 # Wait for the provisioning_status to be ACTIVE.
|
94
|
95
|
neutron lbaas-listener-create --loadbalancer lb1 --protocol HTTP --protocol-port 80 --name listener1
|
|
96
|
+ sleep 10 # Sleep since LBaaS actions can take a few seconds depending on the environment.
|
95
|
97
|
neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1
|
|
98
|
+ sleep 10
|
96
|
99
|
neutron lbaas-member-create --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1
|
|
100
|
+ sleep 10
|
97
|
101
|
neutron lbaas-member-create --subnet private-subnet --address 10.0.0.5 --protocol-port 80 pool1
|
98
|
102
|
|
99
|
|
-Please note here that the "10.0.0.3" and "10.0.0.5" in the above commands are the IPs of the nodes (in my test run-thru, they were actually 10.2 and 10.4), and the address of the created LB will be reported as "vip_address" from the lbaas-loadbalancer-create, and a quick test of that LB is "curl that-lb-ip", which should alternate between showing the IPs of the two nodes.
|
|
103
|
+Please note here that the "10.0.0.3" and "10.0.0.5" in the above commands are the IPs of the nodes
|
|
104
|
+(in my test run-thru, they were actually 10.2 and 10.4), and the address of the created LB will be
|
|
105
|
+reported as "vip_address" from the lbaas-loadbalancer-create, and a quick test of that LB is
|
|
106
|
+"curl that-lb-ip", which should alternate between showing the IPs of the two nodes.
|