Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 1 | Configure Load-Balancer Version 2 |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 2 | ================================= |
| 3 | |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 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. |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 8 | |
| 9 | |
| 10 | Phase 1: Create DevStack + 2 nova instances |
| 11 | -------------------------------------------- |
| 12 | |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 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. |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 15 | |
| 16 | Install devstack |
| 17 | |
| 18 | :: |
| 19 | |
| 20 | git clone https://git.openstack.org/openstack-dev/devstack |
| 21 | cd devstack |
| 22 | |
| 23 | |
Markus Zoeller | c30657d | 2015-11-02 11:27:46 +0100 | [diff] [blame] | 24 | Edit your ``local.conf`` to look like |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 25 | |
| 26 | :: |
| 27 | |
| 28 | [[local|localrc]] |
| 29 | # Load the external LBaaS plugin. |
| 30 | enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 31 | enable_plugin octavia https://git.openstack.org/openstack/octavia |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 32 | |
| 33 | # ===== BEGIN localrc ===== |
| 34 | DATABASE_PASSWORD=password |
| 35 | ADMIN_PASSWORD=password |
| 36 | SERVICE_PASSWORD=password |
| 37 | SERVICE_TOKEN=password |
| 38 | RABBIT_PASSWORD=password |
| 39 | # Enable Logging |
| 40 | LOGFILE=$DEST/logs/stack.sh.log |
| 41 | VERBOSE=True |
| 42 | LOG_COLOR=True |
| 43 | SCREEN_LOGDIR=$DEST/logs |
| 44 | # Pre-requisite |
| 45 | ENABLED_SERVICES=rabbit,mysql,key |
| 46 | # Horizon |
| 47 | ENABLED_SERVICES+=,horizon |
| 48 | # Nova |
| 49 | ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 50 | # Glance |
| 51 | ENABLED_SERVICES+=,g-api,g-reg |
| 52 | # Neutron |
| 53 | ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 54 | # Enable LBaaS v2 |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 55 | ENABLED_SERVICES+=,q-lbaasv2 |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 56 | ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 57 | # Cinder |
| 58 | ENABLED_SERVICES+=,c-api,c-vol,c-sch |
| 59 | # Tempest |
| 60 | ENABLED_SERVICES+=,tempest |
| 61 | # ===== END localrc ===== |
| 62 | |
| 63 | Run stack.sh and do some sanity checks |
| 64 | |
| 65 | :: |
| 66 | |
| 67 | ./stack.sh |
| 68 | . ./openrc |
| 69 | |
| 70 | neutron net-list # should show public and private networks |
| 71 | |
| 72 | Create two nova instances that we can use as test http servers: |
| 73 | |
| 74 | :: |
| 75 | |
| 76 | #create nova instances on private network |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 77 | 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 |
| 78 | 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 |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 79 | nova list # should show the nova instances just created |
| 80 | |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 81 | #add secgroup rules to allow ssh etc.. |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 82 | neutron security-group-rule-create default --protocol icmp |
| 83 | neutron security-group-rule-create default --protocol tcp --port-range-min 22 --port-range-max 22 |
| 84 | neutron security-group-rule-create default --protocol tcp --port-range-min 80 --port-range-max 80 |
| 85 | |
| 86 | Set up a simple web server on each of these instances. ssh into each instance (username 'cirros', password 'cubswin:)') and run |
| 87 | |
| 88 | :: |
| 89 | |
| 90 | MYIP=$(ifconfig eth0|grep 'inet addr'|awk -F: '{print $2}'| awk '{print $1}') |
| 91 | while true; do echo -e "HTTP/1.0 200 OK\r\n\r\nWelcome to $MYIP" | sudo nc -l -p 80 ; done& |
| 92 | |
| 93 | Phase 2: Create your load balancers |
| 94 | ------------------------------------ |
| 95 | |
| 96 | :: |
| 97 | |
| 98 | neutron lbaas-loadbalancer-create --name lb1 private-subnet |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 99 | neutron lbaas-loadbalancer-show lb1 # Wait for the provisioning_status to be ACTIVE. |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 100 | neutron lbaas-listener-create --loadbalancer lb1 --protocol HTTP --protocol-port 80 --name listener1 |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 101 | sleep 10 # Sleep since LBaaS actions can take a few seconds depending on the environment. |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 102 | neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1 |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 103 | sleep 10 |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 104 | neutron lbaas-member-create --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1 |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 105 | sleep 10 |
Aishwarya Thangappa | 7c57306 | 2015-02-18 01:51:13 -0800 | [diff] [blame] | 106 | neutron lbaas-member-create --subnet private-subnet --address 10.0.0.5 --protocol-port 80 pool1 |
| 107 | |
Richard Theis | 7e55068 | 2015-10-13 07:51:05 -0500 | [diff] [blame] | 108 | Please note here that the "10.0.0.3" and "10.0.0.5" in the above commands are the IPs of the nodes |
| 109 | (in my test run-thru, they were actually 10.2 and 10.4), and the address of the created LB will be |
| 110 | reported as "vip_address" from the lbaas-loadbalancer-create, and a quick test of that LB is |
| 111 | "curl that-lb-ip", which should alternate between showing the IPs of the two nodes. |