このエントリーをはてなブックマークに追加

Virtual Network Service (Quantum)のインストール

Quantumのインストールを行います。インストールしなくてもOpenStackは利用可能です。
クラウド間連携、データセンター間での連携、もしくはAWSなどと連携する際には必要になるでしょう。
ウェブ、データベース、アプリなど用途別でネットワークを分離したりするのにも容易にすることが出きるようになります。

Quantumのインストール

プラグイン

$ sudo apt-get -y install quantum-server python-cliff python-pyparsing \
                          quantum-plugin-openvswitch quantum-plugin-openvswitch-agent \
                          quantum-l3-agent quantum-dhcp-agent

ブリッジインターフェースの追加

シングルNICの場合は一度通信が途切れるため注意して下さい。

$ sudo service openvswitch-switch restart
$ sudo ovs-vsctl add-br br-int
$ sudo ovs-vsctl add-br br-ex
$ sudo ovs-vsctl add-port br-ex eth0

$ sudo vi /etc/network/interfaces

#auto eth0
#iface eth0 inet static
#       address 192.168.10.50
#       netmask 255.255.255.0
#       network 192.168.10.0
#       broadcast 192.168.10.255
#       gateway 192.168.10.1
#       dns-nameservers 192.168.10.1

auto eth0
iface eth0 inet manual

auto br-ex
iface br-ex inet static
       address 192.168.10.50
       netmask 255.255.255.0
       network 192.168.10.0
       broadcast 192.168.10.255
       gateway 192.168.10.1
       dns-nameservers 192.168.10.1

$ sudo service networking restart

Quantumの設定

コンフィグを行う前にバックアップしておきます。

$ sudo cp -a  /etc/quantum /etc/quantum_bak

quantum.confの設定

認証にKeystonを利用するように設定します。
$ sudo vi /etc/quantum/quantum.conf

[DEFAULT]
verbose = True
debug = True
bind_host = 0.0.0.0
bind_port = 9696
core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
api_paste_config = /etc/quantum/api-paste.ini
auth_strategy = keystone
control_exchange = quantum
fake_rabbit = False
rabbit_host=stack01
rabbit_virtual_host=/nova
rabbit_userid=nova
rabbit_password=password
notification_driver = quantum.openstack.common.notifier.list_notifier
list_notifier_drivers = quantum.openstack.common.notifier.rabbit_notifier

[QUOTAS]

QuantumのOpen-vSwitchプラグインのコンフィグ

Open-vSwitchプラグインを利用するので設定します。
$ sudo vi /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini

[DATABASE]
sql_connection = mysql://quantum:password@stack01/quantum?charset=utf8
reconnect_interval = 2

[OVS]
network_vlan_ranges = default:1000:2999
integration_bridge = br-int
bridge_mappings = default:br-eth0

[AGENT]
polling_interval = 2
root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf

api-paste.iniの設定

認証にKeystonを利用するように設定します。
$ sudo vi /etc/quantum/api-paste.ini

[composite:quantum]
use = egg:Paste#urlmap
/: quantumversions
/v2.0: quantumapi_v2_0

[composite:quantumapi_v2_0]
use = call:quantum.auth:pipeline_factory
noauth = extensions quantumapiapp_v2_0
keystone = authtoken keystonecontext extensions quantumapiapp_v2_0

[filter:keystonecontext]
paste.filter_factory = quantum.auth:QuantumKeystoneContext.factory

[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
auth_host = 192.168.10.50
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = quantum
admin_password = password

[filter:extensions]
paste.filter_factory = quantum.extensions.extensions:plugin_aware_extension_middleware_factory

[app:quantumversions]
paste.app_factory = quantum.api.versions:Versions.factory

[app:quantumapiapp_v2_0]
paste.app_factory = quantum.api.v2.router:APIRouter.factory

L3エージェントのコンフィグ

認証にKeystonを利用するように設定します。
$ sudo vi /etc/quantum/l3_agent.ini

[DEFAULT]
debug = True
metadata_ip = 169.254.169.254

interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
auth_url = http://stack01:35357/v2.0
auth_region = RegionOne
admin_tenant_name = service
admin_user = quantum
admin_password = password

root_helper = sudo /usr/bin/quantum-rootwrap /etc/quantum/rootwrap.conf

Keystoneの設定

環境変数を読み込ませていない場合は読み込ませます。

$ CONTROLLER_HOST=stack01
$ export ADMIN_TOKEN=ADMIN
$ export OS_USERNAME=admin
$ export OS_PASSWORD=password
$ export OS_TENANT_NAME=admin
$ export OS_AUTH_URL=http://$CONTROLLER_HOST:5000/v2.0/
Quantum用のUser、Service、EndpointをKeystoneに追加します。
SERVICE_PASSWORD=password
SERVICE_HOST=stack01

function get_id () {
    echo `"$@" | awk '/ id / { print $4 }'`
}
ADMIN_ROLE=$(keystone role-list | grep " admin" | awk '{print $2}')
SERVICE_TENANT=$(keystone tenant-list | grep service | awk '{print $2}')

QUANTUM_USER=$(get_id keystone user-create --name=quantum \
                                          --pass="$SERVICE_PASSWORD" \
                                          --tenant_id $SERVICE_TENANT \
                                          --email=quantum@example.com)
keystone user-role-add --tenant_id $SERVICE_TENANT \
                       --user_id $QUANTUM_USER \
                       --role_id $ADMIN_ROLE
QUANTUM_SERVICE=$(get_id keystone service-create \
    --name=quantum \
    --type=network \
    --description="Quantum Service")
keystone endpoint-create \
    --region RegionOne \
    --service_id $QUANTUM_SERVICE \
    --publicurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s" \
    --adminurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s" \
    --internalurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s"

 keystone endpoint-create \
     --region RegionOne \
     --service_id $QUANTUM_SERVICE \
     --publicurl "http://$SERVICE_HOST:9696/" \
     --adminurl "http://$SERVICE_HOST:9696/" \
     --internalurl "http://$SERVICE_HOST:9696/"

データベースの作成

Quantumが利用するデータベースを作成します。
データベースの作成、設定だけで問題ありません。
同期はQuantum Server起動時に行われるため必要ありません。
データベース名quantum、ユーザ名quantum、パスワードはpasswordとしているため適切なものへ変更してください。
ホスト名も同様にstack01としていますので変更が必要であればおこなって下さい。
$ mysql -u root -pnova -e "drop database quantum;"
$ mysql -u root -pnova -e "create database quantum;"
$ mysql -u root -pnova -e "grant all privileges on quantum.* to 'quantum'@'%' identified by 'password';"
$ mysql -u root -pnova -e "grant all privileges on quantum.* to 'quantum'@'localhost' identified by 'password';"
$ mysql -u root -pnova -e "grant all privileges on quantum.* to 'quantum'@'stack01' identified by 'password';"

nova-networkの削除

Quantumを利用するのであればnova-networkは必要ありませんので削除します。

$ sudo apt-get remove nova-network -y

nova.confの設定

各プロセスの再起動

$ sudo service quantum-server restart
$ sudo service quantum-plugin-openvswitch-agent restart
$ sudo service quantum-l3-agent restart
$ sudo service quantum-dhcp-agent restart