日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nova— 计算服务

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nova— 计算服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、nova介紹:

Nova 是 OpenStack 最核心的服務,負責維護和管理云環境的計算資源。OpenStack 作為 IaaS 的云操作系統,虛擬機生命周期管理也就是通過 Nova 來實現的。 用途與功能 : 1) 實例生命周期管理 2) 管理計算資源 3) 網絡和認證管理 4)REST 風格的 API 5) 異步的一致性通信 6)Hypervisor 透明:支持Xen,XenServer/XCP,KVM, UML, VMware vSphere and Hyper-V 在上圖中可以看到,Nova 處于 Openstak 架構的中心,其他組件都為 Nova 提供支持: Glance 為 VM 提供 image Cinder 和 Swift 分別為 VM 提供塊存儲和對象存儲 Neutron 為 VM 提供網絡連接。

二. Nova 架構

?

Nova 的架構比較復雜,包含很多組件。 這些組件以子服務(后臺 deamon 進程)的形式運行,可以分為以下幾類:

1.API

nova-api 是整個 Nova 組件的門戶,接收和響應客戶的 API 調用。所有對 Nova 的請求都首先由 nova-api 處理。nova-api 向外界暴露若干 HTTP REST API 接口 在 keystone 中我們可以查詢 nova-api 的 endponits。 客戶端就可以將請求發送到 endponits 指定的地址,向 nova-api 請求操作。 當然,作為最終用戶的我們不會直接發送 Rest AP I請求。 OpenStack CLI,Dashboard 和其他需要跟 Nova 交換的組件會使用這些 API。 Nova-api 對接收到的 HTTP API 請求會做如下處理: 1. 檢查客戶端傳入的參數是否合法有效 2. 調用 Nova 其他子服務的處理客戶端 HTTP 請求 3. 格式化 Nova 其他子服務返回的結果并返回給客戶端 nova-api 接收哪些請求? 簡單的說,只要是跟虛擬機生命周期相關的操作,nova-api 都可以響應。 大部分操作都可以在 Dashboard 上找到。打開Instance管理界面
除了提供 OpenStack 自己的API,nova-api 還支持 Amazon EC2 API。 也就是說,如果客戶以前使用 Amazon EC2,并且用 EC2 的 API 開發了些工具來管理虛機,那么如果現在要換成 OpenStack,這些工具可以無縫遷移到 OpenStack,因為 nova-api 兼容 EC2 API,無需做任何修改。

2.Compute Core

1.nova-scheduler:
虛機調度服務,負責決定在哪個計算節點上運行虛機。創建 Instance 時,用戶會提出資源需求,例如 CPU、內存、磁盤各需要多少。OpenStack 將這些需求定義在 flavor 中,用戶只需要指定用哪個 flavor 就可以了。 可用的 flavor 在 System->Flavors 中管理。 下面介紹 nova-scheduler 是如何實現調度的。在 /etc/nova/nova.conf 中,nova 通過 driver=filter_scheduler 這個參數來配置 nova-scheduler。 driver=filter_scheduler 1 1 driver=filter_scheduler Filter scheduler Filter scheduler 是 nova-scheduler 默認的調度器,調度過程分為兩步: 1. 通過過濾器(filter)選擇滿足條件的計算節點(運行 nova-compute) 2. 通過權重計算(weighting)選擇在最優(權重值最大)的計算節點上創建 Instance。 Nova 允許使用第三方 scheduler,配置 scheduler_driver 即可。 這又一次體現了OpenStack的開放性。Scheduler 可以使用多個 filter 依次進行過濾,過濾之后的節點再通過計算權重選出最適合的節點。
2.nova-compute:
nova-compute 是管理虛機的核心服務,在計算節點上運行。通過調用Hypervisor API實現節點上的 instance的生命周期管理。 OpenStack 對 instance 的操作,最后都是交給 nova-compute 來完成的。 nova-compute 與 Hypervisor 一起實現 OpenStack 對 instance 生命周期的管理。 通過Drive1r架構支持多種Hypervisor Hyp 前面大家已經看到 Nova 由很多子服務組成,我們也知道 OpenStack 是一個分布式系統,可以部署到若干節點上,那么接下來大家可能就會問:Nova 的這些服務在物理上應該如何部署呢? 對于 Nova,這些服務會部署在兩類節點上:計算節點和控制節點。 計算節點上安裝了 Hypervisor,上面運行虛擬機。 由此可知: 1. 只有 nova-compute 需要放在計算節點上。 2. 其他子服務則是放在控制節點上的。 下面我們可以看看實驗環境的具體部署情況。 通過在計算節點和控制節點上運行 ps -elf | grep nova 來查看運行的 nova 子服務 計算節點compute只運行了nova-compute子服務
來源:?http://learn.yunwei.edu/openstack-learn/nova.html ervisor是計算節點上跑的虛擬化管理程序,虛機管理最底層的程序。 不同虛擬化技術提供自己的 Hypervisor。 常用的 Hypervisor 有 KVM,Xen, VMWare 等。nova-compute 為這些 Hypervisor 定義了統一的接口,Hypervisor 只需要實現這些接口,就可以 Driver 的形式即插即用到 OpenStack 系統中。 下面是Nova Driver的架構示意圖:
3.nova—conductor
nova-compute 經常需要更新數據庫,比如更新和獲取虛機的狀態。 出于安全性和伸縮性的考慮,nova-compute 并不會直接訪問數據庫,而是將這個任務委托給 nova-conductor。

3.Console Interface

nova-console:?用戶可以通過多種方式訪問虛機的控制臺: nova-novncproxy: 基于 Web 瀏覽器的 VNC 訪問 nova-spicehtml5proxy: 基于 HTML5 瀏覽器的 SPICE 訪問 nova-xvpnvncproxy: 基于 Java 客戶端的 VNC 訪問 nova-consoleauth:?負責對訪問虛機控制臺請求提供 Token 認證 nova-cert:?提供 x509 證書支持

4.Database

Nova 會有一些數據需要存放到數據庫中,一般使用 MySQL。數據庫安裝在控制節點上。 Nova 使用命名為 “nova” 的數據庫。

5.Message Queue

在前面我們了解到 Nova 包含眾多的子服務,這些子服務之間需要相互協調和通信。為解耦各個子服務,Nova 通過 Message Queue 作為子服務的信息中轉站。 所以在架構圖上我們看到了子服務之間沒有直接的連線,是通過 Message Queue 聯系的。

三.Nova 組件如何協同工作

1.Nova 物理部署方案? ?

前面大家已經看到 Nova 由很多子服務組成,我們也知道 OpenStack 是一個分布式系統,可以部署到若干節點上,那么接下來大家可能就會問:Nova 的這些服務在物理上應該如何部署呢? 對于 Nova,這些服務會部署在兩類節點上:計算節點和控制節點。 計算節點上安裝了 Hypervisor,上面運行虛擬機。 由此可知: 1. 只有 nova-compute 需要放在計算節點上。 2. 其他子服務則是放在控制節點上的。 下面我們可以看看實驗環境的具體部署情況。 通過在計算節點和控制節點上運行 ps -elf | grep nova 來查看運行的 nova 子服務 計算節點compute只運行了nova-compute子服務 控制節點controller運行了若干nova-*子服務 RabbitMQ 和 MySQL 也是放在控制節點上的??赡芗毿牡耐瑢W已經發現我們的控制節點上也運行了 nova-compute。 這實際上也就意味著 devstack-controller 既是一個控制節點,同時也是一個計算節點,也可以在上面運行虛機 這也向我們展示了 OpenStack 這種分布式架構部署上的靈活性: 可以將所有服務都放在一臺物理機上,作為一個 All-in-One 的測試環境; 也可以將服務部署在多臺物理機上,獲得更好的性能和高可用。 另外,也可以用 nova service-list 查看 nova-* 子服務都分布在哪些節點上

2.從虛機創建流程看 nova-* 子服務如何協同工作

  • 客戶(可以是 OpenStack 最終用戶,也可以是其他程序)向 API(nova-api)發送請求:“幫我創建一個虛機”
  • API 對請求做一些必要處理后,向 Messaging(RabbitMQ)發送了一條消息:“讓 Scheduler 創建一個虛機”
  • Scheduler(nova-scheduler)從 Messaging 獲取到 API 發給它的消息,然后執行調度算法,從若干計算節點中選出節點 A
  • Scheduler 向 Messaging 發送了一條消息:“在計算節點 A 上創建這個虛機”
  • 計算節點 A 的 Compute(nova-compute)從 Messaging 中獲取到 Scheduler 發給它的消息,然后在本節點的 Hypervisor 上啟動虛機。
  • 在虛機創建的過程中,Compute 如果需要查詢或更新數據庫信息,會通過 Messaging 向 Conductor(nova-conductor)發送消息,Conductor 負責數據庫訪問。
  • 四.Nova的配置文件

    [DEFAULT] my_ip=172.16.254.63 use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver enabled_apis=osapi_compute,metadata transport_url = rabbit://openstack:admin@controller [api] auth_strategy = keystone [api_database] connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api [barbican] [cache] [cells] [cinder] os_region_name = RegionOne [cloudpipe] [conductor] [console] [consoleauth] [cors] [cors.subdomain] [crypto] [database] connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova [ephemeral_storage_encryption] [filter_scheduler] [glance] api_servers = http://controller:9292 [guestfs] [healthcheck] [hyperv] [image_file_url] [ironic] [key_manager] [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 [libvirt] virt_type=qemu [matchmaker_redis] [metrics] [mks] [neutron] url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron service_metadata_proxy = true metadata_proxy_shared_secret = METADATA_SECRET [notifications] [osapi_v21] [oslo_concurrency] lock_path=/var/lib/nova/tmp [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [pci] [placement] os_region_name = RegionOne auth_type = password auth_url = http://controller:35357/v3 project_name = service project_domain_name = Default username = placement password = placement user_domain_name = Default [quota] [rdp] [remote_debug] [scheduler] [serial_console] [service_user] [spice] [ssl] [trusted_computing] [upgrade_levels] [vendordata_dynamic_auth] [vmware] [vnc] enabled=true vncserver_listen=$my_ip vncserver_proxyclient_address=$my_ip novncproxy_base_url = http://172.16.254.63:6080/vnc_auto.html [workarounds] [wsgi] [xenserver] [xvp]

    五.Nova服務的搭建

    1.建立Nova數據庫 mysql -u root -p MariaDB [(none)]> CREATE DATABASE nova_api; # 建立nova_api庫 MariaDB [(none)]> CREATE DATABASE nova; #建立Nova數據庫 MariaDB [(none)]> CREATE DATABASE nova_cell0; # 建立安全認證的庫 #用Nova庫宣告權限 GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \IDENTIFIED BY 'NOVA_DBPASS';MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \IDENTIFIED BY 'NOVA_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \IDENTIFIED BY 'NOVA_DBPASS'; x 1 mysql -u root -p 2 MariaDB [(none)]> CREATE DATABASE nova_api; # 建立nova_api庫 3 MariaDB [(none)]> CREATE DATABASE nova; ? #建立Nova數據庫 4 MariaDB [(none)]> CREATE DATABASE nova_cell0; # 建立安全認證的庫 5 #用Nova庫宣告權限 6 GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ 7 IDENTIFIED BY 'NOVA_DBPASS'; 8 MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \ 9 ?IDENTIFIED BY 'NOVA_DBPASS'; 10 MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ 11 ?IDENTIFIED BY 'NOVA_DBPASS'; 12 MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \ 13 ?IDENTIFIED BY 'NOVA_DBPASS'; 14 15 MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \ 16 ?IDENTIFIED BY 'NOVA_DBPASS'; 17 MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \ 18 ?IDENTIFIED BY 'NOVA_DBPASS'; 2.宣告環境變量? source openrc 3. 創建Nova用戶 openstack user create --domain default --password-prompt nova

    4.添加管理員為Nova數據庫 openstack role add --project service --user nova admin 5.建立Nova的服務 openstack service create --name nova \--description "OpenStack Compute" compute 1 openstack service create --name nova \ 2 ?--description "OpenStack Compute" compute 檢查服務列表 openstack service list 6. 建立Nova的服務端點 openstack endpoint create --region RegionOne \ compute public http://controller:8774/v2.1 openstack endpoint create --region RegionOne \ compute internal http://controller:8774/v2.1 openstack endpoint create --region RegionOne \ compute admin http://controller:8774/v2.1 注意:controller 替換成本機的主機名 7.建立user為placement的普通用戶 openstack user create --domain default --password-prompt placement 8 把placement 也設為user 的管理員 openstack role add --project service --user placement admin? 9, 建立api 服務 openstack service create --name placement --description "Placement API" placement
    ? 10.宣告placement 的服務端點 openstack endpoint create --region RegionOne placement public http://controller:8778 openstack endpoint create --region RegionOne placement internal http://controller:8778 openstack endpoint create --region RegionOne placement admin http://controller:8778 11.安裝服務 yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler openstack-nova-placement-api 12 編輯/etc/nova/nova.conf 配置文件 建議 mv nova.conf nova.conf.bak 然后可以直接復制Nova的配置文件? vim noca.conf ?加入Nova的配置文件 (詳情四) 注意 my_ip 更改為自己的IP 末行模式:%s/controller/yun/g 其中一些內容的含義: use_neutron = ture? ?是否使用網絡 firewall_dirver? ?防火墻的驅動 enabled-apis? ?是否打開apis transport_url? ?rabbitmq的地址 [api] auth_strategy = keystone? ?驗證方式 [api_database]? nova_api的數據庫的地址 [cinder] 處在哪一個region(域),負責后端存儲的 [database] nova的數據庫的地址 [glance] api的地址 [keystone_authtoken] 認證的地址 memcached_servers緩存服務 auth_type = password驗證類型=密碼 project_domain_name = default 項目的名字 user_domain_name = default用戶所在的域 project_name = service 項目名稱 [libvirt] virt_type=qemu 后臺調用的虛擬化(使用kvm做的寫qemu,也可能用kvm) [neutron] service_metadata_proxy = true 是否開啟metadata源數據代理 metadata_proxy_shared_secret = METADATA_SECRET 數據代理驗證的密碼 [vnc] vncserver_listen=$my_ip? ?監聽的地址 vncserver_proxyclient_address=$my_ip? ?客戶端的監聽地址 novncproxy_base_url = http://192.168.124.128:6080/vnc_auto.html? ?提供的服務地址 編輯http服務的配置文件 vim /etc/httpd/conf.d/00-nova-placement-api.conf 添加 <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> 重啟http服務 systemctl restart httpd 同步nova數據庫 su -s /bin/sh -c "nova-manage api_db sync" nova 會彈出一些內容,是正常情況 su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova su -s /bin/sh -c "nova-manage db sync" nova 查看一下驗證的名字 nova-manage cell_v2 list_cells 啟動開機自啟 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 查看狀態 systemctl status openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
    如果狀態出現 則查看一下nova服務的運行情況 nova service-list 我們看到狀態是down,說明服務沒起來 查看日志 cd /var/log/nova/ vim nova-consoleauth.log 進去后看最后一條日志,發現ERROR和AMQPLAIN兩個關鍵詞 查看AMQ相關 rabbitmqctl list_users 發現rabbitmq里邊openstack用戶沒有了 重新添加用戶 rabbitmqctl add_user openstack admin rabbitmqctl set_permissions openstack ".*" ".*" ".*" rabbitmqctl set_user_tags openstack administrator 重啟服務 systemctl restart openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
    再查看一下狀態 nova service-list 如果沒有啟動失敗的情況則繼續下邊的步驟 安裝openstack-nova-compute服務 yum install openstack-nova-compute 安裝的時候會提示缺少y依賴 這時我們解壓家目錄的壓縮包openstack_app.tar.gz cd openstack-ocata cd openstack-compute-yilai/ 本地安裝 yum localinstall -y * 這時我們再安裝openstack-nova-compute服務 yum install openstack-nova-compute 配置計算節點的配置文件 因為本次配置,計算節點與控制節點在同一臺虛擬機上 所以將不同于控制節點的計算節點的內容添加到控制節點的配置文件即可 [libvirt] virt_type=qemu 要先打開libvirtd服務然后再啟動nova-conpute服務 systemctl enable libvirtd.service openstack-nova-compute.service systemctl start libvirtd.service openstack-nova-compute.service 計算節點只需要啟動這兩個服務 再查看一下服務列示 nova service-list 用openstack命令查看計算節點服務(與nova service-list作用相同) openstack compute service list 查看一下nova用的hypervisor的類型 openstack hypervisor list 可以看到類型是qemu,運行在192.168.124.128的節點上,狀態是開啟的 ? ? ? ? ? ? ? ? ?

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">



    來自為知筆記(Wiz)



    轉載于:https://www.cnblogs.com/18513387476-com/p/e64a5d92260442ffc81f841393a9ac77.html

    總結

    以上是生活随笔為你收集整理的nova— 计算服务的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。