Jump to: navigation, search

Difference between revisions of "Neutron/LBaaS/DeployWithDevstack"

< Neutron‎ | LBaaS
Line 49: Line 49:
 
neutron help | grep lbaas
 
neutron help | grep lbaas
 
</pre>
 
</pre>
 +
* Create Entities Using CLI/client
 +
** <pre> neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --protocol HTTP pool1 </pre>
 +
*** Client is currently bug so use this: (Just make sure endpoint and auth token exist and are correct)
 +
*** <pre> curl -i http://localhost:9696/v2.0/lbaas/pools.json -X POST -H "X-Auth-Token: <INSERT_TOKEN_HERE>" -H "Content-Type: application/json" -H "Accept: application/json" -H "User-Agent: python-neutronclient" -d '{"pool": {"lb_algorithm": "ROUND_ROBIN", "protocol": "HTTP", "name": "pool1"}}' </pre>
 +
** <pre> neutron lbaas-member-create --subnet-id $(neutron subnet-list | awk '/ private-subnet / {print $2}') --address 10.0.0.2 --protocol-port 80 $(neutron lbaas-pool-list | awk '/ pool1 / {print $2}') </pre>
 +
** <pre> neutron lbaas-loadbalancer-create lb1 $(neutron subnet-list | awk '/ private-subnet / {print $2}') </pre>
 +
** <pre> neutron lbaas-listener-create --loadbalancer-id $(neutron lbaas-loadbalancer-list | awk '/ lb1 / {print $2}') --protocol HTTP --protocol-port 80 --default-pool-id $(neutron lbaas-pool-list | awk '/ pool1 / {print $2}') </pre>
 
* Issues
 
* Issues
 
** If you get an error similar to "operational error" with some DB fluff, you'll need to stop neutron, run migrations, and restart neutron.  If the migration fails, you might need to clean out stale lbaas tables by hand and try again.  https://github.com/openstack/neutron/blob/master/neutron/db/migration/README
 
** If you get an error similar to "operational error" with some DB fluff, you'll need to stop neutron, run migrations, and restart neutron.  If the migration fails, you might need to clean out stale lbaas tables by hand and try again.  https://github.com/openstack/neutron/blob/master/neutron/db/migration/README

Revision as of 04:45, 29 July 2014

Deploying Neutron LBaaS With Devstack

  • Install devstack with neutron and neutron lbaas
  • Pull down gerrit change requests with useable code
  • Run database migration
    • neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
    • If any issues pop up its probably better to just ./unstack.sh devstack and ./stack.sh devstack again while you've got the gerrit change request checked out.
  • Change the neutron config
    • /etc/neutron/neutron.conf
      • Under the [DEFAULT] section there is an options called service_plugins. It is a comma-delimited list. Add the following to it:
        • If service_plugins option already exists add to the end of the line:
          • ,neutron.services.loadbalancer.plugin.LoadBalancerPluginv2
        • If service_plugins option does not exist add this line:
          • service_plugins = neutron.services.loadbalancer.plugin.LoadBalancerPluginv2
      • Under the [service_providers] section (usually at the bottom) there are options called service_provider, there can be many service_provider entries. Add the following
        • To use the LoggingNoopDriver:
          • service_provider=LOADBALANCERV2:LoggingNoop:neutron.services.loadbalancer.drivers.logging_noop.driver.LoggingNoopLoadBalancerDriver:default
        • To use the Agentless Haproxy Driver:
          • service_provider=LOADBALANCERV2:Haproxy:neutron.services.loadbalancer.drivers.haproxy.nonagent_namespace_driver.HaproxyNSDriver:default
  • Re-install the neutron code and restart the neutron-server process. This is most easily done by going into the devstack screen, switching to neutron server (^A-6, the screen name is q-svc), hitting ^C, up arrow, enter. Alternately:
    • I use this bash script:
#!/bin/bash

if [ `ps aux | grep neutron-server | wc -l` -gt 1 ]; then
    kill -9 `ps aux | grep '[n]eutron-server' -m1 | awk '{print $2}'`
fi

sudo PIP_DOWNLOAD_CACHE=/var/cache/pip HTTP_PROXY= HTTPS_PROXY= NO_PROXY= /usr/local/bin/pip install --build=/tmp/pip-build.bE71P -e /opt/stack/neutron

/usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
  • Install the CLI/client
cd ~
git clone https://github.com/oslbaas/python-neutronclient.git
cd python-neutronclient/
git checkout -b objectmodel
git pull origin objectmodel
cd /opt/stack/python-neutronclient/
git pull ~/python-neutronclient objectmodel
sudo python setup.py install
cd
neutron help | grep lbaas
  • Create Entities Using CLI/client
    •  neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --protocol HTTP pool1 
      • Client is currently bug so use this: (Just make sure endpoint and auth token exist and are correct)
      •  curl -i http://localhost:9696/v2.0/lbaas/pools.json -X POST -H "X-Auth-Token: <INSERT_TOKEN_HERE>" -H "Content-Type: application/json" -H "Accept: application/json" -H "User-Agent: python-neutronclient" -d '{"pool": {"lb_algorithm": "ROUND_ROBIN", "protocol": "HTTP", "name": "pool1"}}' 
    •  neutron lbaas-member-create --subnet-id $(neutron subnet-list | awk '/ private-subnet / {print $2}') --address 10.0.0.2 --protocol-port 80 $(neutron lbaas-pool-list | awk '/ pool1 / {print $2}') 
    •  neutron lbaas-loadbalancer-create lb1 $(neutron subnet-list | awk '/ private-subnet / {print $2}') 
    •  neutron lbaas-listener-create --loadbalancer-id $(neutron lbaas-loadbalancer-list | awk '/ lb1 / {print $2}') --protocol HTTP --protocol-port 80 --default-pool-id $(neutron lbaas-pool-list | awk '/ pool1 / {print $2}') 
  • Issues