Giter Site home page Giter Site logo

dosaboy / charm-neutron-gateway Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openstack/charm-neutron-gateway

0.0 3.0 0.0 1.03 MB

Juju Charm - Neutron Gateway

Home Page: http://openstack.org

License: Other

Makefile 0.08% Python 99.09% Shell 0.84%

charm-neutron-gateway's Introduction

Overview

Neutron provides flexible software defined networking (SDN) for OpenStack.

This charm is designed to be used in conjunction with the rest of the OpenStack related charms in the charm store to virtualize the network that Nova Compute instances plug into.

It's designed as a replacement for nova-network; however it does not yet support all of the features of nova-network (such as multihost) so may not be suitable for all.

Neutron supports a rich plugin/extension framework for propriety networking solutions and supports (in core) Nicira NVP, NEC, Cisco and others...

See the upstream Neutron documentation for more details.

Usage

In order to use Neutron with OpenStack, you will need to deploy the nova-compute and nova-cloud-controller charms with the network-manager configuration set to 'Neutron':

nova-cloud-controller:
    network-manager: Neutron

This decision must be made prior to deploying OpenStack with Juju as Neutron is deployed baked into these charms from install onwards:

juju deploy nova-compute
juju deploy --config config.yaml nova-cloud-controller
juju add-relation nova-compute nova-cloud-controller

The Neutron Gateway can then be added to the deploying:

juju deploy neutron-gateway
juju add-relation neutron-gateway mysql
juju add-relation neutron-gateway rabbitmq-server
juju add-relation neutron-gateway nova-cloud-controller

The gateway provides two key services; L3 network routing and DHCP services.

These are both required in a fully functional Neutron OpenStack deployment.

See upstream Neutron multi extnet

Configuration Options

External Port Configuration

If the port to be used for external traffic is consistent across all physical servers then is can be specified by simply setting ext-port to the nic id:

neutron-gateway:
    ext-port: eth2

However, if it varies between hosts then the mac addresses of the external nics for each host can be passed as a space separated list:

neutron-gateway:
    ext-port: <MAC ext port host 1> <MAC ext port host 2> <MAC ext port host 3>

Multiple Floating Pools

If multiple floating pools are needed then an L3 agent (which corresponds to a neutron-gateway for the sake of this charm) is needed for each one. Each gateway needs to be deployed as a separate service so that the external network id can be set differently for each gateway e.g.

juju deploy neutron-gateway neutron-gateway-extnet1
juju add-relation neutron-gateway-extnet1 mysql
juju add-relation neutron-gateway-extnet1 rabbitmq-server
juju add-relation neutron-gateway-extnet1 nova-cloud-controller
juju deploy neutron-gateway neutron-gateway-extnet2
juju add-relation neutron-gateway-extnet2 mysql
juju add-relation neutron-gateway-extnet2 rabbitmq-server
juju add-relation neutron-gateway-extnet2 nova-cloud-controller

Create extnet1 and extnet2 via neutron client and take a note of their ids

juju set neutron-gateway-extnet1 "run-internal-router=leader"
juju set neutron-gateway-extnet2 "run-internal-router=none"
juju set neutron-gateway-extnet1 "external-network-id=<extnet1 id>"
juju set neutron-gateway-extnet2 "external-network-id=<extnet2 id>"

Instance MTU

When using Open vSwitch plugin with GRE tunnels default MTU of 1500 can cause packet fragmentation due to GRE overhead. One solution is to increase the MTU on physical hosts and network equipment. When this is not possible or practical the charm's instance-mtu option can be used to reduce instance MTU via DHCP.

juju set neutron-gateway instance-mtu=1400

OpenStack upstream documentation recommends a MTU value of 1400: OpenStack documentation

Note that this option was added in Havana and will be ignored in older releases.

Deploying from source

The minimum openstack-origin-git config required to deploy from source is:

openstack-origin-git: include-file://neutron-juno.yaml

neutron-juno.yaml
-----------------
repositories:
- {name: requirements,
   repository: 'git://github.com/openstack/requirements',
   branch: stable/juno}
- {name: neutron,
   repository: 'git://github.com/openstack/neutron',
   branch: stable/juno}

Note that there are only two 'name' values the charm knows about: 'requirements' and 'neutron'. These repositories must correspond to these 'name' values. Additionally, the requirements repository must be specified first and the neutron repository must be specified last. All other repositories are installed in the order in which they are specified.

The following is a full list of current tip repos (may not be up-to-date):

openstack-origin-git: include-file://neutron-master.yaml

neutron-master.yaml
-------------------
repositories:
- {name: requirements,
   repository: 'git://github.com/openstack/requirements',
   branch: master}
- {name: oslo-concurrency,
   repository: 'git://github.com/openstack/oslo.concurrency',
   branch: master}
- {name: oslo-config,
   repository: 'git://github.com/openstack/oslo.config',
   branch: master}
- {name: oslo-context,
   repository: 'git://github.com/openstack/oslo.context',
   branch: master}
- {name: oslo-db,
   repository: 'git://github.com/openstack/oslo.db',
   branch: master}
- {name: oslo-i18n,
   repository: 'git://github.com/openstack/oslo.i18n',
   branch: master}
- {name: oslo-messaging,
   repository: 'git://github.com/openstack/oslo.messaging',
   branch: master}
- {name: oslo-middleware,
   repository': 'git://github.com/openstack/oslo.middleware',
   branch: master}
- {name: oslo-rootwrap',
   repository: 'git://github.com/openstack/oslo.rootwrap',
   branch: master}
- {name: oslo-serialization,
   repository: 'git://github.com/openstack/oslo.serialization',
   branch: master}
- {name: oslo-utils,
   repository: 'git://github.com/openstack/oslo.utils',
   branch: master}
- {name: pbr,
   repository: 'git://github.com/openstack-dev/pbr',
   branch: master}
- {name: stevedore,
   repository: 'git://github.com/openstack/stevedore',
   branch: 'master'}
- {name: python-keystoneclient,
   repository: 'git://github.com/openstack/python-keystoneclient',
   branch: master}
- {name: python-neutronclient,
   repository: 'git://github.com/openstack/python-neutronclient',
   branch: master}
- {name: python-novaclient,
   repository': 'git://github.com/openstack/python-novaclient',
   branch: master}
- {name: keystonemiddleware,
   repository: 'git://github.com/openstack/keystonemiddleware',
   branch: master}
- {name: neutron-fwaas,
   repository': 'git://github.com/openstack/neutron-fwaas',
   branch: master}
- {name: neutron-lbaas,
   repository: 'git://github.com/openstack/neutron-lbaas',
   branch: master}
- {name: neutron-vpnaas,
   repository: 'git://github.com/openstack/neutron-vpnaas',
   branch: master}
- {name: neutron,
   repository: 'git://github.com/openstack/neutron',
   branch: master}

charm-neutron-gateway's People

Contributors

bilboer avatar cjohnston1158 avatar dosaboy avatar gabriel-samfira avatar ionutbalutoiu avatar javacruft avatar marcoceppi avatar roaksoax avatar shivrao avatar thedac avatar uoscibot avatar wolsen avatar zhhuabj avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.