4f11ff30cf
The neutron client is going to be deprecated during the Ocata timeframe, so it is time to start switching to the openstack client to invoke networking commands. use of neutron client in neutron-legacy has been left as is. The command for setting the router gateway is left as follow up. Change-Id: I0a63e03d7d4a08ad6c27f2729fc298322baab397
111 lines
4.0 KiB
ReStructuredText
111 lines
4.0 KiB
ReStructuredText
Configure Load-Balancer Version 2
|
|
=================================
|
|
|
|
Starting in the OpenStack Liberty release, the
|
|
`neutron LBaaS v2 API <http://developer.openstack.org/api-ref-networking-v2-ext.html>`_
|
|
is now stable while the LBaaS v1 API has been deprecated. The LBaaS v2 reference
|
|
driver is based on Octavia.
|
|
|
|
|
|
Phase 1: Create DevStack + 2 nova instances
|
|
--------------------------------------------
|
|
|
|
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.
|
|
|
|
Install devstack
|
|
|
|
::
|
|
|
|
git clone https://git.openstack.org/openstack-dev/devstack
|
|
cd devstack
|
|
|
|
|
|
Edit your ``local.conf`` to look like
|
|
|
|
::
|
|
|
|
[[local|localrc]]
|
|
# Load the external LBaaS plugin.
|
|
enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas
|
|
enable_plugin octavia https://git.openstack.org/openstack/octavia
|
|
|
|
# ===== BEGIN localrc =====
|
|
DATABASE_PASSWORD=password
|
|
ADMIN_PASSWORD=password
|
|
SERVICE_PASSWORD=password
|
|
RABBIT_PASSWORD=password
|
|
# Enable Logging
|
|
LOGFILE=$DEST/logs/stack.sh.log
|
|
VERBOSE=True
|
|
LOG_COLOR=True
|
|
SCREEN_LOGDIR=$DEST/logs
|
|
# Pre-requisite
|
|
ENABLED_SERVICES=rabbit,mysql,key
|
|
# Horizon
|
|
ENABLED_SERVICES+=,horizon
|
|
# Nova
|
|
ENABLED_SERVICES+=,n-api,n-crt,n-cpu,n-cond,n-sch
|
|
# Glance
|
|
ENABLED_SERVICES+=,g-api,g-reg
|
|
# Neutron
|
|
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta
|
|
# Enable LBaaS v2
|
|
ENABLED_SERVICES+=,q-lbaasv2
|
|
ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api
|
|
# Cinder
|
|
ENABLED_SERVICES+=,c-api,c-vol,c-sch
|
|
# Tempest
|
|
ENABLED_SERVICES+=,tempest
|
|
# ===== END localrc =====
|
|
|
|
Run stack.sh and do some sanity checks
|
|
|
|
::
|
|
|
|
./stack.sh
|
|
. ./openrc
|
|
|
|
openstack network list # should show public and private networks
|
|
|
|
Create two nova instances that we can use as test http servers:
|
|
|
|
::
|
|
|
|
#create nova instances on private network
|
|
nova boot --image $(nova image-list | awk '/ cirros-.*-x86_64-uec / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node1
|
|
nova boot --image $(nova image-list | awk '/ cirros-.*-x86_64-uec / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node2
|
|
nova list # should show the nova instances just created
|
|
|
|
#add secgroup rules to allow ssh etc..
|
|
openstack security group rule create default --protocol icmp
|
|
openstack security group rule create default --protocol tcp --dst-port 22:22
|
|
openstack security group rule create default --protocol tcp --dst-port 80:80
|
|
|
|
Set up a simple web server on each of these instances. ssh into each instance (username 'cirros', password 'cubswin:)') and run
|
|
|
|
::
|
|
|
|
MYIP=$(ifconfig eth0|grep 'inet addr'|awk -F: '{print $2}'| awk '{print $1}')
|
|
while true; do echo -e "HTTP/1.0 200 OK\r\n\r\nWelcome to $MYIP" | sudo nc -l -p 80 ; done&
|
|
|
|
Phase 2: Create your load balancers
|
|
------------------------------------
|
|
|
|
::
|
|
|
|
neutron lbaas-loadbalancer-create --name lb1 private-subnet
|
|
neutron lbaas-loadbalancer-show lb1 # Wait for the provisioning_status to be ACTIVE.
|
|
neutron lbaas-listener-create --loadbalancer lb1 --protocol HTTP --protocol-port 80 --name listener1
|
|
sleep 10 # Sleep since LBaaS actions can take a few seconds depending on the environment.
|
|
neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1
|
|
sleep 10
|
|
neutron lbaas-member-create --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1
|
|
sleep 10
|
|
neutron lbaas-member-create --subnet private-subnet --address 10.0.0.5 --protocol-port 80 pool1
|
|
|
|
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.
|