介紹
Nova是openstack最早的兩塊模塊之一,另一個是對象存儲swift。在openstack體系中一個叫做計算節點,一個叫做控制節點。這個主要和nova相關,我們把安裝為計算節點nova-compute,把除了nova-compute叫做控制節點。nova-compute是創建虛擬機的,只是創建虛擬機,所有的控制都在另一台上。
nova組件(服務)
- API:負責接受和響應外部請求。支持OpenStack API,EC2 API
- Cert:負責身份認證EC2
- Scheduler:用於雲主機調度
- Conductor:計算節點訪問數據的中間件
- Consoleauth:用於控制台的授權驗證
- Novncproxy:VNC代理
提示:EC2是亞馬遜彈性計算雲
Nova API
- nova-api組件實現了RESTful API功能,是外部訪問Nova的唯一途徑。
- 接收外部的請求並通過Messages Queue將請求發送給其他的服務組件,同時也兼容EC2 API,所以也可以用EC2的管理工具對nova進行日常管理。
Nova scheduler
Nova scheduler模塊在openstack中的作用就是決策虛擬機創建在那個主機(計算節點)上。
決策一個虛擬機應該調度到那個物理節點,需要分兩個步驟:
- 過濾(Filter)
- 計算權值(Weight)
Q:實際操作中可能會出現找不到有效的主機?實際上是有資源的,為什么?
因為在openstack中nova scheduler認為沒有資源創建虛擬機,即使你有100G內存,如果nova scheduler認為你沒有資格,就無法進行創建虛擬機。這個時候可能是某一個節點故障,如網絡或者其它。
Q:如果決策虛擬機創建在那個主機?
1、Filter Scheduler首先得到未經過濾的主機列表,然后根據過濾屬性,選擇符合條件的計算節點主機。
2、計算權重,經過主機過濾后,需要對主機進行權值的計算,根據策略選擇相應的某一台主機(對於每一個要創建的虛擬機而言)。
Nova 控制節點部署
1、安裝軟件包
yum install -y openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler
2、數據庫配置
- 修改配置文件/etc/nova/nova.conf
[root@linux-node1 ~]# vim /etc/nova/nova.conf [database] connection=mysql+pymysql://nova:nova@192.168.137.11/nova [api_database] connection=mysql+pymysql://nova:nova@192.168.137.11/nova_api
- 同步數據庫
su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage db sync" nova
提示:有警告可以忽略
- 檢查是否有表結構
mysql -h 192.168.137.11 -unova -pnova -e "use nova;show tables;" mysql -h 192.168.137.11 -unova -pnova -e "use nova_api;show tables;"
3、配置keystone
[root@linux-node1 ~]# vim /etc/nova/nova.conf [keystone_authtoken] auth_uri = http://192.168.137.11:5000 auth_url = http://192.168.137.11:35357 memcached_servers = 192.168.137.11:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = nova [DEFAULT] auth_strategy=keystone
4、RabbitMq(消息隊列配置)
[root@linux-node1 ~]# vim /etc/nova/nova.conf rpc_backend=rabbit rabbit_host=192.168.137.11 rabbit_port=5672 rabbit_userid=openstack rabbit_password=openstack
5、配置nova自己的一些功能
- 設置啟用的元數據API
[DEFAULT] enabled_apis=osapi_compute,metadata
- 啟動網絡服務支持和關閉防火牆
[DEFAULT] use_neutron=true firewall_driver=nova.virt.firewall.NoopFirewallDriver
- 配置VNC代理使用控制節點的管理接口IP地址
[vnc] vncserver_listen=192.168.137.11 vncserver_proxyclient_address=192.168.137.11
- 配置鏡像服務 API 的位置
[glance] api_servers=http://192.168.137.11:9292
- 配置鎖路徑
[oslo_concurrency] lock_path = /var/lib/nova/tmp
6、設置開機啟動,並啟動服務
systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
7、keystone上注冊nova服務
- 創建nova服務
source /root/admin-openstack.sh openstack service create --name nova --description "Openstack Compute " compute
- 創建Compute服務api端點(公有、私有、admin)
openstack endpoint create --region RegionOne \ compute public http://192.168.137.11:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne \ compute internal http://192.168.137.11:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne \ compute admin http://192.168.137.11:8774/v2.1/%\(tenant_id\)s
8、檢查控制節點是否成功
openstack host list