OpenStack搭建(一)

OpenStack介紹

創(chuàng)新互聯(lián)專注于天全網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供天全營銷型網(wǎng)站建設(shè),天全網(wǎng)站制作、天全網(wǎng)頁設(shè)計、天全網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造天全網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供天全網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

openstack是一個云平臺管理項目,我們可以使用openstack來管理我們的資源池,在這個資源池中包含了很多的子項目。openstack是有多個不同的模塊組成,不同的功能有相對應(yīng)得不同模塊負(fù)責(zé)。openstack三大核心分別是 計算、網(wǎng)絡(luò)、存儲。通過調(diào)用不同模塊的API來對外提供交互。

openstack 的版本發(fā)布很快,從最初的A版到現(xiàn)在的N版,官方一般會每隔六個月發(fā)布一個新的版本。

openstack每個服務(wù)都有對應(yīng)的項目名稱,不同的項目就相當(dāng)于一個提供單獨服務(wù)的模塊,具體的對應(yīng)關(guān)系如下:

  • Horizon (Dashboard): Openstack的web管理服務(wù)。

  • Nova (Compute):  通虛擬化技術(shù),提供的計算資源池。

  • Neutron (Networking): 虛擬機的網(wǎng)絡(luò)資源管理。

存儲服務(wù)(Storage):

  • Swift (Object Storage): 對象存儲,適合于 “一次寫入,多次讀取”。

  • Cinder (Block Storage): 塊存儲,提供存儲資源池。

共享服務(wù)(Share Service): 

  • Keystone (Identify service):認(rèn)證管理。

  • Glance (Image service): 提供虛擬鏡像的注冊和存儲管理。

  • Ceilometer (Telemetry): 提供監(jiān)控和數(shù)據(jù)采集、計量服務(wù)。

高層服務(wù) (Higher-level service):

  • Heat (Orchestration): 自動化部署的組件。

  • Trove(Database Service): 提供數(shù)據(jù)庫應(yīng)用服務(wù)。

基礎(chǔ)服務(wù)配置安裝

準(zhǔn)備工作:

兩臺CentOS7的機器,分別命名為node1和node2,如果沒有內(nèi)部DNS需要綁定hosts.

CS7修改主機名示例:

# hostnamectl set-hostname node1
# hostnamectl status
# cat /etc/hostname 
node1

安裝yum源:

rpm -ivh  http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

安裝openstack倉庫:

yum install -y centos-release-openstack-mitaka

安裝管理包和客戶端:

yum install -y python-openstackclient
yum install -y openstack-selinux

控制節(jié)點上安裝以下服務(wù):

yum install -y mariadb mariadb-server python2-PyMySQL 
yum install -y rabbitmq-server
yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached
yum install -y openstack-glance
yum install -y openstack-nova-api openstack-nova-cert \
  openstack-nova-conductor openstack-nova-console \
  openstack-nova-novncproxy openstack-nova-scheduler
yum install -y openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables


計算節(jié)點安裝nova和neutron:

yum install -y openstack-nova-compute sysfsutils
yum install -y openstack-neutron openstack-neutron-linuxbridge ebtables

除了Horizon,openstack的其他組件都需要連接數(shù)據(jù)庫。

除了Horizon和keystone,其他組件都需要連接RabbitMQ(消息隊列,通信樞紐).

OpenStack數(shù)據(jù)庫配置

創(chuàng)建/etc/my.cnf.d/openstack.cnf,并添加如下配置:

[mysqld]
bind-address = 172.16.10.50
default-storage-engine = innodb
innodb_file_per_table  #獨享表空間
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

啟動數(shù)據(jù)庫:

# systemctl enable mariadb.service
# systemctl start mariadb.service

為了保證數(shù)據(jù)庫服務(wù)的安全性,運行``mysql_secure_installation``腳本。特別需要說明的是,為數(shù)據(jù)庫的root用戶設(shè)置一個適當(dāng)?shù)拿艽a。

# mysql_secure_installation

創(chuàng)建庫,并授權(quán):

> create database keystone;
> grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';
> grant all on keystone.* to 'keystone'@'%' identified by 'keystone';
> create database glance;
> grant all on glance.* to 'glance'@'localhost' identified by 'glance';
> grant all on glance.* to 'glance'@'%' identified by 'glance';
> create database nova;
> grant all on nova.* to 'nova'@'localhost' identified by 'nova';
> grant all on nova.* to 'nova'@'%' identified by 'nova';
> create database nova_api;
> grant all on nova_api.* to 'nova'@'localhost' identified by 'nova';
> grant all on nova_api.* to 'nova'@'%' identified by 'nova';
> create database neutron;
> grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron';
> grant all on neutron.* to 'neutron'@'%' identified by 'neutron';
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| glance             |
| information_schema |
| keystone           |
| mysql              |
| neutron            |
| nova               |
| nova_api           |
| performance_schema |
+--------------------+
8 rows in set (0.00 sec)


控制節(jié)點安裝RabbitMQ,并授權(quán)用戶:

 yum install -y rabbitmq-server
 systemctl enable rabbitmq-server.service
 systemctl start rabbitmq-server.service
 rabbitmqctl add_user openstack openstack
 rabbitmqctl set_permissions openstack ".*" ".*" ".*"

打開監(jiān)控插件:

rabbitmq-plugins enable rabbitmq_management

此時可以查看RabbitMQ的服務(wù)端口是否開啟:

# netstat -lntup|grep 15672
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      30174/beam

可以直接訪問web界面進行查看:http://localhost_ip:15672/ 

RabbitMQ的服務(wù)是5672端口:

# netstat -lntup|grep 5672
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      30174/beam          
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      30174/beam          
tcp6       0      0 :::5672                 :::*                    LISTEN      30174/beam

所有主機同步時間

yum install ntpdate -y
ntpdate  time1.aliyun.com
timedatectl set-timezone Asia/Shanghai

在生產(chǎn)環(huán)境中,一定要保證服務(wù)器時間一致,否則會出現(xiàn)創(chuàng)建不了虛擬機的情況,在同步過程中也會出現(xiàn)各種問題。

OpenStack認(rèn)證管理-Keystone

Keystone主要提供用戶認(rèn)證和服務(wù)目錄的功能。openstack的服務(wù)授權(quán)都需要在keystone上完成,keystone通過給授權(quán)的用戶提供一個具有時間有效期的token,在用戶token過期之后需要重新授權(quán)。服務(wù)目錄則包含了所有服務(wù)項和與之相關(guān)的API端點。

用戶認(rèn)證:User, Project,Token,Role.  

這里的Role就類似一個具有相同權(quán)限的用戶組,Keystone通過這些機制來進行認(rèn)證授權(quán)操作。

服務(wù)目錄:service,endpoint. 

service 服務(wù),如 Nova, Glance,Swift. 一個服務(wù)可以確認(rèn)當(dāng)前用戶是否具有訪問資源的權(quán)限。

endpoint其實是一個url,每個url都對應(yīng)一個服務(wù)的實例的訪問地址,并且具有public、private和admin這三種權(quán)限。public url可以被全局訪問,private url只能被局域網(wǎng)訪問,admin url被從常規(guī)的訪問中分離。

Keystone的部署

Keystone使用memcatch來管理認(rèn)證的token,之所以選擇使用memcache而不是使用mysql的原因是存放在memcache中的token可以設(shè)置過期時間,到期之后會自動清理,防止在mysql中因為長期使用而出現(xiàn)表過大難以維護的問題。

生成一個token隨機值

# openssl rand -hex 10
48d263aed5f11b0bc02f

修改keystone的配置文件

在/etc/keystone/keystone.conf文件中配置以下各項

在[DEFAULT]部分,定義初始管理令牌的值

使用前面步驟生成的隨機數(shù)替換``ADMIN_TOKEN`` 值。

# grep "admin_token"  /etc/keystone/keystone.conf
admin_token = 48d263aed5f11b0bc02f

在 [database] 部分,配置數(shù)據(jù)庫訪問:

connection = mysql+pymysql://keystone:keystone@172.16.10.50/keystone

在``[token]``部分,配置Fernet UUID令牌的提供者,并修改token的存儲方式為memcache。

provider = fernet
driver = memcache

在[memcache]部分,修改提供memcache服務(wù)的主機ip:

servers = 172.16.10.50:11211

修改完成后,keystone的配置就完成了。

[root@node1 ~]# grep '^[a-z]' /etc/keystone/keystone.conf
admin_token = 48d263aed5f11b0bc02f
connection = mysql+pymysql://keystone:keystone@172.16.10.50/keystone
servers = 172.16.10.50:11211
provider = fernet
driver = memcache

初始化身份認(rèn)證服務(wù)的數(shù)據(jù)庫,進行數(shù)據(jù)庫同步:

# su -s /bin/sh -c "keystone-manage db_sync" keystone

驗證是否同步成功:

# mysql -h 172.16.10.50 -ukeystone -pkeystone -e "use keystone; show tables;"

初始化Fernet keys,此命令執(zhí)行后會在/etc/keystone下創(chuàng)建一個fernet-keys目錄:

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

啟動memcached:

systemctl enable memcached
systemctl start memcached

配置Apache HTTP服務(wù)器

編輯``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 選項為控制節(jié)點:

ServerName 172.16.10.50:80

用下面的內(nèi)容創(chuàng)建文件 /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000
Listen 35357
<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined
    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined
    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

啟動Apache :

# systemctl enable httpd.service
# systemctl start httpd.service

查看對應(yīng)的5000端口和35357端口是否啟用。

同時查看/var/log/keystone/keystone.log 是否有報錯信息,如果有報錯信息需要開啟keystone的debug模式進行排錯:

 vim /etc/keystone/keystone.conf 
#debug = false  #將此項改為true,再查看日志。

設(shè)置認(rèn)證

配置認(rèn)證令牌,直接在命令行執(zhí)行:

export OS_TOKEN=48d263aed5f11b0bc02f

配置端點URL:

export OS_URL=http://172.16.10.50:35357/v3

配置認(rèn)證 API 版本:

export OS_IDENTITY_API_VERSION=3

創(chuàng)建域、項目、用戶和角色

創(chuàng)建域``default``:

# openstack domain create --description "Default Domain" default
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Default Domain                   |
| enabled     | True                             |
| id          | 5ab6cfb424ee4c99b0fea0cbec19e3b3 |
| name        | default                          |
+-------------+----------------------------------+

在環(huán)境中,為進行管理操作,創(chuàng)建管理的項目、用戶和角色:

創(chuàng)建 admin 項目:

openstack project create --domain default \
  --description "Admin Project" admin

創(chuàng)建 admin 用戶,并設(shè)置密碼:

openstack user create --domain default \
--password-prompt admin

創(chuàng)建 admin 角色:

openstack role create admin

添加``admin`` 角色到 admin 項目和用戶上:

openstack role add --project admin --user admin admin

上面命令的含義為:將admin用戶添加到admin的項目,并授權(quán)為admin角色

創(chuàng)建一個demo的項目

創(chuàng)建``demo`` 項目:(當(dāng)為這個項目創(chuàng)建額外用戶時,不要重復(fù)這一步。)

 openstack project create --domain default \
 --description "Demo Project" demo

創(chuàng)建``demo`` 用戶并設(shè)置密碼:

openstack user create --domain default \
--password-prompt demo

創(chuàng)建 user 角色:

openstack role create user

添加 user``角色到 ``demo 項目和用戶角色:

openstack role add --project demo --user demo user


創(chuàng)建service項目

使用一個你添加到你的環(huán)境中每個服務(wù)包含獨有用戶的service 項目。

創(chuàng)建``service``項目:

openstack project create --domain default \
 --description "Service Project" service

創(chuàng)建glance用戶:

openstack user create --domain default --password-prompt glance

添加glance 用戶到 service 項目和admin角色:

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

創(chuàng)建nova用戶:

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

添加nova用戶到service項目和admin角色:

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

創(chuàng)建neutron用戶:

openstack user create --domain default --password-prompt neutron

添加neutron用戶到service項目和admin角色:

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

服務(wù)注冊

openstack service create   --name keystone --description "OpenStack Identity" identity

創(chuàng)建public的endpoint,并指定url, 注意IP和端口:

openstack endpoint create --region RegionOne   identity public http://172.16.10.50:5000/v3

創(chuàng)建internal類型的endpoint:

openstack endpoint create --region RegionOne   identity internal http://172.16.10.50:5000/v3

創(chuàng)建admin類型的endpoint,指定admin的管理端口:

openstack endpoint create --region RegionOne   identity admin http://172.16.10.50:35357/v3

提示:由于內(nèi)部是相互對應(yīng)的,如果某一條創(chuàng)建錯誤,需要將對應(yīng)的三條全部刪除,重新創(chuàng)建。

刪除方式:(service、user、project等都可以用這種方式刪除)

openstack endpoint list   #查看對應(yīng)的記錄ID號
openstack endpoint delete ab66752a92334e31a08aa65d6fb5fdfc #刪除ID

這些記錄實質(zhì)上都在mysql的keystone.endpoint表中,也可以直接修改表。

驗證操作

在安裝其它服務(wù)前,要先對之前的操作進行驗證。

先重置``OS_TOKEN``和``OS_URL`` 環(huán)境變量:

unset OS_TOKEN OS_URL

使用 admin 用戶,請求認(rèn)證令牌進行測試:

openstack --os-auth-url http://172.16.10.50:35357/v3 \
 --os-project-domain-name default --os-user-domain-name default \
 --os-project-name admin --os-username admin token issue

使用demo項目的demo用戶,請求認(rèn)證令牌測試:

openstack --os-auth-url http://172.16.10.50:35357/v3 \
 --os-project-domain-name default --os-user-domain-name default \
  --os-project-name demo --os-username demo token issue

如果出現(xiàn) (HTTP 401)則說明是密碼輸入錯誤。

創(chuàng)建環(huán)境變量腳本

在上面的測試中,使用了指定參數(shù)的方式來進行連接的驗證,但是輸入內(nèi)容比較長,在實際的生產(chǎn)操作中我們可以定義一個環(huán)境變量的腳本,來省去指定參數(shù)的操作。

創(chuàng)建 admin 和 ``demo``項目和用戶創(chuàng)建客戶端環(huán)境變量腳本。接下來的部分會引用這些腳本,為客戶端操作加載合適的的憑證。

編輯文件 admin-openstack.sh 并添加如下內(nèi)容(注意指定密碼和URL):

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://172.16.10.50:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

同理,添加demo的環(huán)境配置文件demo-openstack.sh:

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://172.16.10.50:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

對腳本添加執(zhí)行權(quán)限后,每次執(zhí)行openstack相關(guān)的命令一定要先source執(zhí)行此腳本,否則會不成功。

對環(huán)境變量腳本進行驗證:

 source  admin-openstack.sh

嘗試直接獲取token,看是否成功

openstack token issue

Openstack鏡像管理-Glance

Glance由Glance-api和Glance-Registry以及p_w_picpath Storage三個組件組成。

Glance-api: 接受云系統(tǒng)鏡像的創(chuàng)建、刪除和讀取請求。通過接收REST API的請求,調(diào)用其他模塊來完成鏡像的查找,獲取、上傳、刪除等操作。默認(rèn)的監(jiān)聽端口為9292.

Glance-Registry:云鏡像的注冊服務(wù)。與mysql進行數(shù)據(jù)交互,用于存儲和獲取鏡像的元數(shù)據(jù)。Glance數(shù)據(jù)庫中有兩張表,一張是p_w_picpath表,另一張是p_w_picpath property表。p_w_picpath表保存了鏡像格式、大小等信息,p_w_picpath property表則主要保存鏡像的定制化信息。glance-registry監(jiān)聽的端口為9191.

Image storage: 是一個存儲的接口層,嚴(yán)格來說它并不是屬于glance,只是給glance提供調(diào)用的一個接口。通過這個接口,glance可以獲取鏡像。p_w_picpath storage支持的存儲有Amazon的S3、Openstack本身的Swift,還有如 ceph,sheepdog,GlusterFS等分布式存儲,p_w_picpath storage是鏡像保存和獲取的接口,由于僅僅是一個接口層,具體的實現(xiàn)需要外部存儲的支持。


Glance的部署

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance-install.html#prerequisites 

安裝glance服務(wù)并配置數(shù)據(jù)庫

前面已經(jīng)對數(shù)據(jù)庫進行了相關(guān)操作,這里需要編輯配置文件/etc/glance/glance-api.conf 并完成如下動作:

在 [database] 部分,配置數(shù)據(jù)庫訪問:(第二個glance為密碼)

connection = mysql+pymysql://glance:glance@172.16.10.50/glance

在/etc/glance/glance-registry.conf 的配置文件中[database] 也配置上此參數(shù)

connection = mysql+pymysql://glance:glance@172.16.10.50/glance

同步數(shù)據(jù)庫,此處會有一個警告:

su -s /bin/sh -c "glance-manage db_sync" glance

驗證數(shù)據(jù)庫是否同步成功:

# mysql -h  172.16.10.50 -uglance -pglance -e "use glance;show tables;"

設(shè)置keystone

在/etc/glance/glance-api.conf中設(shè)置keystone的配置,分別在下面的兩個模塊中

添加如下配置信息:

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

[paste_deploy]
...
flavor = keystone

在/etc/glance/glance-registry.conf 中設(shè)置相同的配置:

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

[paste_deploy]
...
flavor = keystone

配置鏡像存儲

修改/etc/glance/glance-api.conf的配置:

在 [glance_store] 部分,配置本地文件系統(tǒng)存儲和鏡像文件位置:

[glance_store] 
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/p_w_picpaths

啟動服務(wù):

systemctl enable openstack-glance-api.service   openstack-glance-registry.service

systemctl start openstack-glance-api.service   openstack-glance-registry.service

查看啟動后9292和9191端口是否開啟。


在keystone上做服務(wù)注冊

創(chuàng)建glance服務(wù)實體,首先加載admin環(huán)境變量

# source admin-openstack.sh
#  openstack service create --name glance  \
--description "OpenStack Image" p_w_picpath

創(chuàng)建鏡像服務(wù)的 API 端點:

# openstack endpoint create --region RegionOne \
  p_w_picpath public http://172.16.10.50:9292
# openstack endpoint create --region RegionOne  \
 p_w_picpath internal http://172.16.10.50:9292
# openstack endpoint create --region RegionOne  \
 p_w_picpath admin http://172.16.10.50:9292

驗證配置是否成功:

# glance p_w_picpath-list   
+----+------+
| ID | Name |
+----+------+
+----+------+


驗證操作

獲得 admin 憑證來獲取只有管理員能執(zhí)行的命令的訪問權(quán)限:

# source admin-openstack.sh

下載源鏡像:

# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

上傳鏡像到鏡像服務(wù)并設(shè)置公共可見,這樣所有的項目都可以訪問它:

# openstack p_w_picpath create "cirros"   --file cirros-0.3.4-x86_64-disk.img  \
 --disk-format qcow2 --container-format bare   --public

驗證是否上傳成功:

# openstack p_w_picpath list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd | cirros | active |
+--------------------------------------+--------+--------+

上傳成功后在/var/lib/glance/p_w_picpaths/下可以看到這個鏡像,以鏡像ID命名:

[root@node1 ~]# cd /var/lib/glance/p_w_picpaths/
[root@node1 p_w_picpaths]# ll
total 12980
-rw-r-----. 1 glance glance 13287936 Oct 26 16:00 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd


OpenStack計算服務(wù)-Nova

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-controller-install.html 

在openstack的創(chuàng)建中,我們一般將Nova的計算節(jié)點組件放在需要創(chuàng)建虛擬機的主機上,而除了計算節(jié)點之外的其他Nova組件安裝在控制節(jié)點上,計算節(jié)點只負(fù)責(zé)創(chuàng)建虛擬機。

Nova的服務(wù)組件:

API:負(fù)責(zé)接收和響應(yīng)外部請求。API接收的請求將會放到消息隊列(rabbitMQ)中。是外部訪問nova的唯一途徑。

Cert:負(fù)責(zé)身份認(rèn)證EC2.

Scheduler:用于云主機調(diào)度。決策虛擬機創(chuàng)建在哪個主機(計算節(jié)點)上

Conductor: 計算節(jié)點訪問數(shù)據(jù)庫的中間件。

Consoleauth:用于控制臺的授權(quán)驗證

Novncproxy: VNC代理

配置數(shù)據(jù)庫

編輯``/etc/nova/nova.conf``文件并完成下面的操作:

在``[api_database]``和``[database]``部分,配置數(shù)據(jù)庫的連接:

[api_database]
...
connection = mysql+pymysql://nova:nova@172.16.10.50/nova_api
[database]
...
connection = mysql+pymysql://nova:nova@172.16.10.50/nova

同步Compute 數(shù)據(jù)庫:

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

查看數(shù)據(jù)庫同步是否成功:

mysql -h 172.16.10.50 -unova -pnova -e "use nova;show tables;"
mysql -h 172.16.10.50 -unova -pnova -e "use nova_api;show tables;"

配置keystone

編輯``/etc/nova/nova.conf``文件并完成下面的操作:

編輯“[keystone_authtoken]” 部分,添加如下內(nèi)容:

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

在[DEFAULT]中打開注釋:

[DEFAULT]
...
auth_strategy = keystone

配置RabbitMQ
修改nova.conf文件:

[DEFAULT]
...
rpc_backend=rabbit
rabbit_host=172.16.10.50
rabbit_port=5672
rabbit_userid=openstack
rabbit_password=openstack

配置nova服務(wù)參數(shù)

編輯``/etc/nova/nova.conf``文件

在``[DEFAULT]``部分,只啟用計算和元數(shù)據(jù)API:

enabled_apis=osapi_compute,metadata

在 [DEFAULT] 部分,使能 Networking 服務(wù):(此處的設(shè)置需要修改默認(rèn)參數(shù)Noop)

use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

在``[vnc]``部分,配置VNC代理使用控制節(jié)點的管理接口IP地址 :

vncserver_listen=172.16.10.50
vncserver_proxyclient_address=172.16.10.50

在 [glance] 區(qū)域,配置鏡像服務(wù) API 的位置:

api_servers= http://172.16.10.50:9292

在 [oslo_concurrency] 部分,配置鎖路徑:

lock_path=/var/lib/nova/tmp

啟動 Compute 服務(wù)并將其設(shè)置為隨系統(tǒng)啟動:

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

注冊nova服務(wù)

創(chuàng)建 nova 服務(wù)實體:

# source  admin-openstack.sh 
# openstack service create --name nova  \
 --description "OpenStack Compute" compute

創(chuàng)建 Compute 服務(wù) API 端點,nova api的端口為8774 :

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

查看注冊是否成功:

# openstack host list
+-----------+-------------+----------+
| Host Name | Service     | Zone     |
+-----------+-------------+----------+
| node1     | conductor   | internal |
| node1     | consoleauth | internal |
| node1     | scheduler   | internal |
+-----------+-------------+----------+

Nova計算節(jié)點的部署

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-compute-install.html 

計算節(jié)點是真正運行虛擬機的節(jié)點,其硬件配置決定了可以運行多少虛擬機。并且這些節(jié)點需要支持CPU虛擬化。

確定CPU是否支持虛擬機的硬件加速:(結(jié)果不為0,表示支持)

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

此處的計算節(jié)點已經(jīng)在前面安裝了對應(yīng)的服務(wù)。

修改計算節(jié)點nova配置:(由于和控制節(jié)點的大部分配置類似,直接從控制節(jié)點scp配置文件到本地修改,并修改用戶權(quán)限)

# scp 172.16.10.50:/etc/nova/nova.conf  ./nova1.conf
# chown root:nova nova1.conf 
# mv nova.conf  nova.conf-bak
# mv nova1.conf  nova.conf

修改配置文件:

刪除[database]中connection的配置參數(shù)。

#connection = mysql+pymysql://nova:nova@172.16.10.50/nova
#connection = mysql+pymysql://nova:nova@172.16.10.50/nova_api

在``[vnc]``部分,啟用并配置遠(yuǎn)程控制臺訪問:

打開注釋:

enabled=true
novncproxy_base_url=http://172.16.10.50:6080/vnc_auto.html
vncserver_listen=0.0.0.0 
vncserver_proxyclient_address=172.16.10.51 #修改為本地主機ip

打開默認(rèn)的KVM虛擬化:

virt_type=kvm

啟動計算服務(wù)及其依賴,并將其配置為隨系統(tǒng)自動啟動:

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

驗證操作是否正常:

在控制節(jié)點查看:

# source admin-openstack.sh 
# openstack  host list
+-----------+-------------+----------+
| Host Name | Service     | Zone     |
+-----------+-------------+----------+
| node1     | conductor   | internal |
| node1     | consoleauth | internal |
| node1     | scheduler   | internal |
| node2     | compute     | nova     |
+-----------+-------------+----------+
# nova p_w_picpath-list
+--------------------------------------+--------+--------+--------+
| ID                                   | Name   | Status | Server |
+--------------------------------------+--------+--------+--------+
| 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd | cirros | ACTIVE |        |
+--------------------------------------+--------+--------+--------+

出現(xiàn)上面的結(jié)果,證明計算節(jié)點的安裝正常。

OpenStack網(wǎng)絡(luò)服務(wù)-Neutron

Neutron由一個Neutron Server提供服務(wù),主要包含一些二層的插件,如Linux Bridge,openvSwitch,DHCP-Agent, L3-Agent ,LBAAS-Agent 和其他組件等。模擬了實際物理網(wǎng)絡(luò)中的服務(wù)和協(xié)議。

安裝部署

http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html 

Neutron有兩種網(wǎng)絡(luò)架構(gòu),單一扁平網(wǎng)絡(luò)和負(fù)雜的多網(wǎng)段網(wǎng)絡(luò),這里以單一扁平網(wǎng)絡(luò)為例。

安裝部署需要在控制節(jié)點和計算節(jié)點上安裝對應(yīng)的服務(wù),之前已經(jīng)安裝,此處跳過此步驟。

數(shù)據(jù)庫配置

編輯``/etc/neutron/neutron.conf`` 文件并在控制節(jié)點完成如下操作:

在 [database] 部分,配置數(shù)據(jù)庫訪問:

connection = mysql+pymysql://neutron:neutron@172.16.10.50/neutron

配置Keystone

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認(rèn)證服務(wù)訪問:

[DEFAULT]
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://172.16.10.50:5000
auth_url = http://172.16.10.50:35357
memcached_servers = 172.16.10.50:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

配置RabbitMQ

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息隊列的連接:

[DEFAULT]
...
rpc_backend = rabbit
# 修改注釋
[oslo_messaging_rabbit]
rabbit_host = 172.16.10.50
rabbit_userid = openstack
rabbit_password = openstack

neutron的其他配置

在``[DEFAULT]``部分,啟用ML2插件并禁用其他插件:

core_plugin = ml2
service_plugins =

配置nova

在``[DEFAULT]``和``[nova]``部分,配置網(wǎng)絡(luò)服務(wù)來通知計算節(jié)點的網(wǎng)絡(luò)拓?fù)渥兓?/p>

notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[nova]
auth_url = http://172.16.10.50:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova

在 [oslo_concurrency] 部分,配置鎖路徑:

lock_path = /var/lib/neutron/tmp

配置 Modular Layer 2 (ML2) 插件

ML2插件使用Linuxbridge機制來為實例創(chuàng)建layer-2虛擬網(wǎng)絡(luò)基礎(chǔ)設(shè)施.

編輯``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:

在``[ml2]``部分,啟用flat和VLAN網(wǎng)絡(luò):

type_drivers = flat,vlan,gre,vxlan,geneve

在``[ml2]``部分,禁用私有網(wǎng)絡(luò):

tenant_network_types =

在``[ml2]``部分,啟用Linuxbridge機制:

mechanism_drivers = linuxbridge,openvswitch

在``[ml2]`` 部分,啟用端口安全擴展驅(qū)動:

extension_drivers = port_security

在``[ml2_type_flat]``部分,配置公共虛擬網(wǎng)絡(luò)為flat網(wǎng)絡(luò)

[ml2_type_flat]
flat_networks = public

在 ``[securitygroup]``部分,啟用 ipset 增加安全組規(guī)則的高效性:

enable_ipset = true

配置Linuxbridge代理

Linuxbridge代理為實例建立layer-2虛擬網(wǎng)絡(luò)并且處理安全組規(guī)則。

編輯``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:

在``[linux_bridge]``部分,將公共虛擬網(wǎng)絡(luò)和公共物理網(wǎng)絡(luò)接口對應(yīng)起來:

physical_interface_mappings = public:eth0

在``[vxlan]``部分,禁止VXLAN覆蓋網(wǎng)絡(luò):

enable_vxlan = False

在 ``[securitygroup]``部分,啟用安全組并配置 Linuxbridge iptables firewall driver:

enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver


配置DHCP代理

編輯``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:

在``[DEFAULT]``部分,配置Linuxbridge驅(qū)動接口,DHCP驅(qū)動并啟用隔離元數(shù)據(jù),這樣在公共網(wǎng)絡(luò)上的實例就可以通過網(wǎng)絡(luò)來訪問元數(shù)據(jù):

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True

配置元數(shù)據(jù)代理

編輯``/etc/neutron/metadata_agent.ini``文件并完成以下操作:

在``[DEFAULT]`` 部分,配置元數(shù)據(jù)主機以及共享密碼:

nova_metadata_ip = 172.16.10.50
metadata_proxy_shared_secret = trying

為nova配置網(wǎng)絡(luò)服務(wù)

編輯``/etc/nova/nova.conf``文件并完成以下操作:

在``[neutron]``部分,配置訪問參數(shù),啟用元數(shù)據(jù)代理并設(shè)置密碼:

[neutron]
...
url = http://172.16.10.50:9696
auth_url = http://172.16.10.50: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 = trying

完成安裝

網(wǎng)絡(luò)服務(wù)初始化腳本需要一個軟鏈接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``。

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

同步數(shù)據(jù)庫:

# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
  --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

重啟計算API 服務(wù):

systemctl restart openstack-nova-api.service

當(dāng)系統(tǒng)啟動時,啟動 Networking 服務(wù)并配置它啟動

systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
systemctl start neutron-server.service \  
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \  
neutron-metadata-agent.service

在keystone上完成注冊

# source  admin-openstack.sh 
# openstack service create --name neutron   --description "OpenStack Networking" network
# openstack endpoint create --region RegionOne \ 
 network public http://172.16.10.50:9696 
# openstack endpoint create --region RegionOne \ 
 network internal http://172.16.10.50:9696 
# openstack endpoint create --region RegionOne \  
 network admin http://172.16.10.50:9696

驗證neutron是否驗證成功:

# neutron agent-list
+------------------+------------------+-------+-------------------+-------+----------------+-------------------+
| id               | agent_type       | host  | availability_zone | alive | admin_state_up | binary            |
+------------------+------------------+-------+-------------------+-------+----------------+-------------------+
| 172afad4-755b-47 | Linux bridge     | node1 |                   | :-)   | True           | neutron-          |
| a1-81e8-d38056e2 | agent            |       |                   |       |                | linuxbridge-agent |
| 441e             |                  |       |                   |       |                |                   |
| 7f568fdf-192f-45 | Metadata agent   | node1 |                   | :-)   | True           | neutron-metadata- |
| bd-8436-b48ecb5d |                  |       |                   |       |                | agent             |
| 7480             |                  |       |                   |       |                |                   |
| fda9f554-952a-4b | DHCP agent       | node1 | nova              | :-)   | True           | neutron-dhcp-     |
| 7e-8509-f2641a65 |                  |       |                   |       |                | agent             |
| 95c9             |                  |       |                   |       |                |                   |
+------------------+------------------+-------+-------------------+-------+----------------+-------------------+

在計算節(jié)點上安裝Neutron

計算節(jié)點的配置和控制節(jié)點的配置文件是類似的,我們可以將控制節(jié)點的文件直接復(fù)制到計算節(jié)點進行修改。

# scp /etc/neutron/neutron.conf  172.16.10.51:/etc/neutron/ 
# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini 
 172.16.10.51:/etc/neutron/plugins/ml2/
# chown root.neutron /etc/neutron/plugins/ml2/linuxbridge_agent.ini #scp后的文件

刪除neutron.conf上[database]的配置部分,刪除所有``connection`` 項,因為計算節(jié)點不直接訪問數(shù)據(jù)庫。

# connection = mysql+pymysql://neutron:neutron@172.16.10.50/neutron

同時刪除[nova]部分的配置:

[nova]
...
#auth_url = http://172.16.10.50:35357
#auth_type = password
#project_domain_name = default
#user_domain_name = default
#region_name = RegionOne
#project_name = service
#username = nova
#password = nova

注釋掉核心plugin的選項:

#core_plugin = ml2
#service_plugins =

注釋掉nova端口通知的選項:

#notify_nova_on_port_status_changes = true
#notify_nova_on_port_data_changes = true

查看計算節(jié)點/etc/neutron/plugins/ml2/linuxbridge_agent.ini的配置信息: 

[root@node2 ~]# grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini 
physical_interface_mappings = public:eth0
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = True
enable_vxlan = False

修改計算節(jié)點上nova的配置文件/etc/nova/nova.conf,和控制節(jié)點的一致:

[neutron]
url = http://172.16.10.50:9696
auth_url = http://172.16.10.50:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

重啟計算節(jié)點Nova-compute

# systemctl restart openstack-nova-compute

啟動neutron-linuxbridge-agent:

# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service

在控制節(jié)點上驗證是否成功:

[root@node1 ~]# neutron agent-list
+--------------------------------------+--------------------+-------+-------------------+-------+----------------+---------------------------+
| id                                   | agent_type         | host  | availability_zone | alive | admin_state_up | binary                              

當(dāng)前文章:OpenStack搭建(一)
網(wǎng)頁URL:http://muchs.cn/article0/ipjeoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站制作、定制網(wǎng)站、全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司