- Updated LBaaS v2 setup to use Octavia.
- Removed the old cirros image URL, the default should be sufficient.
- Fixed nova boot commands based on Liberty DevStack.
- Added sleeps to LBaaS v2 commands since most commands
can take a few seconds to complete.
- Added wait to load balancer creation since it can take
a few minutes to complete.
- Wrapped long lines in the descriptions.
Change-Id: Ib4a3f02ebc2606e3e16591ae3a23676cb0a6cd64
... | ... |
@@ -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. |