openstack安裝部署之Nova

下面的安裝步驟承接上一篇博文
一、準備工作
1、啓用網絡接口的PROMISC功能
本示例將基於FlatDHCP網絡模型,因此其所有工作可以僅通過一個網絡接口完成。在所有的節點上,需要爲此接口開啓“promisc”標誌,這可通過如下命令實現。
這裏寫圖片描述
2、創建橋接接口br100
這裏寫圖片描述
這裏寫圖片描述
3、使用橋接管理工具查看橋接接口的信息
這裏寫圖片描述
4、啓動messagbus服務 ,有些功能需要依賴此服務
這裏寫圖片描述
二、安裝消息隊列服務
1、安裝rabbit所需軟件包並啓動服務

[root@controller ~]# yum -y install rabbitmq-server
[root@controller ~]# systemctl enable rabbitmq-server.service
[root@controller ~]# systemctl start rabbitmq-server.service

2、設置rabbit服務密碼
這裏寫圖片描述
三、安裝配置Nova
1、安裝nova

[root@controller ~]#  yum -y install openstack-nova-compute sysfsutils
[root@controller ~]# yum -y install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient 

2、爲nova創建數據庫及相關的用戶

MariaDB [(none)]> create database nova;
MariaDB [mysql]> grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
MariaDB [mysql]> grant all privileges on nova.* on 'nova'@'localhost' identified by 'nova';

也可以使用下面的命令初始化nova數據庫,同時創建其服務同名的用戶,併爲其指定密碼

# openstack-db --init --service nova --password nova

3、在keystone中註冊nova,加入到admin組、service服務

# keystone user-create --name nova --pass nova --email nova@DQ.com
# keystone user-role-add --user nova --tenant service --role admin

4、編輯配置文件/etc/nova/nova.conf,修改其內容如下所示:

[DEFAULT]
# AUTHENTICATION
auth_strategy=keystone
rpc_backend=rabbit
rabbit_host=controller
rabbit_userid=guest
rabbit_password=rabbit
my_ip=10.33.100.177
api_paste_config=/etc/nova/api-paste.ini
# DATABASE
sql_connection=mysql://nova:nova@controller/nova
#NETWORK
network_manager=nova.network.manager.FlatDHCPManager
force_dhcp_release=True
# Location of flagfiles for dhcpbridge (multi valued)
dhcpbridge_flagfile=/etc/nova/nova.conf
# Interface for public IP addresses (string value)
public_interface=eno16777736
# Location of nova-dhcpbridge (string value)
dhcpbridge=/usr/bin/nova-dhcpbridge
# Bridge for simple network instances (string value)
flat_network_bridge=br100
# FlatDhcp will bridge into this interface if set (string value)
flat_interface=eno16777736
# Firewall driver (defaults to hypervisor specific iptables driver)(string value)
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

[glance]
glance_api_servers=172.16.200.6:9292

[keystone_authtoken]
identity_uri=http://controller:35357
admin_user=nova
admin_password=nova
admin_tenant_name=service

說明:KVM虛擬化要求CPU支持svm或vmx,因此,這裏的Openstack所在的系統RHEL6.4必須直接運行於支持這兩種特性之一的CPU平臺上。如果整個過程是在虛擬機上進行測試的話,比如Openstack所安裝的系統RHEL6.4本身就運行於虛擬上,那麼,虛擬化技術只能使用qemu而不能使用KVM。此種情形下,需要執行如下步驟,在CentOS 7中啓動對qemu的支持。
安裝libguestfs-tools

[root@controller ~]# yum install libguestfs-tools

設定libvirt類型爲qemu

[root@controller ~]# openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_type qemu

爲qemu-kvm創建所需要鏈接

[root@controller ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qem

重啓libvirtd服務

[root@controller ~]# systemctl restart libvirtd.service 

5、添加認證方式和密碼到文件/etc/nova/api-paste.ini
這裏寫圖片描述
6、同步計算服務數據表

[root@controller ~]# nova-manage db sync

7、啓動服務
首先創建nova服務的鎖文件目錄,並將其權限賦予nova用戶。

# mkdir /var/lock/nova
# chown -R nova.nova /var/lock/nova/

而後啓動nova相關的服務,並將其設置爲開機自動啓動。
這裏寫圖片描述
查看服務啓動狀況
這裏寫圖片描述
檢驗服務啓動時是否有錯誤產生
這裏寫圖片描述
8、創建nova網絡
創建nova網絡要通過“nova-manager network create”命令進行,其可以接受許多選項,獲取使用幫助的方式如下所示:

[root@controller ~]# nova-manage network create --help

下面創建一個名爲“private”的網絡,橋接設備的名稱爲br100。
這裏寫圖片描述
查看創建的網絡
這裏寫圖片描述
9、在KeyStone中註冊Nova compute API
接下來需要將Nova Compute API在KeyStone中註冊,dashboard需要基於此與Nova交互。下面的部分要以keystone的管理員admin身份執行,如果當前未爲連接KeyStone設置環境變量,可以使用“source ~/.ksrcadmin.sh ”進行。
這裏寫圖片描述
至此nova配置完成,nova已經可以與keystone,glance聯繫,而且可以獲取各映像文件的相關信息了
這裏寫圖片描述
四、運行VM實例
1、安全組(security group)
Compute服務通過安全組(security group)控制通過哪些網絡協議(TCP,UDP,ICMP)、端口及IP地址允許對實例進行訪問。安全組是tenant級別的概念,每個tenant都有其自己的安全組,且都有一個默認的“default”組。在某VM實例啓動時,如果沒有爲其指定特定的安全組,其將使用默認的安全組。使用“nova secgroup-list”命令可以查看安全組。
這裏寫圖片描述
“nova secgroup-add-rule”可用於爲安全組定義訪問規則,如下面的命令就實現了允許所有IP地址通過TCP協議的22端口訪問關聯的VM實例。
這裏寫圖片描述
如果要允許對VM實例發起ping請求,還要開放其ICMP協議。不過,ICMP協議的相關規則需要指定ICMP報文類型(號碼)而非類似TCP或UDP協議的端口。如果要開放所有的報文類型,則使用“-1”這個號碼。例如,允許所有主機對VM實例發起任意類型的ICMP請求,則可以使用下面的命令來定義規則。
這裏寫圖片描述
2、SSH公鑰注入
只要對應的VM實例支持使用SSH服務,Compute服務可以注入SSH公鑰信息至此實例的某帳號中。“nova keypair-add”命令能夠生成一對密鑰(不保存至文件中),並將其公鑰添加至Compute服務;當然,也可以只用於將現有的某密鑰對兒的公鑰添加至Compute服務中。爲了使用上的方便,這裏先使用ssh-keygen命令生成一對密鑰文件,而後將其公鑰上傳至Compute服務中。

[root@controller ~]# ssh-keygen -t rsa -P ''
[root@controller ~]# nova keypair-add --pub-key .ssh/id_rsa.pub testkey

顯示添加的密鑰信息,並確保其與本地密鑰文件的Fingerprint信息完全匹配。
這裏寫圖片描述
3、確保Compute節點的每個服務都已正常運行
在啓動任何VM實例前,要確認Compute節點上的如下服務都已經正常運行。

  • libvirtd:所有的nova服務均依賴於此服務;
  • nova-api:用於響應請求以啓動VM實例,及提供VM實例的元數據信息等;
  • nova-compute:與hypervisor進行交互以管理VM實例;
  • nova-scheduler:響應用戶請求將用戶請求啓動的VM實例調度至某Compute節點運行;
  • nova-network:執行Openstack的網絡任務,如將IP地址分配給某VM實例,以及啓用安全組規則等;
# nova-manage service list

如果有某服務沒有啓動,在此處啓動其即可。
5、啓動一個實例
在啓動一個VM實例時,需要爲其指定一個flavor,即實例類型,用於指定此實例的規格,如內存大小、磁盤數量及空間大小、VCPU的個數等。“nova flavor-list”可以查看所有的flavor。
這裏寫圖片描述
“nova flavor-create”可用於創建一個新的flavor,其使用格式請自行獲取命令的使用幫助。

[root@controller ~]# nova help flavor-create
usage: nova flavor-create [--ephemeral <ephemeral>] [--swap <swap>]
                          [--rxtx-factor <factor>] [--is-public <is-public>]
                          <name> <id> <ram> <disk> <vcpus>

Create a new flavor

Positional arguments:
  <name>                   Name of the new flavor
  <id>                     Unique ID (integer or UUID) for the new flavor. If
                           specifying 'auto', a UUID will be generated as id
  <ram>                    Memory size in MB
  <disk>                   Disk size in GB
  <vcpus>                  Number of vcpus


[root@controller ~]# nova help flavor-delete
usage: nova flavor-delete <flavor>

Delete a specific flavor

Positional arguments:
  <flavor>  Name or ID of the flavor to delete

下面創建一個名爲“flavor.cirros”的flavor
這裏寫圖片描述
具備上述條件後,即可用nova boot命令來創建並啓動一個實例了。啓動實例依賴於可用的映像文件的ID,可以使用nova image-list獲取在前文演示中已經添加的兩個示例性映像文件的相關信息
這裏寫圖片描述
查看創建的VM實例vm1:顯示狀態錯誤
這裏寫圖片描述
刪除實例vm1,在nova boot命令前添加–debug選項,以診斷創建實例過程中的問題,目前還沒有找到解決辦法

[root@controller ~]# nova delete vm1
[root@controller ~]# nova --debug boot --flavor 6 --image  2901debc-7cbf-4108-b563-3929efe601be --key_name testkey --security_group default vm1

這裏寫圖片描述
如果實例啓動成功,可以基於nova控制檯連接至實例vm1:

# nova console-log vm1

另外,也可以通過ssh連接至VM實例cirros1,而且由於控制節點已經直接向cirrors中注入了ssh公鑰,連接至VM實例時不再需要提供密碼即可建立SSH會話。

# ssh -l cirros  10.33.100.177

五、安裝配置其它Compute節點
類似前面的Nova的安裝配置過程,首先要配置好網絡屬性,而後安裝Nova,併爲nova提供配置文件。其配置信息中,以下幾項要按需修改爲當前節點的IP地址。配置完成後,啓動相關的服務(openstack-nova-compute、openstack-nove-network和libvirtd)即可。
• my_ip
• vncserver_listen
• vncserver_proxyclient_address
需要注意的是,控制節點一般不應該運行VM實例,因此,當專用的Compute節點配置完成後,即可禁止控制節點上的服務。如下面的命令即禁用了控制節點node1.DQ.com上的nova-compute服務,這樣一來,在啓動VM實例時就不再會將其調度至控制節點。

# nova-manage service disable --host=node1.DQ.com --service=nova-compute
發佈了88 篇原創文章 · 獲贊 17 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章