[ Openstack ] Openstack-Mitaka 高可用之 計算服務(Nova)


 目錄

    Openstack-Mitaka 高可用之 概述
    Openstack-Mitaka 高可用之 環境初始化
    Openstack-Mitaka 高可用之 Mariadb-Galera集群部署
    Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署
    Openstack-Mitaka 高可用之 memcache
    Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群
    Openstack-Mitaka 高可用之 認證服務(keystone)
    OpenStack-Mitaka 高可用之 鏡像服務(glance)
    Openstack-Mitaka 高可用之 計算服務(Nova)
    Openstack-Mitaka 高可用之 網絡服務(Neutron)
    Openstack-Mitaka 高可用之 Dashboard
    Openstack-Mitaka 高可用之 啟動一個實例
    Openstack-Mitaka 高可用之 測試

 

 簡介

  使用Openstack計算服務來托管和管理雲計算系統。Openstack計算服務是基礎設施即服務(IaaS)系統的主要部分,模塊主要由python實現。

  Openstack計算組件請求Openstack Identitiy服務進行認證;請求Openstack Image服務提供磁盤鏡像;為Openstack dashboard提供用戶和管理員接口。磁盤鏡像訪問限制在項目與用戶上;配額以每個項目進行設定。Openstack組件可以在標准硬件上水平大規模擴展,並且下載磁盤鏡像啟動虛擬機實例。


    Openstack計算服務由下列組件所構成:
    (1) nova-api 服務:
        接收和響應來自最終用戶的計算API請求。此服務支持Openstack計算服務API,例如啟動一個實例。
    (2)nova-api-metadata 服務
        接受來自虛擬機發送的元數據請求。
    (3)nova-compute 服務
        一個持續工作的守護進程,通過Hypervior的API來創建和銷毀虛擬機實例,例如:
            XenServer 的 XenAPI
            KVM或QEMU的libvirt
            過程是蠻復雜的。最為基本的,守護進程同意了來自隊列的動作請求,轉換為一系列的系統命令如啟動一個KVM實例,然后到數據庫中更新它的狀態。
    (4)nova-scheduler 服務
        拿到一個來自隊列請求虛擬機實例,然后決定那台物理計算節點來運行它。簡單的說,該服務通過算法來決定在哪個計算節點來啟動虛擬機。
    (5)nova-cert 模塊
        Nova-network worker守護進程
            從隊列中接受網絡任務,並操作網絡。執行任務。例如創建網橋的接口或者改變iptables的規則。該功能應該被網絡服務neutron取代。
        Nova-consoleauth 守護進程
            授權控制台代理所提供的用戶令牌。
        Nova-novncproxy 守護進程
            提供一個代理,用於訪問正在運行的實例,通過VNC協議,支持基於瀏覽器的novnc客戶端。
        隊列
            一個守護進程間傳遞消息的組件。前面部署的rabbitmq-server
        SQL數據庫
            存儲構建時和運行時的狀態,為雲基礎設施,包括有:
                可用實例類型
                使用中的實例
                可用網絡
                項目
            理論上,OpenStack計算可以支持任何和SQL-Alchemy所支持的后端數據庫,通常使用SQLite3來做測試可開發工作,MySQL和PostgreSQL 作生產環境。

 

 安裝並配置控制節點

在安裝和配置compute服務前,必須創建數據庫服務的憑據以及API endpoints

[root@controller1 ~]# mysql -ugalera -pgalera -h 192.168.0.10
MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'%' identified by 'nova';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'localhost' identified by 'nova';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'localhost' identified by 'nova';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

創建nova用戶

[root@controller1 ~]# . admin-openrc
[root@controller1 ~]# openstack user create --domain default   --password-prompt nova    #密碼為 nova
[root@controller1 ~]# openstack role add --project service --user nova admin

創建nova服務實體

[root@controller1 ~]# openstack service create --name nova   --description "OpenStack Compute" compute

創建compute服務API端點

[root@controller1 ~]# openstack endpoint create --region RegionOne   compute public http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller1 ~]# openstack endpoint create --region RegionOne   compute internal http://controller:8774/v2.1/%\(tenant_id\)s
[root@controller1 ~]# openstack endpoint create --region RegionOne   compute admin http://controller:8774/v2.1/%\(tenant_id\)s

 

安裝並配置組件:

三個節點都需要安裝:

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


[root@controller1 ~]# vim /etc/nova/nova.conf

以下部分是整個配置文件需要修改的地方:

[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:openstack@controller1:5672,openstack:openstack@controller2:5672,openstack:openstack@controller3:5672
auth_strategy = keystone
my_ip = 192.168.0.11
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
osapi_compute_listen=192.168.0.11
metadata_listen=192.168.0.11
metadata_listen=192.168.0.11

[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api
…
[database]
connection = mysql+pymysql://nova:nova@controller/nova
…
[glance]
api_servers = http://controller:9292
…
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller1:11211,controller2:11211,controller3:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova
…
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
…
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

拷貝到其他controller節點,注意修改my_ip 選項
[root@controller1 nova]# scp nova.conf controller2:/etc/nova/
nova.conf                                                                                                                  100%  284KB 283.8KB/s   00:00    
[root@controller1 nova]# scp nova.conf controller3:/etc/nova/
nova.conf                                                                                                                  100%  284KB 283.8KB/s   00:00

拷貝到其他controller節點注意修改藍色ip地址

 

同步數據庫,忽略任何不推薦的信息

[root@controller1 ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller1 ~]# su -s /bin/sh -c "nova-manage db sync" nova
WARNING: cell0 mapping not found - not syncing cell0.
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)

 

Nova 一共有五個服務需要啟動,建議一個一個啟動,對照着日志查看是否存在報錯。

[root@controller1 ~]# systemctl restart  openstack-nova-consoleauth.service
[root@controller1 ~]# systemctl start  openstack-nova-scheduler.service
[root@controller1 ~]# systemctl start   openstack-nova-conductor.service
[root@controller1 ~]# systemctl start   openstack-nova-novncproxy.service

[root@controller1 ~]# systemctl enable openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service
[root@controller1 ~]# systemctl status  openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service | grep active | wc -l 
5

 

Controller1  5個nova服務啟動成功,然后拷貝nova.conf 到 controller2 controller3 啟動服務,注意監聽到本地。

 

 安裝和配置計算節點

注意:經過測試發現,使用Mitaka版本安裝計算節點Mitaka源中的qemu-kvm和libvirt包存在BUG。
從這里開始,需要配置計算節點,計算節點為一台新的主機。

首先用本地yum源安裝

yum install qemu-kvm libvirt* -y

然后在配置openstack本地源安裝:

yum install openstack-nova-compute python-crypto -y

編輯/etc/nova/nova.conf 如下:

[DEFAULT]
transport_url = rabbit://openstack:openstack@controller1,openstack:openstack@controller2,openstack:openstack@controller3
auth_strategy = keystone
my_ip = 192.168.0.31
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
…
[glance]
api_servers = http://controller:9292
…
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller1:11211,controller2:11211,controller3:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
…
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://192.168.0.10:6080/vnc_auto.html        # 這里要寫ip地址不能寫主機名,因為是客戶端調用。

查看主機是否支持虛擬化的硬件加速

[root@compute1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
2

啟動計算節點服務

[root@compute1 ~]# systemctl enable libvirtd.service openstack-nova-compute.service
[root@compute1 ~]# systemctl start libvirtd.service openstack-nova-compute.service

注意:在配置計算服務的時候,請先保持各節點之間時間同步,否則某些服務會down掉。

 

在任意controller節點上執行:

[root@controller1 ~]# . admin-openrc
[root@controller1 ~]# nova service-list

 

 三個controller節點和一個compute節點服務都為 up 狀態,服務正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM