Skip to content

Commit 1516997

Browse files
committed
Update user guide for Octavia
Change-Id: I8e3134c3b2d591f7ab72b8040e1b931e967e11be
1 parent b5c2e7b commit 1516997

4 files changed

Lines changed: 150 additions & 149 deletions

File tree

doc/source/guides.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Walk through various setups used by stackers
2020
guides/neutron
2121
guides/devstack-with-nested-kvm
2222
guides/nova
23-
guides/devstack-with-lbaas-v2
23+
guides/devstack-with-octavia
2424
guides/devstack-with-ldap
2525

2626
All-In-One Single VM
@@ -69,10 +69,10 @@ Nova and devstack
6969

7070
Guide to working with nova features :doc:`Nova and devstack <guides/nova>`.
7171

72-
Configure Load-Balancer Version 2
73-
-----------------------------------
72+
Configure Octavia
73+
-----------------
7474

75-
Guide on :doc:`Configure Load-Balancer Version 2 <guides/devstack-with-lbaas-v2>`.
75+
Guide on :doc:`Configure Octavia <guides/devstack-with-octavia>`.
7676

7777
Deploying DevStack with LDAP
7878
----------------------------

doc/source/guides/devstack-with-lbaas-v2.rst

Lines changed: 0 additions & 145 deletions
This file was deleted.

doc/source/guides/devstack-with-nested-kvm.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
.. _kvm_nested_virt:
2+
13
=======================================================
24
Configure DevStack with KVM-based Nested Virtualization
35
=======================================================
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
Devstack with Octavia Load Balancing
2+
====================================
3+
4+
Starting with the OpenStack Pike release, Octavia is now a standalone service
5+
providing load balancing services for OpenStack.
6+
7+
This guide will show you how to create a devstack with `Octavia API`_ enabled.
8+
9+
.. _Octavia API: https://docs.openstack.org/api-ref/load-balancer/v2/index.html
10+
11+
Phase 1: Create DevStack + 2 nova instances
12+
--------------------------------------------
13+
14+
First, set up a VM of your choice with at least 8 GB RAM and 16 GB disk space,
15+
make sure it is updated. Install git and any other developer tools you find
16+
useful.
17+
18+
Install devstack::
19+
20+
git clone https://opendev.org/openstack/devstack
21+
cd devstack/tools
22+
sudo ./create-stack-user.sh
23+
cd ../..
24+
sudo mv devstack /opt/stack
25+
sudo chown -R stack.stack /opt/stack/devstack
26+
27+
This will clone the current devstack code locally, then setup the "stack"
28+
account that devstack services will run under. Finally, it will move devstack
29+
into its default location in /opt/stack/devstack.
30+
31+
Edit your ``/opt/stack/devstack/local.conf`` to look like::
32+
33+
[[local|localrc]]
34+
# ===== BEGIN localrc =====
35+
DATABASE_PASSWORD=password
36+
ADMIN_PASSWORD=password
37+
SERVICE_PASSWORD=password
38+
SERVICE_TOKEN=password
39+
RABBIT_PASSWORD=password
40+
GIT_BASE=https://opendev.org
41+
# Optional settings:
42+
# OCTAVIA_AMP_BASE_OS=centos
43+
# OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID=9-stream
44+
# OCTAVIA_AMP_IMAGE_SIZE=3
45+
# OCTAVIA_LB_TOPOLOGY=ACTIVE_STANDBY
46+
# OCTAVIA_ENABLE_AMPHORAV2_JOBBOARD=True
47+
# LIBS_FROM_GIT+=octavia-lib,
48+
# Enable Logging
49+
LOGFILE=$DEST/logs/stack.sh.log
50+
VERBOSE=True
51+
LOG_COLOR=True
52+
enable_service rabbit
53+
enable_plugin neutron $GIT_BASE/openstack/neutron
54+
# Octavia supports using QoS policies on the VIP port:
55+
enable_service q-qos
56+
enable_service placement-api placement-client
57+
# Octavia services
58+
enable_plugin octavia $GIT_BASE/openstack/octavia master
59+
enable_plugin octavia-dashboard $GIT_BASE/openstack/octavia-dashboard
60+
enable_plugin ovn-octavia-provider $GIT_BASE/openstack/ovn-octavia-provider
61+
enable_plugin octavia-tempest-plugin $GIT_BASE/openstack/octavia-tempest-plugin
62+
enable_service octavia o-api o-cw o-hm o-hk o-da
63+
# If you are enabling barbican for TLS offload in Octavia, include it here.
64+
# enable_plugin barbican $GIT_BASE/openstack/barbican
65+
# enable_service barbican
66+
# Cinder (optional)
67+
disable_service c-api c-vol c-sch
68+
# Tempest
69+
enable_service tempest
70+
# ===== END localrc =====
71+
72+
.. note::
73+
For best performance it is highly recommended to use KVM
74+
virtualization instead of QEMU.
75+
Also make sure nested virtualization is enabled as documented in
76+
:ref:`the respective guide <kvm_nested_virt>`.
77+
By adding ``LIBVIRT_CPU_MODE="host-passthrough"`` to your
78+
``local.conf`` you enable the guest VMs to make use of all features your
79+
host's CPU provides.
80+
81+
Run stack.sh and do some sanity checks::
82+
83+
sudo su - stack
84+
cd /opt/stack/devstack
85+
./stack.sh
86+
. ./openrc
87+
88+
openstack network list # should show public and private networks
89+
90+
Create two nova instances that we can use as test http servers::
91+
92+
# create nova instances on private network
93+
openstack server create --image $(openstack image list | awk '/ cirros-.*-x86_64-.* / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node1
94+
openstack server create --image $(openstack image list | awk '/ cirros-.*-x86_64-.* / {print $2}') --flavor 1 --nic net-id=$(openstack network list | awk '/ private / {print $2}') node2
95+
openstack server list # should show the nova instances just created
96+
97+
# add secgroup rules to allow ssh etc..
98+
openstack security group rule create default --protocol icmp
99+
openstack security group rule create default --protocol tcp --dst-port 22:22
100+
openstack security group rule create default --protocol tcp --dst-port 80:80
101+
102+
Set up a simple web server on each of these instances. One possibility is to use
103+
the `Golang test server`_ that is used by the Octavia project for CI testing
104+
as well.
105+
Copy the binary to your instances and start it as shown below
106+
(username 'cirros', password 'gocubsgo')::
107+
108+
INST_IP=<instance IP>
109+
scp -O test_server.bin cirros@${INST_IP}:
110+
ssh -f cirros@${INST_IP} ./test_server.bin -id ${INST_IP}
111+
112+
When started this way the test server will respond to HTTP requests with
113+
its own IP.
114+
115+
Phase 2: Create your load balancer
116+
----------------------------------
117+
118+
Create your load balancer::
119+
120+
openstack loadbalancer create --wait --name lb1 --vip-subnet-id private-subnet
121+
openstack loadbalancer listener create --wait --protocol HTTP --protocol-port 80 --name listener1 lb1
122+
openstack loadbalancer pool create --wait --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1
123+
openstack loadbalancer healthmonitor create --wait --delay 5 --timeout 2 --max-retries 1 --type HTTP pool1
124+
openstack loadbalancer member create --wait --subnet-id private-subnet --address <web server 1 address> --protocol-port 80 pool1
125+
openstack loadbalancer member create --wait --subnet-id private-subnet --address <web server 2 address> --protocol-port 80 pool1
126+
127+
Please note: The <web server # address> fields are the IP addresses of the nova
128+
servers created in Phase 1.
129+
Also note, using the API directly you can do all of the above commands in one
130+
API call.
131+
132+
Phase 3: Test your load balancer
133+
--------------------------------
134+
135+
::
136+
137+
openstack loadbalancer show lb1 # Note the vip_address
138+
curl http://<vip_address>
139+
curl http://<vip_address>
140+
141+
This should show the "Welcome to <IP>" message from each member server.
142+
143+
144+
.. _Golang test server: https://opendev.org/openstack/octavia-tempest-plugin/src/branch/master/octavia_tempest_plugin/contrib/test_server

0 commit comments

Comments
 (0)