OpenStack安裝與配置(上)

   

 OpenStack安裝與配置

一、引言

本章內容講解如何在3臺物理機上搭建最小化雲平臺,這3臺機器分爲稱爲Server1Server2Client1,之後的各章也是如此。Server1承載着NovaGlanceSwiftKeystoneHorizonOpenStackWeb UI)服務。Server2只用來運行實例管理的nova運算工作站。由於OpenStack組件採用分佈式結構,其中的任何一部分或幾個部分都可以安裝在任意服務器上。

Client1並不是安裝所必須的,在本例中,它僅用來製作打包鏡像,並使用它訪問HorizonWeb上管理OpenStack設施。於是就避免了使用服務器來完成鏡像打包等諸如此類的任務了,而且在製作桌面系統鏡像時如果包含視窗界面的話,我們也只能相應地使用有GUI的電腦來完成,故而最好還是別在服務器上玩火了吧。建議Client1支持虛擬化技術,以便在製作完鏡像打包時可以運行KVM

22414998_134155782614bA.png

    OpenStack安裝需要設定主機名、IP地址等,按你實際的環境進行配置。下表是譯者安裝的網絡參數清單:

22414998_1341558294QI5p.png

以下是教程中網絡設置參數,本教程均採用這些參數,但在實際安裝中請參照上表進行設置

22414998_13417358040Oso.png

二、Server1

    正如上表所示,Server1包含了所有的Nova服務:nova-computenova-apinova-volumenova-network以及GlanceSwiftKeystoneHorizon。這臺服務器上需要雙網卡。

(一)安裝底層OS

不必多想,請參照下述說明,記住相關參數,選擇64Ubuntu12.04版,進行安裝。

創建的第一個用戶命名爲“localadmin

eth0eth1設定IP及其相關參數

在安裝服務包中,僅選擇“Openssh-server”作爲預裝項

因爲Server1上也將安裝nova-volume軟件,而nova-volume需要一塊專用分區,所以在安裝Ubuntu Server時請選擇手動分區,並另行創建一塊合適大小的分區。從本章起,教程都將以/dev/sda6作爲這塊分區。你可以根據自己分區的實際情況進行修改。此外,請使用fdisk工具將該分區需要格式化爲LVM8e)格式,這一操作在安裝中或剛安裝完畢格式化均可。進一步,如果你還計劃在這臺服務器上再新建一個分區配給Swift的話,那麼就新建一塊分區並參照本章後文“安裝Swift”一節相關內容進行安裝。

12.04的UbuntuOS安裝完畢後,使用下列命令更新系統:

    sudo apt-get update

    sudo apt-get upgrade

安裝網橋工具bridge-utils

sudo apt-get install bridge-utils

(二)配置網絡

編輯/etc/network/interfaces文件,如下所示:

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

  address 10.10.10.2

  netmask 255.255.255.0

  broadcast 10.10.10.255

  gateway 10.10.10.1

  dns-nameservers 10.10.8.3

auto eth1

iface eth1 inet static

  address 192.168.3.1

  netmask 255.255.255.0

  network 192.168.3.0

  broadcast 192.168.3.255

隨後重新啓動網絡:

sudo /etc/init.d/networking restart

(三)NTP服務器

安裝NTP軟件包。這個時間服務器將爲所有節點提供支持。OpenStack所有組件的時間都必須同步,於是我們就在Server1上安裝NTP服務並且讓其他服務器或節點與之保持同步。

    sudo apt-get install ntp

譯者注:NTPNetwork Time Protocol),是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源(如石英鐘,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標準間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議***。[來源:百度百科]

打開文件/etc/ntp.conf增加以下三行內容,目的是讓本服務器時間與外部服務器時間同步。如果不能訪問外網,NTP服務器將使用本機硬件時鐘作爲第二選擇。

 server ntp.ubuntu.com

 server 127.127.1.0

 fudge 127.127.1.0 stratum 10

然後重啓NTP使配置生效:

sudo service ntp restart

請確保服務器IP地址可以被DNS解析。如果不能,則在/etc/hosts文件中手工加入。

(四)數據庫

我們有很多選擇:MySQLPostgreSQL或者SQLite等都能很好地對NovaGlance提供數據支持。究竟選哪個,自己定吧。本例中採用MySQL

MySQL

安裝mysql-serverpython-mysqldb包:

sudo apt-get install mysql-server python-mysqldb

mysql創建root密碼,在此使用“mygreatsecret”。隨後編輯mysql配置文件/etc/mysql/my.cnf,將綁定地址從127.0.0.1改爲0.0.0.0,如下所示:

bind-address = 0.0.0.0

重啓MySQL服務器讓其開始監聽所有端口:

sudo restart mysql

創建數據庫

我們將要爲novaglancekeystone創建很多東東,各種數據庫、表及用戶。話音未落,這就開始了:

創建名爲“nova”的數據庫:

sudo mysql -uroot -pmygreatsecret -e 'CREATE DATABASE nova;'

新建一個用戶,名爲“novadbadmin”:

sudo mysql -uroot -pmygreatsecret -e 'CREATE USER novadbadmin;'

授予novadbadmin用戶nova數據庫全部權限:

sudo mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%';"

novadbadmin同志創建密碼(譯者注:密碼是novasecret,後文類似之處不多言,請詳見命令):

sudo mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'novadbadmin'@'%' = PASSWORD('novasecret');"

Glance登場,還是重複剛纔的道道,首先創建一個名爲glance的數據庫:

sudo mysql -uroot -pmygreatsecret -e 'CREATE DATABASE glance;'

然後爲這個新建的數據庫添加一個用戶“glancedbadmin”:

sudo mysql -uroot -pmygreatsecret -e 'CREATE USER glancedbadmin;'

接着,光榮授予他本數據庫的全部權限:

sudo mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%';"

是的,最後一步,爲該用戶分配密碼:

sudo mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'%' = PASSWORD('glancesecret');"

很煩的,keystone出場了。剛纔的大循環,至此開始演繹第三遍:

sudo mysql -uroot -pmygreatsecret -e 'CREATE DATABASE keystone;'

sudo mysql -uroot -pmygreatsecret -e 'CREATE USER keystonedbadmin;'

sudo mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystonedbadmin'@'%';"

sudo mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'keystonedbadmin'@'%' = PASSWORD('keystonesecret')"

現在,MySQL部分的工作結束。

(五)Keystone

KeystoneOpenStack的認證服務。使用以下命令進行安裝:

sudo apt-get install keystone python-keystone python-keystoneclient

打開/etc/keystone/keystone.conf文件,將這一行:

admin_token = ADMIN

改爲:

admin_token = admin

(本教程中我們將一直使用admin作爲令牌)

本例中,我們使用MySQL來存儲keystone配置,則將 /etc/keystone/keystone.conf中的這句配置:

connection = sqlite:////var/lib/keystone/keystone.db

換成:

connection = mysql://keystonedbadmin:[email protected]/keystone

然後,重啓Keystone

sudo service keystone restart

接着,執行以下命令同步數據庫:

sudo keystone-manage db_sync

最後,有些環境變量是OpenStack運行所必須的:

export SERVICE_ENDPOINT="http://localhost:35357/v2.0"

export SERVICE_TOKEN=admin

當然爲了避免下次系統重啓後,還得將這些變量再次export,最穩妥的辦法就是將其寫入~/.bashrc中。

創建租間

使用以下命令創建兩個租間,adminservice

keystone tenant-create --name admin

keystone tenant-create --name service

創建用戶

執行以下命令,創建四個用戶adminnovaglanceswift

keystone user-create --name admin --pass admin --email [email protected] 

keystone user-create --name nova --pass nova   --email [email protected]

keystone user-create --name glance --pass glance   --email [email protected]

keystone user-create --name swift --pass swift   --email [email protected]

創建角色

使用命令創建兩個角色,adminMember譯者注:注意是大寫M):

keystone role-create --name admin

keystone role-create --name Member

查看租間、用戶和角色

剛纔建立的租間、用戶和角色可以通過如下命令進行查看:

租間列表:

keystone tenant-list

+----------------------------------+--------------------+---------+

|                id                |        name        | enabled |

+----------------------------------+--------------------+---------+

| 7f95ae9617cd496888bc412efdceabfd | admin              | True    |

| c7970080576646c6959ee35970cf3199 | service            | True    |

+----------------------------------+--------------------+---------+

用戶列表:

keystone user-list

+----------------------------------+---------+-------------------+--------+

|                id                | enabled |       email       |  name  |

+----------------------------------+---------+-------------------+--------+

| 1b986cca67e242f38cd6aa4bdec587ca | True    | [email protected]  | swift  |

| 518b51ea133c4facadae42c328d6b77b | True    | [email protected] | glance |

| b3de3aeec2544f0f90b9cbfe8b8b7acd | True    | [email protected]  | admin  |

| ce8cd56ca8824f5d845ba6ed015e9494 | True    | [email protected]   | nova   |

+----------------------------------+---------+-------------------+--------+

角色列表:

keystone role-list

+----------------------------------+----------------------+

|                id                |         name         |

+----------------------------------+----------------------+

| 2bbe305ad531434991d4281aaaebb700 | admin                |

| d983800dd6d54ee3a1b1eb9f2ae3291f | Member               |

+----------------------------------+----------------------+

請大家格外注意id列中的值,雖然很長,但隨後爲用戶綁定角色,繼而把用戶配入租間中時可全靠它們了。

爲特定租間中的用戶綁定角色

現在我們先爲剛剛創建的用戶綁定角色,通過如下命令格式可以將特定租間中的特定用戶增加角色(譯者注:僅是命令格式,隨後纔是真正執行的命令):

keystone user-role-add --user $USER_ID --role $ROLE_ID --tenant_id $TENANT_ID

其中id字段可以通過keystone user-listkeystone role-listkeystone tenant-list命令獲得。

下面開始爲“admin”租間中的“admin”用戶綁定“admin”角色:

keystone user-role-add --user b3de3aeec2544f0f90b9cbfe8b8b7acd --role 2bbe305ad531434991d4281aaaebb700 --tenant_id 7f95ae9617cd496888bc412efdceabfd

接着執行如下命令,爲“service”租間中的“nova”、“glance”、“swift”用戶綁定“admin”角色:

keystone user-role-add --user ce8cd56ca8824f5d845ba6ed015e9494 --role 2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199

keystone user-role-add --user 518b51ea133c4facadae42c328d6b77b --role 2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199

keystone user-role-add --user 1b986cca67e242f38cd6aa4bdec587ca --role 2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199

HorizonSwift只“Member”角色即可,所以相應地執行如下命令:

keystone user-role-add --user b3de3aeec2544f0f90b9cbfe8b8b7acd --role d983800dd6d54ee3a1b1eb9f2ae3291f --tenant_id 7f95ae9617cd496888bc412efdceabfd

注意,在執行自己的安裝時,請千萬按照實際安裝中的id進行設置,照抄本文id必將出錯!

創建服務

至此,我們該創建授權用戶可以享用的服務了,命令格式如下:

keystone service-create --name service_name --type service_type --description 'Description of the service'

安裝上述格式,創建nova-computenova-volumeglanceswiftkeystoneec2服務:

keystone service-create --name nova --type compute --description 'OpenStack Compute Service'

keystone service-create --name volume --type volume --description 'OpenStack Volume Service'

keystone service-create --name glance --type image --description 'OpenStack Image Service'

keystone service-create --name swift --type object-store --description 'OpenStack Storage Service'

keystone service-create --name keystone --type identity --description 'OpenStack Identity Service'

keystone service-create --name ec2 --type ec2 --description 'EC2 Service'

剛纔創建的每個服務都擁有唯一的id,要查看服務id,使用如下命令即可:

keystone service-list

+----------------------------------+----------+--------------+----------------------------+

|                id                |   name   |     type     |      description         |

+----------------------------------+----------+--------------+----------------------------+

| 1e93ee6c70f8468c88a5cb1b106753f3 | nova     | compute      | OpenStack Compute Service  |

| 28fd92ffe3824004996a3e04e059d875 | ec2      | ec2          | EC2 Service                |

| 7d4ec192dfa1456996f0f4c47415c7a7 | keystone | identity     | OpenStack Identity Service |

| 96f35e1112b143e59d5cd5d0e6a8b22d | swift    | object-store | OpenStack Storage Service  |

| f38f4564ff7b4e43a52b2f5c1b75e5fa | volume   | volume       | OpenStack Volume Service   |

| fbafab6edcab467bb734380ce6be3561 | glance   | image        | OpenStack Image Service    |

+----------------------------------+----------+--------------+----------------------------+

這些id將被用於定義所屬服務的入口(endpoint)。

創建入口

創建服務入口的命令格式是:

keystone endpoint-create --region region_name --service_id service_id --publicurl public_url --adminurl admin_url  --internalurl internal_url

使用如下命令創建nova-compute入口:

keystone endpoint-create --region myregion --service_id 1e93ee6c70f8468c88a5cb1b106753f3 --publicurl 'http://10.10.10.2:8774/v2/$(tenant_id)s' --adminurl 'http://10.10.10.2:8774/v2/$(tenant_id)s' --internalurl 'http://10.10.10.2:8774/v2/$(tenant_id)s'

使用如下命令創建nova-volume入口:

keystone endpoint-create --region myregion --service_id f38f4564ff7b4e43a52b2f5c1b75e5fa --publicurl 'http://10.10.10.2:8776/v1/$(tenant_id)s' --adminurl 'http://10.10.10.2:8776/v1/$(tenant_id)s' --internalurl 'http://10.10.10.2:8776/v1/$(tenant_id)s'

使用如下命令創建glance入口:

keystone endpoint-create --region myregion --service_id fbafab6edcab467bb734380ce6be3561 --publicurl 'http://10.10.10.2:9292/v1' --adminurl 'http://10.10.10.2:9292/v1' --internalurl 'http://10.10.10.2:9292/v1'

使用如下命令創建swift入口:

keystone endpoint-create --region myregion --service_id 96f35e1112b143e59d5cd5d0e6a8b22d --publicurl 'http://10.10.10.2:8080/v1/AUTH_$(tenant_id)s' --adminurl 'http://10.10.10.2:8080/v1' --internalurl 'http://10.10.10.2:8080/v1/AUTH_$(tenant_id)s'

使用如下命令創建keystone入口:

keystone endpoint-create --region myregion --service_id 7d4ec192dfa1456996f0f4c47415c7a7 --publicurl http://10.10.10.2:5000/v2.0 --adminurl http://10.10.10.2:35357/v2.0 --internalurl http://10.10.10.2:5000/v2.0

使用如下命令創建ec2入口:

keystone endpoint-create --region myregion --service_id 28fd92ffe3824004996a3e04e059d875 --publicurl http://10.10.10.2:8773/services/Cloud --adminurl http://10.10.10.2:8773/services/Admin --internalurl http://10.10.10.2:8773/services/Cloud

(六)Glance

使用以下命令安裝glance

sudo apt-get install glance glance-api glance-client glance-common glance-

registry python-glance

配置Glance服務

Glance默認使用SQLiteMySQLPostgreSQL也可以很好地與Glance工作。

打開 /etc/glance/glance-api-paste.ini文件並在末尾編輯如下內容:

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

這些值需要用剛纔我們安裝中的實際值進行替換,admin_tenant_name應該是“service”,admin_user這裏是“glance”、admin_password是“glance”。

編輯完這三行應該是如下的樣子:

admin_tenant_name = service

admin_user = glance

admin_password = glance

接着再打開 /etc/glance/glance-registry-paste.ini文件,也如上述操作一樣在文件尾部進行同樣的編輯。

然後,修改glance數據庫連接爲MySQL,編輯 /etc/glance/glance-registry.conf,找到“sql_connection =”這句作如下修改:

sql_connection = mysql://glancedbadmin:[email protected]/glance

緊接着還是這份文件,在底部增加如下設置,目的是讓glance使用keystone授權:

[paste_deploy]

flavor = keystone

打開 /etc/glance/glance-api.conf文件,在文件末尾增加如下配置:

[paste_deploy]

flavor = keystone

MySQL數據庫中創建glance schema,進行同步:

sudo glance-manage version_control 0

sudo glance-manage db_sync

上述改動全部完成後,重啓glance-apiglance-registry服務:

sudo restart glance-api

sudo restart glance-registry

設置如下環境變量,你也可以將其寫入 ~/.bashrc中:

export SERVICE_TOKEN=admin

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL="http://localhost:5000/v2.0/"

export SERVICE_ENDPOINT=http://localhost:35357/v2.0

現在我們可以使用這個命令來測試glance是否正確安裝:

glance index

如果這條命令沒有返回任何結果,則說明glance已經正確安裝完畢,並與Keystone正常通信。若是稍微探究一下的話,上述命令其實有返回值,正確安裝情況下的返回值是0,可以使用echo $?進行查看。

Glance正確配置且使用keystone作爲授權機制後,我們便可以上傳鏡像到glance了,相關內容詳見後文中的“鏡像管理(Image Management)”。

(七)Nova

先使用如下命令安裝nova及其相關組件:

sudo apt-get install nova-api nova-cert nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler nova-volume rabbitmq-server novnc nova-consoleauth

配置Nova

以如下配置爲例,編輯nova主配文件 /etc/nova/nova.conf

--dhcpbridge_flagfile=/etc/nova/nova.conf

--dhcpbridge=/usr/bin/nova-dhcpbridge

--logdir=/var/log/nova

--state_path=/var/lib/nova

--lock_path=/run/lock/nova

--allow_admin_api=true

--use_deprecated_auth=false

--auth_strategy=keystone

--scheduler_driver=nova.scheduler.simple.SimpleScheduler

--s3_host=10.10.10.2

--ec2_host=10.10.10.2

--rabbit_host=10.10.10.2

--cc_host=10.10.10.2

--nova_url=http://10.10.10.2:8774/v1.1/

--routing_source_ip=10.10.10.2

--glance_api_servers=10.10.10.2:9292

--image_service=nova.image.glance.GlanceImageService

--iscsi_ip_prefix=192.168.4

--sql_connection=mysql://novadbadmin:[email protected]/nova

--ec2_url=http://10.10.10.2:8773/services/Cloud

--keystone_ec2_url=http://10.10.10.2:5000/v2.0/ec2tokens

--api_paste_config=/etc/nova/api-paste.ini

--libvirt_type=kvm

--libvirt_use_virtio_for_bridges=true

--start_guests_on_host_boot=true

--resume_guests_state_on_host_boot=true

# vnc specific configuration

--novnc_enabled=true

--novncproxy_base_url=http://10.10.10.2:60

--vncserver_proxyclient_address=10.10.10.2

--vncserver_listen=10.10.10.2

# network specific settings

--network_manager=nova.network.manager.FlatDHCPManager

--public_interface=eth0

--flat_interface=eth1

--flat_network_bridge=br100

--fixed_range=192.168.4.1/27

--floating_range=10.10.10.2/27

--network_size=32

--flat_network_dhcp_start=192.168.4.33

--flat_injected=False

--force_dhcp_release

--iscsi_helper=tgtadm

--connection_type=libvirt

--root_helper=sudo nova-rootwrap

--verbose

創建一個物理卷:

sudo pvcreate /dev/sda6

創建一個名爲“nova-volumnes”的卷組:

sudo vgcreate nova-volumes /dev/sda6

修改 /etc/nova文件夾的屬主及 /etc/nova/nova.conf文件的訪問權限:

sudo chown -R nova:nova /etc/nova

sudo chmod 644 /etc/nova/nova.conf

進入 /etc/nova/api-paste.ini文件,找到末尾三行:

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

用之前創建的名字進行替換(譯者注:和Glance如出一轍,只是這次是nova),編輯完畢如下所示:

admin_tenant_name = service

admin_user = nova

admin_password = nova

仍然在MySQL數據庫進行同步:

sudo nova-manage db sync

爲實例提供IP池:

sudo nova-manage network create private --fixed_range_v4=192.168.4.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32 

輸出環境變量:

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL="http://localhost:5000/v2.0/"

重啓nova服務:

sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart nova-consoleauth;

執行下列命令測試nova是否正確安裝:

sudo nova-manage service list

Binary           Host          Zone         Status     State    Updated_At

nova-network     server1       nova         enabled    :-)   2012-04-20 08:58:43

nova-scheduler   server1       nova         enabled    :-)   2012-04-20 08:58:44

nova-volume      server1       nova         enabled    :-)   2012-04-20 08:58:44

nova-compute     server1       nova         enabled    :-)   2012-04-20 08:58:45

nova-cert        server1       nova         enabled    :-)   2012-04-20 08:58:43

若所有組件都是微笑,說明nova已經正確安裝完畢。

   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章