OpenStack三個節點icehouse

1、環境準備

一、架構

建立3臺虛擬機,分別做爲controll節點、network節點和compute1節點。html

Controller節點:1processor,2G memory,5G storage。python

Network節點:1processor,2G memory,5G storage。mysql

Comute1節點:1processor,2G memory,5G storage。linux

架構圖:web

外部網絡:提供上網業務,外界登陸openstack(在上圖爲藍色模塊)sql

管理網絡:三節點通訊好比keystone,認證,rabbitmq消息隊列。(在上圖爲紅色模塊)數據庫

業務網絡:網絡節點和計算節點中虛擬機數據通訊,好比dhcp,L2,L3。(在上圖爲綠色模塊)apache

二、三個節點網卡配置

Controller節點:一張網卡,配置eth0爲管理網絡django

 View Code

配置/etc/hosts以下:ubuntu

 View Code

Network節點:三張網卡,配置eth0爲管理網絡,eth1爲業務網絡,eth2爲外部網絡,需特殊配置。

 View Code

配置/etc/hosts以下:

 View Code

Comput節點:兩張網卡,配置eth0爲管理網絡,配置eth1爲業務網絡。

 View Code

配置/etc/hosts以下:

 View Code

三、確認網絡已經配置好

Controller節點:

# ping -c 4 openstack.org【ping通外網】

# ping -c 4 network【ping通網絡節點的管理網絡】

# ping -c 4 compute1【ping通計算節點的管理網絡】

Network節點:

# ping -c 4 openstack.org【ping通外網】

# ping -c 4 controller【ping 通控制節點的管理網絡】

# ping -c 4 10.0.1.31【ping 通計算節點的tunnel網絡】

Compute節點:

# ping -c 4 openstack.org【ping外網通】

# ping -c 4 controller【ping 控制節點的管理網絡通】

# ping -c 4 10.0.1.21【ping 通網絡節點的tunnel網絡】

2、基礎環境配置

一、設置全局環境變量

爲了方便配置後續配置,先設置全局的環境變量。

controller節點設置:

 View Code

compute節點設置:

 View Code

二、更新系統

在三個節點都要執行下面操做。

第一步、安裝Ubuntu Cloud Archive

# apt-get install python-software-properties
# add-apt-repository cloud-archive:icehouse

Ubuntu Cloud Archive是一個特殊的庫容許你安裝Ubuntu支持的穩定的最新發布的OpenStack。

第二步、更新系統

# apt-get update
# apt-get dist-upgrade 【//lxy:須要十分鐘,耐心等待】

第三步,安裝Ubuntu 13.10 backported kernel

Ubuntu12.04須要安裝這個Linux kernel來提高系統的穩定性。

# apt-get install linux-image-generic-lts-saucy  

第四步,重啓系統生效

# reboot

三、安裝NTP(Network Time Protocal)

爲作到每一個節點的時間同步,須要在每一個節點都安裝ntp,而後修改配置,將/etc/ntp.conf添加controller爲時間源。

在controller節點:

第一步、安裝

# apt-get install ntp

第二步、配置/etc/ntp.conf

# Use Ubuntu's ntp server as a fallback.
server ntp.ubuntu.com
server 127.127.1.0 fudge 127.127.1.0 stratum 10

將ntp.ubuntu.com做爲時間源,此外添加一個本地時間源,以防網絡時間服務中斷,其中server 127.127.1.0表示本機是ntp服務器。

或者執行下面命令:

 View Code

第三步,重啓ntp服務。

#service ntp restart

在controller以外的節點,

第一步,安裝

# apt-get install ntp

第二步,配置/etc/ntp.conf,將controller做爲時間源。

# Use Ubuntu's ntp server as a fallback.
server controller

或者執行命令:

 View Code

第三步:重啓NTP服務。

四、安裝數據庫

每一個節點都要安裝python-mysqldb組件,用於數據庫鏈接,只有主控須要安裝mysqlserver。

controller節點:

第一步安裝:

# apt-get install python-mysqldb mysql-server

Note:安裝過程終端會提醒輸入mysql root帳戶的密碼,這裏設置爲password。

第二步,配置/etc/mysql/my.conf文件

將[mysqld]模塊中bind-address設置爲controller節點管理網絡的ip,確保其餘節點經過管理網絡獲取Mysql服務。也能夠設置爲0.0.0.0,就是將mysql服務綁定到全部網卡。

[mysqld]
...
bind-address = 10.1.101.11

在[mysqld]模塊bind-address後面增長以下配置,來設置UTF-8字符集和InnoDB。

 View Code

第三步,重啓mysql服務使設置生效

# service mysql restart

第四步,刪除匿名用戶

數據庫第一次啓動時會建立一些匿名用戶,必須將這些用戶刪除,不然後面數據庫鏈接會出錯。

# mysql_secure_installation

Note:

一、該命令提供一堆選擇給你來改善mysql數據庫的安全性,除了不要改密碼,其餘都選yes,除非有你本身的理由。

二、若是mysql_secure_installation命令失敗則執行

mysql_install_db

mysql_secure_installation

第五步,建立OpenStack中的Database,Users,Privileges

 View Code

在controller以外的節點安裝python-mysqldb

# apt-get install python-mysqldb

五、安裝消息代理RabbitMQ

第一步,安裝

# apt-get -y install rabbitmq-server

第二步,改密碼

RabbitMQ默認建立一個用戶,用戶名密碼都是guest,執行如下命令將guest用戶的密碼改成password

#rabbitmqctl change_password guest $RABBIT_PASSWORD

在用到RabbitMQ的openstack服務配置文件中都要修改rabbit_password。

3、安裝OpenStack服務

一、安裝keystone

在controller節點安裝OpenStack認證服務.

第一步、安裝keystone

# apt-get install keystone

第二步、配置/etc/keystone/keystone.conf

 View Code

更新keystone.conf中MySQL鏈接

默認使用的是connection = sqlite:////var/lib/keystone/keystone.db,而不是mysql。

[database]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone

或者執行命令

 View Code

第三步、刪除keystone.db

默認狀況,Ubuntu包建立了一個SQLite數據庫。刪除/var/lib/keystone/目錄下的keystone.db文件確保後面不會出錯。

# rm /var/lib/keystone/keystone.db

第四步、重啓keystone並同步數據庫

# service keystone restart
# keystone-manage db_sync

第五步、建立OpenStack中的users, tenants, services

首先建立Keystone數據導入腳本Ksdata.sh ,內容以下:

 View Code

運行腳本

#bash Ksdata.sh 

第六步,建立endpoints

首先建立腳本Ksendpoints.sh

 View Code

運行腳本

# bash Ksendpoints.sh 

第七步,驗證

如今keystone已經安裝完成,驗證身份認證服務安裝是否正確。

# keystone user-list
# keystone user-role-list --user admin --tenant admin

二、安裝OpenStack客戶端

安裝完後,能夠經過命令來調用OpenStack各個服務的api。

 View Code

三、安裝Glance(鏡像服務)

在controller節點安裝image服務

第一步、安裝glance。

# apt-get install glance

第二步、配置

由於glance包含兩類服務因此修改配置文件/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf

更新glance的認證配置。

默認:

[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%

修改成:

[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = password

或者用下面命令:

 View Code

修改兩個文件中[database]模塊數據庫鏈接,

默認爲:

#connection = <None>修改成:

connection = mysql://glance:password@controller/glance

或直接執行命令

 View Code

在[DEFAULT]中增長如下配置

[DEFAULT]
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS

設置flavor爲keystone

sed -i 's/#flavor=/flavor=keystone/g' /etc/glance/glance-api.conf /etc/glance/glance-registry.conf

第三步、刪除glance.sqlite

# rm /var/lib/glance/glance.sqlite

第四步、檢查配置

複製代碼
[keystone_authtoken]
#auth_host = 127.0.0.1
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = password
複製代碼

第五步、重啓glance相關服務並同步數據庫

#service glance-api restart
#service glance-registry restart
#glance-manage db_sync

第六步、下載鏡像測試glance服務

#wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
#wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img

添加cirros鏡像

#glance add name=cirros-0.3.2-x86_64 is_public=true container_format=bare \
       disk_format=qcow2 < cirros-0.3.2-x86_64-disk.img

查看鏡像

#glance index

四、安裝cinder(塊存儲)

塊存儲,cinder用做虛擬機存儲管理,管理卷,卷快照,卷類型。包括cinder-ap、cinder-volume、 cinder-scheduler daemon、 Messaging queue。在controller節點安裝cider。

第一步、安裝cinder組件

# apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget \
    open-iscsi iscsitarget-dkms python-cinderclient linux-headers-`uname -r`

第二步,修改iscsitarget配置文件並重啓服務

# sed -i 's/false/true/g' /etc/default/iscsitarget
# service iscsitarget start
# service open-iscsi start

第三步,配置cinder文件

默認爲:

[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper = tgtadm
volume_name_template = volume-%s
volume_group = cinder-volumes
verbose = True
auth_strategy = keystone
state_path = /var/lib/cinder
lock_path = /var/lock/cinder
volumes_dir = /var/lib/cinder/volumes

配置爲:

複製代碼
# cat >/etc/cinder/cinder.conf <<EOF
[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
sql_connection = mysql://cinder:$MYSQL_PASS@$MASTER:3306/cinder
iscsi_helper = ietadm
volume_group = cinder-volumes
rabbit_password= $RABBIT_PASSWORD
logdir=/var/log/cinder
verbose=true
auth_strategy = keystone
EOF
 
# sed -i -e " s/%SERVICE_TENANT_NAME%/service/g; \
     s/%SERVICE_USER%/cinder/g; s/%SERVICE_PASSWORD%/$SERVICE_PASSWORD/g; " \
     /etc/cinder/api-paste.ini
複製代碼

第四步、同步cinder數據庫,並重啓相關服務

# cinder-manage db sync
# service cinder-api restart
# service cinder-scheduler restart
# service cinder-volume restart 

五、安裝nova(計算服務)

controller節點:

第一步、安裝nova組件

# apt-get install nova-api nova-cert nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler python-novaclient

第二步、修改配置/etc/nova/nova.conf

 View Code

第三步、刪除nova.sqlite數據庫

# rm /var/lib/nova/nova.sqlite  

第四步、同步數據庫、重啓服務

複製代碼
# nova-manage db sync
# service nova-conductor restart
# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-novncproxy restart
複製代碼

第五步、檢查nova服務是否安裝成功(確保nova-cert、nova-consoleauth、nova-scheduler和nova-conductor均開啓)

# nova-manage service list

Compute節點:

第一步、安裝nova組件

# apt-get install nova-compute-kvm python-guestfs

第二步、make the current kernel readable for qemu and libguestfs

# dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)

第三步、Enable this override for all future kernel updates

複製代碼
cat > /etc/kernel/postinst.d/statoverride <<EOF
#!/bin/sh
version="\$1"
# passing the kernel version is required
[ -z "\${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-\${version}
EOF
 
#make the file executable
chmod +x /etc/kernel/postinst.d/statoverride
複製代碼

第四步、配置 /etc/nova/nova.conf

 View Code

第五步、刪除nova.sqlite數據庫

# rm /var/lib/nova/nova.sqlite

第六步、配置/etc/nova/nova-compute.conf,使用qemu而非kvm。

 View Code

第七步、重啓服務

# service nova-compute restart

第八步、檢查nova服務是否安裝成功(確保nova-cert、nova-consoleauth、nova-scheduler、nova-conductor和nova-compute均開啓)

# nova-manage service list

六、安裝neutron(網絡服務)

controller節點:

第一步、安裝neutron 組件

# apt-get install neutron-server neutron-plugin-ml2

第二步、配置/etc/neutron/neutron.conf

須要配置包括數據庫,認證,消息代理,拓撲改變通知和plugin。

數據庫鏈接

默認爲:onnection = sqlite:////var/lib/neutron/neutron.sqlite,用如下命令修改

sed -i '/connection = .*/{s|sqlite:///.*|mysql://'"neutron"':'"$MYSQL_PASS"'@'"$CONTROLLER_IP"'/neutron|g}' \
        /etc/neutron/neutron.conf

身份驗證

sed -i 's/# auth_strategy = keystone/auth_strategy = keystone/g' \
        /etc/neutron/neutron.conf
 
sed -i -e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/neutron/g; \
          s/%SERVICE_PASSWORD%/$SERVICE_PASSWORD/g; \
          s/auth_host = 127.0.0.1/auth_host = $CONTROLLER_IP/g" /etc/neutron/neutron.conf

配置消息代理

sed -i -e " s/# rpc_backend = neutron.openstack.common.rpc.impl_kombu/rpc_backend = neutron.openstack.common.rpc.impl_kombu/g; \
          s/# rabbit_host = localhost/rabbit_host = $CONTROLLER_IP/g; \
          s/# rabbit_password = guest/rabbit_password = $SERVICE_PASSWORD/g; \
          s/# rabbit_userid = guest/rabbit_userid = guest/g" \
          /etc/neutron/neutron.conf

配置網絡拓撲改變通知compute

複製代碼
service_id=`keystone tenant-get service | awk '$2~/^id/{print $4}'`
 
sed -i -e " s/# notify_nova_on_port_status_changes = True/notify_nova_on_port_status_changes = True/g; \
            s/# notify_nova_on_port_data_changes = True/notify_nova_on_port_data_changes = True/g; \
            s/# nova_url = http:\/\/127.0.0.1:8774\/v2/nova_url = http:\/\/$MASTER:8774\/v2/g; \
            s/# nova_admin_username =/nova_admin_username = nova/g; \
        s/# nova_admin_tenant_id =/nova_admin_tenant_id = $service_id/g; \
            s/# nova_admin_password =/nova_admin_password = $SERVICE_PASSWORD/g; \
        s/# nova_admin_auth_url =/nova_admin_auth_url = http:\/\/$MASTER:35357\/v2.0/g" \
            /etc/neutron/neutron.conf
其中,# keystone tenant-get service用來得到service租戶的id
複製代碼

配置ML2 plug-in

sed -i -e 's/core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin/core_plugin = ml2/g' /etc/neutron/neutron.conf
sed -i -e 's/# service_plugins =/service_plugins = router/g' /etc/neutron/neutron.conf
sed -i -e 's/# allow_overlapping_ips = False/allow_overlapping_ips = True/g' /etc/neutron/neutron.conf

第三步、配置/etc/neutron/plugins/ml2/ml2_conf.ini

ML2代理使用OVS代理來建立虛擬網絡架構。然而,controller節點不須要OVS代理或服務,由於controller節點不處理虛擬機網絡通訊。

在[ml2]模塊,[ml2_type_gre]模塊增長如下配置,並增長[securitygroup]新模塊的配置。

複製代碼
[ml2]
type_drivers = gre
tenant_network_types = gre
mechanism_drivers =openvswitch

[ml2_type_gre]
tunnel_id_ranges =1:1000

[securitygroup]
# Controls if neutron security group is enabled or not.
# It should be false when you use nova security group.
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True
複製代碼

第四步、配/etc/nova/nova.conf

默認狀況,虛擬機會使用legacy networking,因此必須配置。確認按照下面配置。

複製代碼
network_api_class = nova.network.neutronv2.api.API
neutron_url = http://10.1.101.11:9696
neutron_auth_strategy = keystone
neutron_admin_tenant_name = service
neutron_admin_username = neutron
neutron_admin_password = password
neutron_admin_auth_url = http://10.1.101.11:35357/v2.0
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
security_group_api = neutron
複製代碼

由於默認虛擬機使用內部防火牆服務,由於Networking有防火牆,因此須要要配置防火牆爲firewall_driver = nova.virt.firewall.NoopFirewallDriver

第五步、完成安裝

1. Restart the Compute services:
# service nova-api restart
# service nova-scheduler restart
# service nova-conductor restart
2. Restart the Networking service:
# service neutron-server restart

network節點:

第一步、在安裝OpenStack以前須要開啓一些核心的網絡服務,IP轉發。

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter=0" >> /etc/sysctl.conf
sysctl -p

第二步、安裝neutron組件

# apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent
openvswitch-datapath-dkms \
neutron-l3-agent neutron-dhcp-agent

Tip:

 View Code

第三步、配置/etc/neutron/neutron.conf

[DEFAULT]模塊和[keystone_authtoken]模塊

複製代碼
[DEFAULT]
...
auth_strategy = keystone
rpc_backend = neutron.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_password = RABBIT_PASS
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_host = controller
auth_protocol = http
auth_port = 35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
複製代碼

註釋掉[service_providers]全部行

第四步、配置L3agent /etc/neutron/l3_agent.ini

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True

debug = True

第五步、配置DHCP agent /etc/neutron/dhcp_agent.ini

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
debug = True

第六步、配置metadata agent  /etc/neutron/metadata_agent.ini

Metadate代理爲遠程訪問虛擬機受權提供配置信息

複製代碼
[DEFAULT]
...
auth_url = http://controller:5000/v2.0【必定要配置對】
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
複製代碼

下面兩步在controller節點完成

一、編輯/etc/nova/nova.conf在[DEFAULT]加上, METADATA_SECRET爲對應密碼,我改成password。

[DEFAULT]
...
service_neutron_metadata_proxy = true
neutron_metadata_proxy_shared_secret = METADATA_SECRET

二、在controller節點,重啓Compute API服務。

# service nova-api restart

第七步、配置ML2 plug-in網絡/etc/neutron/plugins/ml2/ml2_conf.ini

在[ml2]模塊增長

[ml2]
...
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch

在[ml2_type_gre]模塊增長

[ml2_type_gre]
...    
tunnel_id_ranges = 1:1000

新增[ovs]模塊並增長下面內容,其中INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS替換爲network節點虛擬機tunnels網絡的網卡ip地址。這裏爲10.0.1.21

[ovs]
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
tunnel_type = gre
enable_tunneling = True

新增[securitygroup]模塊並增長

[securitygroup]
...
firewall_driver = neutron.agent.linux.iptables_firewall.
OVSHybridIptablesFirewallDriver
enable_security_group = True

第八步,配置OVS服務

OVS提供底層虛擬機網絡架構。br-int處理虛擬機內部網絡通訊。br-ext處理虛擬機外部網絡通訊。br-ext須要一個port在物理外網網卡來爲虛擬機提供外部網絡通訊。這個port 橋接虛擬網絡和物理外網。

重啓OVS服務。

# service openvswitch-switch restart

添加集成網橋

 # ovs-vsctl add-br br-int

添加外部網橋

# ovs-vsctl add-br br-ex

添加外部網卡藉以通外網

INTERFACE_NAME  替換爲當前網卡的名字。好比eth2或者ens256.個人是eth2.

# ovs-vsctl add-port br-ex INTERFACE_NAME

而後要配置network節點的/etc/network/interface中的br-ex網卡,完整內容以下:

 View Code

重啓服務

/etc/init.d/networking restart

第九步、完成安裝

# service neutron-plugin-openvswitch-agent restart
# service neutron-l3-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart

compute節點:

第一步,開啓ip轉發

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter=0" >> /etc/sysctl.conf
sysctl -p

第二步、安裝neutron組件

# apt-get install neutron-common neutron-plugin-ml2 neutron-plugin-openvswitch-agent
超過3.11的Ubuntu內核版本都不須要安裝openvswitch-datapath-dkms,
由於個人Ubuntu版本是3.12因此不須要安裝openvswitch-datapath-dkms

第三步、配置/etc/neutron/neutron.conf

須要配置認證服務,消息代理和plugin

認證

[DEFAULT]
...
auth_strategy = keystone

在[keystone_authtoken]模塊增長下面內容,要修改NEUTRON_PASS爲對應密碼,個人是password

複製代碼
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_host = controller
auth_protocol = http
auth_port = 35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
複製代碼

消息代理,在[DEFAULT]模塊增長下面內容,注意要替換RABBIT_PASSRabbitMQ的密碼。

[DEFAULT]
...
rpc_backend = neutron.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_password = RABBIT_PASS

配置ML2,在[DEFAULT]模塊增長下面內容

[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
verbose = True

註釋掉[service_providers]模塊全部行

第四步、配置ML2 plug-in /etc/neutron/plugins/ml2/ml2_conf.ini

ML2 plug-in用OVS來創建虛擬機網絡。

在[ml2]模塊增長

[ml2]
...
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch

在[ml2_type_gre]模塊增長

[ml2_type_gre]
...
tunnel_id_ranges = 1:1000

增長[ovs]模塊,並增長下面內容,注意INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS要替換成compute節點虛擬機tunnels網卡的ip,這裏是10.0.1.31

[ovs]
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
tunnel_type = gre
enable_tunneling = True

增長[securitygroup]模塊,並添加下面內容。

[securitygroup]
...
firewall_driver = neutron.agent.linux.iptables_firewall.
OVSHybridIptablesFirewallDriver
enable_security_group = True

第五步、配置OVS服務

OVS提供底層的虛擬網絡框架。Br-int處理虛擬機內部網絡流量。

重啓OVS服務

# service openvswitch-switch restart

添加集成網橋

# ovs-vsctl add-br br-int

第六步、配置計算服務nova使用neutron /etc/nova/nova.conf

默認虛擬機會使用legacy networking。因此要進行配置使其使用Neutron。

在[DEFAULT]模塊增長下面內容:注意要修改NEUTRON_PASS爲真正的密碼,個人是password。

複製代碼
[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
neutron_url = http://controller:9696
neutron_auth_strategy = keystone
neutron_admin_tenant_name = service
neutron_admin_username = neutron
neutron_admin_password = NEUTRON_PASS
neutron_admin_auth_url = http://controller:35357/v2.0
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
security_group_api = neutron

  默認虛擬機會使用內部防火牆,這裏爲了讓它使用Neutron的防火牆,因此配置。nova.virt.firewall.NoopFirewallDriver

複製代碼

第七步、完成配置

重啓計算服務

# service nova-compute restart

重啓OVS代理

# service neutron-plugin-openvswitch-agent restart

七、安裝dashboard

 在controller節點安裝dashboard

第一步、安裝

# apt-get -y install apache2 libapache2-mod-wsgi openstack-dashboard memcached python-memcache

刪除openstack-dashboard-ubuntu-theme這個軟件包,由於它對一些功能有阻礙做用

# apt-get remove --purge openstack-dashboard-ubuntu-theme

第二步、配置/etc/openstack-dashboard/local_settings.py

修改['default']['LOCATION']中的CACHES來匹配/etc/memcached.conf的內容。

CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211'
}
}

修改OPENSTACK_HOST選項爲認證服務的機子。

OPENSTACK_HOST = "controller"

第三步、啓動apache web服務和memcached

# service apache2 restart
# service memcached restart

第四步、重啓keyston服務,並同步數據庫

# service keystone restart
# keystone-manage db_sync

如今基本配置都已經完成,可使用OpenStack了。

測試環境可參考用命令測試安裝好的OpenStack環境

以上爲我我的配置筆記,僅做參考,更詳細介紹請參考官方文檔。

八、增長一個compute節點

一、網卡配置

Comput2節點:兩張網卡,配置eth0爲管理網絡,配置eth1爲業務網絡。

 View Code

配置/etc/hosts以下:

 View Code

compute2網卡配置好之後,在controller、network和compute節點的/etc/hosts加上相應配置。

二、確認網絡配置正確

Compute節點:

# ping -c 4 openstack.org【ping外網通】

# ping -c 4 controller【ping 控制節點的管理網絡通】

# ping -c 4 10.0.1.21【ping 通網絡節點的tunnel網絡】

# ping -c 4 10.0.1.31【ping 通compute節點的tunnel網絡】

三、更新系統

#apt-get update
#apt-get install python-software-properties
#add-apt-repository cloud-archive:icehouse
#apt-get dist-upgrade【//lxy:須要十分鐘,耐心等待】
# apt-get install linux-image-generic-lts-saucy  
# reboot

四、改主機名

# hostname compute2
# echo "compute2" > /etc/hostname

五、設置IP轉發

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter=0" >> /etc/sysctl.conf
sysctl -p

六、裝NTP

# apt-get install -y ntp
# sed -i -e " s/server ntp.ubuntu.com/server controller/g" /etc/ntp.conf
# service ntp restart

七、設置環境變量

 View Code

八、裝nova-compute

複製代碼
# apt-get -y install nova-compute-kvm python-guestfs
# 選yes
# 爲使得當前kernel可讀對qemu和libguestfs
# dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
# 容許未來內核更新,寫個腳本 #cat > /etc/kernel/postinst.d/statoverride <<EOF #!/bin/sh version="\$1" # passing the kernel version is required [ -z "\${version}" ] && exit 0 dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-\${version} EOF # 讓腳本可執行
# chmod +x /etc/kernel/postinst.d/statoverride
複製代碼

配置nova.conf

 View Code

用qemu代替kvm

# sed -i 's/kvm/qemu/g' /etc/nova/nova-compute.conf
# service nova-compute restart

九、裝neutron

# apt-get install neutron-common neutron-plugin-ml2 neutron-plugin-openvswitch-agent \
openvswitch-datapath-dkms

更新配置neutron.conf

複製代碼
#更新數據庫鏈接
sed -i '/connection = .*/{s|sqlite:///.*|mysql://'"neutron"':'"$MYSQL_PASS"'@'"$CONTROLLER_IP"'/neutron|g}' \ /etc/neutron/neutron.conf
#使用身份驗證keystone
sed -i 's/# auth_strategy = keystone/auth_strategy = keystone/g' \
        /etc/neutron/neutron.conf
 
sed -i -e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/neutron/g; \
          s/%SERVICE_PASSWORD%/$SERVICE_PASSWORD/g; \
          s/auth_host = 127.0.0.1/auth_host = $CONTROLLER_IP/g" /etc/neutron/neutron.conf
#使用消息代理
sed -i -e " s/# rpc_backend = neutron.openstack.common.rpc.impl_kombu/rpc_backend = neutron.openstack.common.rpc.impl_kombu/g; \
          s/# rabbit_host = localhost/rabbit_host = $CONTROLLER_IP/g; \
          s/# rabbit_password = guest/rabbit_password = $SERVICE_PASSWORD/g; \
          s/# rabbit_userid = guest/rabbit_userid = guest/g" \
          /etc/neutron/neutron.conf
#配置使用ML2 plug-in
sed -i -e 's/core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin/core_plugin = ml2/g' /etc/neutron/neutron.conf
sed -i -e 's/# service_plugins =/service_plugins = router/g' /etc/neutron/neutron.conf
sed -i -e 's/# allow_overlapping_ips = False/allow_overlapping_ips = True/g' /etc/neutron/neutron.conf
複製代碼

十、配置ML plug-in

複製代碼
sed -i -e " s/# type_drivers = local,flat,vlan,gre,vxlan/type_drivers = gre/g; \
            s/# tenant_network_types = local/tenant_network_types = gre/g; \
            s/# mechanism_drivers =/mechanism_drivers = openvswitch/g; \
        s/# tunnel_id_ranges =/tunnel_id_ranges = 1:1000/g;
        s/# enable_security_group = True/enable_security_group = True/g" \
            /etc/neutron/plugins/ml2/ml2_conf.ini
 
cat << EOF >> /etc/neutron/plugins/ml2/ml2_conf.ini
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
EOF
 
cat << EOF >> /etc/neutron/plugins/ml2/ml2_conf.ini
[ovs]
local_ip = $LOCAL_IP
tunnel_type = gre
enable_tunneling = True
EOF
複製代碼

十一、配置OVS服務

# 重啓OVS服務# service openvswitch-switch restart# 重啓neutron服務# cd /etc/init.d/; for i in $( ls neutron-* ); do sudo service $i restart; done
相關文章
相關標籤/搜索