openstack安裝(七)nova服務安裝控制節點安裝

(1)概述

明確1:'計算節點可以有多個',本次實驗環境就部署一臺

明確2:'每一個計算節點就是一臺kvm的物理宿主機'

(2)nova服務組件

nova-api 服務           --->'接收和響應'來自'外部用戶'的計算API請求-->類似公司的前臺,'外部API請求的入口'-->'然後'向內部的nova組件'小第'來幹活

nova-api-metadata 服務  --->'作用:查虛擬機的配置信息';接受'來自虛擬機'發送的'元數據請求'

nova-compute  服務      --->'核心:管理虛擬機的生命週期;支持多種虛擬化技術;通常用'kvm'控制虛擬機,其他基本不用' -->'核心'

支持多種虛擬化技術:'kvm,xen,vmware'

#######特點##########

一個持續工作的'守護進程',通過'Hypervior'的API來創建和銷燬虛擬機實例。例如:

    XenServer/XCP 的 XenAPI

    KVM 或 QEMU 的 libvirt

    VMware 的 VMwareAPI

基本原理:守護進程同意了來自隊列的動作請求,'轉換'爲一系列的系統命令如啓動一個KVM實例',然後到數據庫中'更新它的狀態'


################# 分割線

'問題':10個nova-compute的計算節點,現在nova-api接受一個請求,創建一個虛擬機,這個任務最終交給哪個nova-computer?涉及'分配問題'

nova-scheduler  調度服務 --->'拿到'一個來自隊列請求虛擬機實例,然後'決定'那臺計算服務器主機來運行它

說明:根據10個節點平時彙報的'剩餘CPU、磁盤、內存信息',挑出一個'最閒的'

'篩選規則是什麼?'

nova-computer'每隔一分鐘'上報自身'剩餘資源'情況-->nova-schedlue

################# 分割線

nova-conductor  模塊     --->專門'幫nova-compute服務'連接數據庫;相當於'中間層';nova-coputer不需要配置數據庫的連接信息,數據庫的信息只會配置'控制節點上'

'原因':早期直接用nova-compute連接數據庫;如果有100臺computer節點,'每臺都要配置'數據庫的地址和賬戶密碼,其中一臺如果'被黑了',刪除nova數據庫,所有數據'全部丟失'

'注意':不要將它部署在運行'nova-compute'服務的主機節點上'

################# 分割線

nova-cert  模塊         --->'爲了安全可以配置ssl證書';服務器守護進程向Nova Cert服務提供X509證書,私有云不需要啓用

################# 分割線

nova-network worker 守護進程  --->'從隊列中接受網絡任務,並且操作網絡';執行任務例如創建橋接的接口或者改變IPtables的規則;'已棄用'

備註:'早期是沒有neutron網絡服務的';把'功能保留(兼老版本容)';老版本可能沒有neturn

################# 分割線

nova-consoleauth 守護進程     --->'配合nova-novncproxy使用'

nova-novncproxy              --->'提供vnc的控制檯;不是任何人都能訪問;訪問者必須帶一個token才能訪問控制檯;nova-consoleauth提供token'

'功能':提供一個代理,用於訪問正在運行的實例,通過VNC協議,支持基於'客戶端'瀏覽器的novnc客戶端;'可以通過web界面操作虛擬機'

################# 分割線 --->'下面的不需要'

nova-spicehtml5proxy 守護進程
提供一個代理,用於訪問正在運行的實例,通過 'SPICE' 協議,支持基於瀏覽器的 HTML5 客戶端。

nova-xvpvncproxy 守護進程
提供一個代理,用於訪問正在運行的實例,通過 'VNC' 協議,支持OpenStack特定的'Java'客戶端

nova-cert 守護進程
X509 證書

(3)創庫授權

ysql -u root -p

'創'建 nova_api 和 nova 數據'庫'

CREATE DATABASE nova_api;
CREATE DATABASE nova;

對數據庫進行正確的'授權'

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

注意:記住'該密碼' --> 'NOVA_DBPASS'

獲得 admin 憑證來獲取只有管理員能執行的命令的訪問權限

. admin-openrc

#########################創建服務證書#########################

(1)創建nova用戶

openstack user create --domain default --password NOVA_PASS nova

'記住該密碼'

(2)給 nova 用戶添加 admin 角色

openstack role add --project service --user nova admin

(3)創建 nova 服務實體 

openstack service create --name nova \
  --description "OpenStack Compute" compute

 #########################創建 Compute 服務 API 端點#########################

openstack endpoint create --region RegionOne \
  compute public http://controller:8774/v2.1/%\(tenant_id\)s

############

openstack endpoint create --region RegionOne \
  compute internal http://controller:8774/v2.1/%\(tenant_id\)s

############

openstack endpoint create --region RegionOne \
  compute admin http://controller:8774/v2.1/%\(tenant_id\)s

'public' -->'internal' -->'admin'

 #########################安裝nova組件#########################

yum install openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler

'安裝軟件包'

 #########################編輯 etc/nova/nova.conf#########################

'啓用兩個api,就會監聽兩個api的地址'

enabled_apis = osapi_compute('8774'),metadata('8775')

'連接之前創建的兩個數據庫'

[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

'openstack支持多種消息隊列;並且是跨節點通信,需要用到消息隊列'

[DEFAULT]
...
rpc_backend = rabbit      --->指定使用的'消息隊列','由於跨節點通信,完成數據的一致性'

[oslo_messaging_rabbit]
...
rabbit_host = controller  --->'消息隊列安裝在哪'
rabbit_userid = openstack --->'消息隊列的賬戶和密碼'
rabbit_password = RABBIT_PASS

'連接keystone的配置;用到nova的賬戶和密碼'

[DEFAULT]
...
auth_strategy = keystone

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS

'控制節點的ip' -->可以以'變量'或者明文的形式

[DEFAULT]
...
my_ip = 10.0.0.11

'禁用nova自帶的網絡;使用neutron網絡';'禁用掉nova計算服務內置的防火牆服務'

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

'說明:nova.virt.firewall.NoopFirewallDriver-->是一個python包的路徑'

'python包的位置-->裏面的一個方法'(函數)';pass就是0的含義,功能禁用'

ls /lb64/python2.7/site-packages/nova/virt/firewall

#################

'vnc的連接地址;通過vnc的web界面進行連接'

[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

#################

'配置glance服務地址'

原因:nova在'創建虛擬機'的時候首先需要'下載鏡像模板','鏡像模板哪裏提供','知道glance api地址'

[glance]
...
api_servers = http://controller:9292

#################

'配置鎖路徑;一個任務沒有完成,就創建一個鎖文件,直到完成才把鎖文件刪除,在這期間不會重複執行用戶的指令'

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp

'舉例':創建虛擬機,在虛機沒有完全創建完之前,會產生一個鎖文件,一直到虛擬創建完成,這個鎖文件刪除,如果中間又收到同樣的任務,則'拒絕'


同步Computer數據庫

su -s /bin/sh -c "nova-manage api_db sync" nova

su -s /bin/sh -c "nova-manage db sync" nova

開機啓動

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

報錯解決

2020-05-05 22:20:50.519 22552 ERROR oslo_service.service AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism 'AMQPLAIN'. For details see the broker logfile.

'schedule和/var/log/nova/nova-consoleauth.log的日誌' -->rabbitmp的密碼問題

(4)查看computer服務的狀態

openstack computer service list

# 是否都'處於up狀態' -->3個,表示控制節點安裝ok

shell腳本的鎖文件

'實現邏輯':

  1)在shell腳本的'第一行','判斷鎖文件'是否存在,如果存在說明腳本正在執行;如果'重複執行就退出'

  2)一旦執行完,'鎖文件刪除'

  3)'避免腳本重複執行產生的問題;是一種規範'

(5)安裝和配置計算節點

安裝 -->配置 -->啓動 ('沒有數據庫的操作')

novncproxy_base_url = http://controller:6080/vnc_auto.html

含義:'控制節點開啓了一個6080端口',利用這個端口反向代理到'計算節點'-->通過vnc連接console'虛擬機控制檯'

鎖文件作用:'防止腳本或任務被重複執行'

判斷計算節點硬件是否支持虛擬化

egrep  '(vmx|svm)' /proc/cpuinfo

'Intel和AMD中的一種'

說明:如果這個命令返回了 one or greater 的值,那麼'你的計算節點支持硬件加速且不需要額外的配置'

注意:'計算節點不支持硬件加速策略'

######################

systemctl enable libvirtd.service openstack-nova-compute.service

systemctl start libvirtd.service openstack-nova-compute.service

注意:'如果其它服務正常,這個服務器啓動速度很快'

# 啓動不了的話'看日誌'

'5672-->定位到消息隊列;模擬了消息隊列關閉的情況'

'AMQP :高級消息隊列協議提示-->'消息隊列掛了'

 

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