一、Openstack服務通用安裝步驟:
a、數據庫創庫授權
b、在keystone創建系統用戶關聯角色
c、在keystone上創建服務,注冊api
d、安裝相應服務軟件包
e、修改相應服務的配置文件
f、同步數據庫
g、啟動服務
二、Openstack搭建
第一次搭建的時候控制節點IP是:192.168.0.110;;計算節點IP是192.168.0.108
1、時間同步
控制節點:把控制節點變成一個時間同步服務器,其他節點都去和控制節點同步
yum install chrony
allow 192.168.0.0/24
控制節點沒有配成時間同步服務器的時候只監聽323,變成服務同步器的時候監聽123和323
計算節點配置chrony服務,配置時間同步服務為控制節點的IP
2、openstack包安裝--openstack包安裝需要有openstack相應的源
在CentOS中, ``extras``倉庫提供用於啟用 OpenStack 倉庫的RPM包。 CentOS 默認啟用``extras``倉庫,因此你可以直接安裝用於啟用OpenStack倉庫的包
這是本地已經上傳好的源(openstack_rpm.tar.gz和local源),不用執行yum了。或者centos安裝centos_base源要更新到最新和epel源再yum
yum install centos-release-openstack-mitaka(openstack源-Mitaka版)(https://mirrors.aliyun.com/centos/7.8.2003/extras/x86_64/Packages/在這可以找到相應的rpm源包,這里有R版\q版\k\o版)或yum install centos-release-openstack-rocky(openstack-R版),安裝完之后會生成幾個倉庫文件,倉庫文件指向7.6.1810/cloud//x86_64/各個版本/所有openstack軟件所有安裝包
本地源:
root@compute1 opt]# mount /dev/cdrom /mnt/ 上傳openstack_rpm到opt目錄下,並解壓 echo '[local] name=local baseurl=file:///mnt gpgcheck=0 [openstack] name=openstack baseurl=file:///opt/repo gpgcheck=0' >/etc/yum.repos.d/local.repo yum makecache echo 'mount /dev/cdrom /mnt' >>/etc/rc.local 配置自動掛盤 chmod +x /etc/rc.local
yum安裝openstack源:--本次我們采用本地源,不采用yum安裝源方式
https://vault.centos.org/7.6.1810/extras/x86_64/Packages/
yum -y install https://vault.centos.org/7.6.1810/extras/x86_64/Packages/centos-release-openstack-rocky-1-1.el7.centos.noarch.rpm
控制節點和計算所有節點都要執行:yum install python-openstackclient openstack-selinux
安裝 OpenStack 客戶端:RHEL 和 CentOS 默認啟用了 SELinux . 安裝 openstack-selinux 軟件包以便自動管理 OpenStack 服務的安全策略
3、安裝數據庫
大多數 OpenStack 服務使用 SQL 數據庫來存儲信息。 典型地,數據庫運行在控制節點上
控制節點:yum install mariadb mariadb-server python2-PyMySQL -y
創建並編輯 /etc/my.cnf.d/openstack.cnf,然后完成如下動作:
在 [mysqld] 部分,設置 ``bind-address``值為控制節點的管理網絡IP地址以使得其它節點可以通過管理網絡訪問數據庫:
在``[mysqld]`` 部分,設置如下鍵值來啟用一起有用的選項和 UTF-8 字符集:
啟動數據庫服務,並將其配置為開機自啟:
為了保證數據庫服務的安全性,運行``mysql_secure_installation``腳本。特別需要說明的是,為數據庫的root用戶設置一個適當的密碼。
4、消息隊列
OpenStack 使用 message queue 協調操作和各服務的狀態信息。消息隊列服務一般運行在控制節點上,大多數發行版本的OpenStack包支持特定的消息隊列服務。本安裝 RabbitMQ 消息隊列服務,因為大部分發行版本都支持它。
yum install rabbitmq-server -y
啟動消息隊列服務並將其配置為隨系統啟動:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
* unable to connect to epmd (port 4369) on controller: address (cannot connect to host/port)
添加 openstack 用戶:用戶是openstack,密碼是RABBIT_PASS
rabbitmqctl add_user openstack RABBIT_PASS
給``openstack``用戶配置寫和讀權限:
[root@controller ~]# rabbitmqctl list_users 查看當前用戶列表
[root@controller ~]# rabbitmqctl list_user_permissions openstack 查看用戶權限
[root@controller ~]# rabbitmq-plugins enable rabbitmq_management 開啟rabbitmq的web界面,來監控rabbitmq的運行狀態
5、安裝memcache
認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運行在控制節點
yum install memcached python-memcached -y
[root@controller ~]# sed -i 's#127.0.0.1#192.168.0.110#g' /etc/sysconfig/memcached
[root@controller ~]# systemctl enable memcached.service
[root@controller ~]#systemctl start memcached.service
6、安裝keystone
控制節點上安裝和配置OpenStack身份認證服務,keystone為認證管理,授權管理和服務目錄服務管理提供單點整合
認證:賬號管理,openstack所有用戶,都是在keystone上注冊的
授權:glance、Nova、neutron、cinder等其他服務都統一使用keystone的賬號管理,類似很多網站支持qq登錄
服務目錄:每增加一個服務,都需要在keystone上做注冊登記,用戶通過keystone可以知道那有哪些服務,這些服務的URL是什么,用戶就可以直接訪問這些服務了。
在你配置 OpenStack 身份認證服務前,你必須創建一個數據庫和管理員令牌。
用數據庫連接客戶端以 root 用戶連接到數據庫服務器:mysql -u root –p
創建 keystone 數據庫:CREATE DATABASE keystone;
對``keystone``數據庫授予恰當的權限:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
教程使用帶有``mod_wsgi``的Apache HTTP服務器來服務認證服務請求,端口為5000和35357。缺省情況下,Kestone服務仍然監聽這些端口。然而,本教程手動禁用keystone服務。
安裝包:[root@controller ~]#yum install openstack-keystone httpd mod_wsgi -y
編輯文件 /etc/keystone/keystone.conf 並完成如下動作:
[root@controller ~]#cp /etc/keystone/keystone.conf{,.bak}
[root@controller ~]# grep -Ev '^$|#' /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
在``[DEFAULT]``部分,定義初始管理令牌的值:
admin_token = ADMIN_TOKEN(生成一個隨機值在初始的配置中作為管理員的令牌。使用這個openssl rand -hex 10,也可以使用這個不變)
在 [database] 部分,配置數據庫訪問:
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone將``KEYSTONE_DBPASS``替換為你為數據庫選擇的密碼
mysql+pymysql://這是個協議
keystone:KEYSTONE_DBPASS訪問數據庫的賬號和密碼
controller/keystone訪問哪台主機的哪個庫,由於keystone部署在controller節點,所以就是訪問controller節點下的keystone庫。默認端口3306
在``[token]``部分,配置Fernet UUID令牌的提供者。
[token]
provider = fernet,提供token的方案,加密算法
以上改配置是手動進vim改的。接下來自動配置相關參數,先安裝自動配置工具
yum -y install openstack-utils
[root@controller ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
[root@controller ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[root@controller ~]# openstack-config --set /etc/keystone/keystone.conf token provider fernet
MD5校驗配置文件和手動配置的md5一樣,說明自動配置結果一樣
初始化身份認證服務的數據庫: 以keystone用戶執行keystone-manage db_sync
[root@controller ~] su -s /bin/sh -c "keystone-manage db_sync" keystone,進入數據如果有很多表說明同步成功
su代表切換用戶;=s /bin/sh表指定了指定了一個shell; -c "keystone-manage db_sync"代表切換用戶后在數據庫中執行的命令;keystone代表切換到哪個用戶
以keystone的身份在shell中執行keystone-manage db_sync
初始化Fernet keys:
[root@controller ~]keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置 Apache HTTP 服務器
編輯``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 選項為控制節點:
[root@controller ~]# echo "ServerName controller" >> /etc/httpd/conf/httpd.conf
用下面的內容創建文件 /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 HTTP 服務並配置其隨系統啟動:
# systemctl enable httpd.service
# systemctl start httpd.service
創建服務和注冊api
身份認證服務提供服務的目錄和他們的位置。每個你添加到OpenStack環境中的服務在目錄中需要一個 service 實體和一些 API endpoints
你必須使用``–os-token``參數將認證令牌的值傳遞給:command:openstack 命令。類似的,你必須使用``–os-url`` 參數將身份認證服務的 URL傳遞給 openstack 命令或者設置OS_URL環境變量。配置認證令牌:export OS_TOKEN=ADMIN_TOKEN這個和前面default下配的一樣
配置端點URL:export OS_URL=http://controller:35357/v3
配置認證 API 版本:export OS_IDENTITY_API_VERSION=3
創建服務實體和身份認證服務:openstack service create --name keystone --description "OpenStack Identity" identity(類型,ID,身份認證)
創建認證服務的 API 端點:
openstack endpoint create --region RegionOne identity public http://controller:5000/v3 public是所有人都可以用的api接口
openstack endpoint create --region RegionOne identity internal http://controller:5000/v3 internal是內部使用的(glance、neutron、cinder等 )
openstack endpoint create --region RegionOne identity admin http://controller:35357/v3 admin是管理員使用的
創建域、用戶、項目和角色
身份認證服務為每個OpenStack服務提供認證服務。認證服務使用 T domains, projects (tenants), :term:`users<user>`和 :term:`roles<role>`的組合。
創建域``default``:openstack domain create --description "Default Domain" default
創建 admin 項目:openstack project create --domain default --description "Admin Project" admin
創建 admin 用戶:openstack user create --domain default --password ADMIN_PASS admin
創建 admin 角色:openstack role create admin
查看用戶:openstack user list;openstack user show ID
添加``admin`` 角色到 admin 項目和用戶上(關聯項目、用戶、角色):openstack role add --project admin --user admin admin(角色)
在admin項目上,給admin用戶賦予admin角色
添加到你的環境中每個服務包含獨有用戶的service 項目。創建``service``項目:openstack project create --domain default \
--description "Service Project" service 創建service項目是為了nova\glance用戶都屬於一個項目,到時候把他們放到service項目,剛才設置變量是臨時有效,退出xshell失效。
export OS_TOKEN=ADMIN_TOKEN
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin --os-password ADMIN_PASS user list
unset OS_TOKEN OS_URL --查看token不要這兩個變量,否則會出現'NoneType' object has no attribute 'service_catalog'
openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin --os-password ADMIN_PASS token issue
每次執行那么麻煩,導入環境變量
cat>> admin-openrc << EOF
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_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
[root@controller ~]# openstack token issue 能獲取到token,keystone就安裝OK
7、安裝glance鏡像服務
先執行source admin-openrc導入環境變量,后期直接用openstack命令
安裝在控制節點:鏡像服務 (glance) 允許用戶發現、注冊和獲取虛擬機鏡像。它提供了一個 REST API,允許您查詢虛擬機鏡像的 metadata 並獲取一個現存的鏡像。
OpenStack鏡像服務包括以下組件:
glance-api:接收鏡像API的調用,諸如鏡像發現、恢復、存儲。
glance-registry:存儲、處理和恢復鏡像的元數據,元數據包括項諸如大小和類型。
安裝和配置鏡像服務之前,你必須創建創建一個數據庫、服務憑證和API端點
a、數據庫創庫授權
用數據庫連接客戶端以 root 用戶連接到數據庫服務器:mysql -u root -p 密碼為空直接回車
創建 glance 數據庫:CREATE DATABASE glance;
對``glance``數據庫授予恰當的權限:
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
b、在keystone創建系統用戶關聯角色
創建 glance 用戶:openstack user create --domain default --password GLANCE_PASS glance
添加 admin 角色到 glance 用戶和 service 項目上。openstack role add --project service --user glance admin 在service項目上給glance用戶授權admin的角色
c、在keystone上創建服務,注冊api
創建``glance``服務實體:openstack service create --name glance --description "OpenStack Image" image
創建鏡像服務的 API 端點:
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
d、安裝相應服務軟件包
安裝軟件包: yum install openstack-glance -y
e、修改相應服務的配置文件
[root@controller ~]# cp /etc/glance/glance-api.conf{,.bak}
[root@controller ~]# grep -Ev '^$|#' /etc/glance/glance-api.conf.bak >/etc/glance/glance-api.conf
在 [database] 部分,配置數據庫訪問:將``GLANCE_DBPASS`` 替換為你為鏡像服務設置的密碼
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:
[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 = glance
password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
在 [glance_store] 部分,配置本地文件系統存儲和鏡像文件位置:[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
用openstack-config更改上面的配置:
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
編輯文件 ``/etc/glance/glance-registry.conf``並完成如下動作:
在 [database] 部分,配置數據庫訪問:將``GLANCE_DBPASS`` 替換為你為鏡像服務設置的密碼
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:
[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 = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
[root@controller ~]# cp /etc/glance/glance-registry.conf{,.bak}
[root@controller ~]# grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak >/etc/glance/glance-registry.conf
[root@controller ~]# cat /etc/glance/glance-registry.conf
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
f、同步數據庫
寫入鏡像服務數據庫:su -s /bin/sh -c "glance-manage db_sync" glance。忽略輸出中任何不推薦使用的信息。
g、啟動服務
啟動鏡像服務、配置他們隨機啟動:
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
監聽端口一個9191,一個9292
h、驗證
[root@controller ~]# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public,下面報錯是因為沒有配置glance的public的endpoint(openstack endpoint create --region RegionOne image public http://controller:9292)
我們可以在/etc/glance/glance-api.conf 這個配置文件中設置[glance_store]文件存儲路徑filesystem_store_datadir = /var/lib/glance/images/查看剛上傳的
8、安裝計算服務Nova
計算服務來托管和管理雲計算系統,OpenStack計算組件請求OpenStack Identity服務進行認證;請求OpenStack Image服務提供磁盤鏡像;為OpenStack dashboard提供用戶與管理員接口。
OpenStack計算服務由下列組件所構成:
nova-api 服務接收和響應來自最終用戶的計算API請求,管理虛擬機生命周期
nova-compute(多個)服務,一個持續工作的守護進程,通過Hypervior的API來創建和銷毀虛擬機實例。真正管理虛擬機的生命周期。
nova-api-metadata 服務,接受來自虛擬機發送的元數據請求。``nova-api-metadata``服務一般在安裝``nova-network``服務的多主機模式下使用。
nova-scheduler服務,拿到一個來自隊列請求虛擬機實例,然后決定哪台計算服務器主機來運行它。Nova調度器(挑出最合適的Nova-compute來創建虛機)
nova-conductor模塊,媒介作用於``nova-compute``服務與數據庫之間,幫助Nova-compute代理修改數據庫中虛擬機的狀態。
nova客戶端,用於用戶作為租戶管理員或最終用戶來提交命令
nova-consoleauth 守護進程,授權控制台代理所提供的用戶令牌,為web版的vnc提供訪問令牌token。
novncproxy ,web版VNC客戶端
備注:用戶發起請求創建虛擬機,Nova-api收到請求,開始下發任務,Nova-compute(計算節點)有多台,Nova-api把活安排給誰呢,怎么安排合理,nova-scheduler負責選節點,nova-scheduler需要知道每個計算節點資源情況,比如CPU、MEM,硬盤等等,把這些信息寫到數據庫,schedule從數據庫Nova-db中根據資源情況去選擇相應的計算節點,Nova-compute也需要連接數據庫,去更新自己資源信息。假設有10000個計算節點,每個節點都要連接數據庫,這樣不安全,另一個如果數據庫Nova-db的密碼修改,則所有計算節點都需要修改,且需要重啟計算節點,為了避免以上兩點,nova-conductor出現了。只需在Nova-compute配置消息隊列(rabbitmq),所有的計算節點通過消息隊列去連接nova-conductor,Nova-api通過消息隊列發給Nova-schedule,Nova-schedule收到消息之后,去數據庫查詢nova-compute剩的資源最多。
(1)在控制節點controller上安裝Nova
在安裝和配置 Compute 服務前,你必須創建數據庫服務的憑據以及 API endpoints。
先導入環境變量:source admin-openrc
a、數據庫創庫授權
用數據庫連接客戶端以 root 用戶連接到數據庫服務器:mysql -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';
b、在keystone創建系統用戶關聯角色
創建 nova 用戶:openstack user create --domain default --password NOVA_PASS nova
給 nova 用戶添加 admin 角色:openstack role add --project service --user nova admin
c、在keystone上創建服務,注冊api
創建 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
d、安裝相應服務軟件包
安裝軟件包:yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler -y
e、修改相應服務的配置文件
cp /etc/nova/nova.conf{,.bak}
grep -Ev "^$|#" /etc/nova/nova.conf.bak >/etc/nova/nova.conf
編輯``/etc/nova/nova.conf``文件並完成下面的操作:
在``[DEFAULT]``部分,只啟用計算和元數據API:
[DEFAULT]
...
enabled_apis = osapi_compute,metadata
在``[api_database]``和``[database]``部分,配置數據庫的連接:用你為 Compute 數據庫選擇的密碼來代替 NOVA_DBPASS
[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息隊列訪問:用你在 “RabbitMQ” 中為 “openstack” 選擇的密碼替換 “RABBIT_PASS”。
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認證服務訪問:使用你在身份認證服務中設置的``nova`` 用戶的密碼替換``NOVA_PASS``。
[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
在 [DEFAULT 部分,配置``my_ip`` 來使用控制節點的管理接口的IP 地址。
[DEFAULT]
...
my_ip = 192.168.0.110
在 [DEFAULT] 部分,使能 Networking 服務:
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
默認情況下,計算服務使用內置的防火牆服務。由於網絡服務包含了防火牆服務,你必須使用``nova.virt.firewall.NoopFirewallDriver``防火牆服務來禁用掉計算服務內置的防火牆服務
[root@controller ~]# ll /lib/python2.7/site-packages/nova/virt/firewall.py
-rw-r--r-- 1 root root 16823 May 24 2017 /lib/python2.7/site-packages/nova/virt/firewall.py
[root@controller ~]#
在``[vnc]``部分,配置VNC代理使用控制節點的管理接口IP地址 :
[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
在 [glance] 區域,配置鏡像服務 API 的位置:
[glance]
...
api_servers = http://controller:9292
在 [oslo_concurrency] 部分,配置鎖路徑:
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
用openstack-config配置上面的配置:
openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_DBPASS@controller/nova
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend rabbit
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.110
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf vnc vncserver_listen $my_ip
openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address $my_ip
openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
f、同步數據庫
# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova
g、啟動服務
啟動 Compute 服務並將其設置為隨系統啟動:
# 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
h、驗證測試
[root@controller ~]# openstack compute service list
[root@controller ~]# nova service-list
(2)在計算節點compute上安裝並配置計算服務
確定您的計算節點是否支持虛擬機的硬件加速:
egrep -c '(vmx|svm)' /proc/cpuinfo
如果這個命令返回了 one or greater 的值,那么你的計算節點支持硬件加速且不需要額外的配置。
如果這個命令返回了 zero 值,那么你的計算節點不支持硬件加速。你必須配置 libvirt 來使用 QEMU 去代替 KVM
在 /etc/nova/nova.conf 文件的 [libvirt] 區域做出如下的編輯:
[libvirt]
...
virt_type = qemu
正式安裝:
nova-compute調用libvirtd創建虛擬機
yum install openstack-nova-compute openstack-utils.noarch -y
cp /etc/nova/nova.conf{,.bak}
grep -Ev "^$|#" /etc/nova/nova.conf.bak >/etc/nova/nova.conf
編輯``/etc/nova/nova.conf``文件並完成下面的操作:
在``[DEFAULT]`` 和 [oslo_messaging_rabbit]部分,配置``RabbitMQ``消息隊列的連接:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
用你在 “RabbitMQ” 中為 “openstack” 選擇的密碼替換 “RABBIT_PASS”。
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認證服務訪問:
...
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
使用你在身份認證服務中設置的``nova`` 用戶的密碼替換``NOVA_PASS``。
在 [DEFAULT] 部分,配置 my_ip 選項:
[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
將其中的 MANAGEMENT_INTERFACE_IP_ADDRESS 替換為計算節點上的管理網絡接口的IP 地址,例如 :ref:`example architecture <overview-example-architectures>`中所示的第一個節點 192.168.0.108 。
在 [DEFAULT] 部分,使能 Networking 服務:
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
在``[vnc]``部分,啟用並配置遠程控制台訪問:
[vnc]
...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
服務器組件監聽所有的 IP 地址,而代理組件僅僅監聽計算節點管理網絡接口的 IP 地址。基本的 URL 指示您可以使用 web 瀏覽器訪問位於該計算節點上實例的遠程控制台的位置
在 [glance] 區域,配置鏡像服務 API 的位置:
[glance]
...
api_servers = http://controller:9292
在 [oslo_concurrency] 部分,配置鎖路徑:
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
通過openstack-config配置上面文件:
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend rabbit
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.108
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf vnc enabled True
openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0
openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://controller:6080/vnc_auto.html
openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address $my_ip
openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
啟動計算服務及其依賴,並將其配置為隨系統自動啟動:
# systemctl enable libvirtd.service openstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service (控制節點的消息隊列服務要起來systemctl status rabbitmq-server,否則計算節點開啟這個服務失敗)
驗證測試:
該輸出應該顯示三個服務組件在控制節點上啟用,一個服務組件在計算節點上啟用
9、網絡服務neutron
OpenStack Networking(neutron),允許創建、插入接口設備。常用組件:
neutron-server:接收和路由API請求到合適的OpenStack網絡插件
neutron-linuxbridge-agent:負責創建橋接網卡
neutron-dhcp-agent:負責分配IP
neutron-metadata-agent:配合neutron-metadata-api實現虛擬機的定制
L3-agent:實現三層網絡vxlan(網絡層)
在你配置OpenStack網絡(neutron)服務之前,你必須為其創建一個數據庫,服務憑證和API端點
先執行下:source admin-openrc設置環境變量
(1)控制節點配置
a、數據庫創庫授權
用數據庫連接客戶端以 root 用戶連接到數據庫服務器:mysql -u root -p
創建``neutron`` 數據庫:CREATE DATABASE neutron;
對``neutron`` 數據庫授予合適的訪問權限,使用合適的密碼替換``NEUTRON_DBPASS``:
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
b、在keystone創建系統用戶關聯角色
創建``neutron``用戶:openstack user create --domain default --password NEUTRON_PASS neutron
添加``admin`` 角色到``neutron`` 用戶:openstack role add --project service --user neutron admin
c、在keystone上創建服務,注冊api
創建``neutron``服務實體:openstack service create --name neutron --description "OpenStack Networking" network
創建網絡服務API端點:
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696
d、安裝相應服務軟件包
選擇公共網絡安裝:yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
http://docs.qstack.com.cn/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html
e、修改相應服務的配置文件
配置服務組件:Networking 服務器組件的配置包括數據庫、認證機制、消息隊列、拓撲變化通知和插件
編輯``/etc/neutron/neutron.conf`` 文件並完成如下操作:
在 [database] 部分,配置數據庫訪問:
[database]
...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
使用你設置的數據庫密碼替換 NEUTRON_DBPASS 。
在``[DEFAULT]``部分,啟用ML2插件並禁用其他插件:
[DEFAULT]
...
core_plugin = ml2
service_plugins =
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息隊列的連接:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
用你在RabbitMQ中為``openstack``選擇的密碼替換 “RABBIT_PASS”。
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認證服務訪問:
[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 = neutron
password = NEUTRON_PASS
將 NEUTRON_PASS 替換為你在認證服務中為 neutron 用戶選擇的密碼。
在``[DEFAULT]``和``[nova]``部分,配置網絡服務來通知計算節點的網絡拓撲變化:
[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
[nova]
...
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
使用你在身份認證服務中設置的``nova`` 用戶的密碼替換``NOVA_PASS``。
在 [oslo_concurrency] 部分,配置鎖路徑:
[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp
通過openstack-config配置上面信息:
openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins
openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes True
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes True
openstack-config --set /etc/neutron/neutron.conf nova auth_url http://controller:35357
openstack-config --set /etc/neutron/neutron.conf nova auth_type password
openstack-config --set /etc/neutron/neutron.conf nova project_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova user_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova region_name RegionOne
openstack-config --set /etc/neutron/neutron.conf nova project_name service
openstack-config --set /etc/neutron/neutron.conf nova username nova
openstack-config --set /etc/neutron/neutron.conf nova password NOVA_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件
ML2插件使用Linuxbridge機制來為實例創建layer-2虛擬網絡基礎設施
編輯``/etc/neutron/plugins/ml2/ml2_conf.ini``文件並完成以下操作:
在``[ml2]``部分,啟用flat和VLAN網絡:
[ml2]
...
type_drivers = flat,vlan
在``[ml2]``部分,禁用私有網絡:
[ml2]
...
tenant_network_types =
在``[ml2]``部分,啟用Linuxbridge機制:
[ml2]
...
mechanism_drivers = linuxbridge
在``[ml2]`` 部分,啟用端口安全擴展驅動:
[ml2]
...
extension_drivers = port_security
在``[ml2_type_flat]``部分,配置公共虛擬網絡為flat網絡
[ml2_type_flat]
...
flat_networks = provider
在 ``[securitygroup]``部分,啟用 ipset 增加安全組規則的高效性:
[securitygroup]
...
enable_ipset = True
通過openstack-config配置上面文檔:
cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}
grep -Ev "^$|#" /etc/neutron/plugins/ml2/ml2_conf.ini.bak >/etc/neutron/plugins/ml2/ml2_conf.ini
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers linuxbridge
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks provider
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset True
配置Linuxbridge代理¶
Linuxbridge代理為實例建立layer-2虛擬網絡並且處理安全組規則。
編輯``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件並且完成以下操作:
在``[linux_bridge]``部分,將公共虛擬網絡和公共物理網絡接口對應起來:
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
將``PUBLIC_INTERFACE_NAME`` 替換為底層的物理公共網絡接口。請查看:ref:environment-networking for more information。
在``[vxlan]``部分,禁止VXLAN覆蓋網絡:
[vxlan]
enable_vxlan = False
在 ``[securitygroup]``部分,啟用安全組並配置 Linuxbridge iptables firewall driver:
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
通過openstack-config配置上面文檔:
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
grep -Ev "^$|#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >/etc/neutron/plugins/ml2/linuxbridge_agent.ini
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:eth0
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan False
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group True
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP代理¶
The DHCP agent provides DHCP services for virtual networks.
編輯``/etc/neutron/dhcp_agent.ini``文件並完成下面的操作:
在``[DEFAULT]``部分,配置Linuxbridge驅動接口,DHCP驅動並啟用隔離元數據,這樣在公共網絡上的實例就可以通過網絡來訪問元數據
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
通過openstack-config配置上面文檔:
cp /etc/neutron/dhcp_agent.ini{,.bak}
grep -Ev "^$|#" /etc/neutron/dhcp_agent.ini.bak >/etc/neutron/dhcp_agent.ini
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata True
配置元數據代理:
編輯``/etc/neutron/metadata_agent.ini``文件並完成以下操作:
在``[DEFAULT]`` 部分,配置元數據主機以及共享密碼:
[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
用你為元數據代理設置的密碼替換 METADATA_SECRET。
cp /etc/neutron/metadata_agent.ini{,.bak}
grep -Ev "^$|#" /etc/neutron/metadata_agent.ini.bak >/etc/neutron/metadata_agent.ini
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip controller
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET
為計算服務配置網絡服務:
編輯``/etc/nova/nova.conf``文件並完成以下操作:
在``[neutron]``部分,配置訪問參數,啟用元數據代理並設置密碼:
[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_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET
將 NEUTRON_PASS 替換為你在認證服務中為 neutron 用戶選擇的密碼。
使用你為元數據代理設置的密碼替換``METADATA_SECRET``
openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy True
openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret METADATA_SECRET
f、同步數據庫
網絡服務初始化腳本需要一個超鏈接 /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
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
g、啟動服務
systemctl restart openstack-nova-api.service
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
(2)在計算節點上配置
計算節點處理實例的連接和 安全組
# yum install openstack-neutron-linuxbridge ebtables ipset
Networking 通用組件的配置包括認證機制、消息隊列和插件
cp /etc/neutron/neutron.conf{,.bak}
grep -Ev "^$|#" /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_host controller
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:35357
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
配置Linuxbridge代理:
http://docs.qstack.com.cn/mitaka/zh_CN/install-guide-rdo/neutron-compute-install-option1.html
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
grep -Ev "^$|#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >/etc/neutron/plugins/ml2/linuxbridge_agent.ini
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:eth0
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan False
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group True
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
為計算服務配置網絡服務:
openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:35357
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
完成安裝:
systemctl restart openstack-nova-compute.service
# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service
(3)在控制節點驗證
[root@controller ~]# neutron agent-list
[root@controller ~]# neutron agent-list
503 Service Unavailable
The server is currently unavailable. Please try again at a later time.
Neutron server returns request_ids: ['req-e7689fba-87db-47fc-8786-2e633dfa1c59']
報錯原因是 /etc/neutron/neutron.conf里面的keystone密碼配置錯誤
發現缺少compute計算節點的linux bridge agent,是因為計算節點未和控制節點時間同步,在計算節點可以利用`ntpdate 控制節點IP`(在計算節點配置’server 控制節點IP iburst’)或者一直重啟chronyd
10、安裝horizon儀表盤服務
Dashboard(horizon)是一個web接口,使得雲平台管理員以及用戶可以管理不同的Openstack資源以及服務。這個部署示例使用的是 Apache Web 服務器。
在計算節點進行安裝配置(在計算節點和控制節點都行),keystone安裝在控制節點,也用Apache,horizon也是使用Apache,一旦Apache配置錯誤,重啟Apache,horizon和keystone都掛了。沒有自己數據庫,web頁面展示,全程依賴調用其他服務的api
http://docs.qstack.com.cn/mitaka/zh_CN/install-guide-rdo/horizon-install.html
a、安裝軟件包
yum install openstack-dashboard python-memcached -y
編輯文件 /etc/openstack-dashboard/local_settings 增加並按照如下修改:
編輯文件 /etc/openstack-dashboard/local_settings 並完成如下動作: ALLOWED_HOSTS = ['*', ] SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', }, } EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' OPENSTACK_HOST = "controller" OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default" OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 2, } OPENSTACK_NEUTRON_NETWORK = { 'enable_router': False, 'enable_quotas': False, 'enable_ipv6': False, 'enable_distributed_router': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_fip_topology_check': False, 'default_ipv4_subnet_pool_label': None, 'default_ipv6_subnet_pool_label': None, 'profile_support': None, 'supported_provider_types': ['*'], 'supported_vnic_types': ['*'], } TIME_ZONE = "Asia/Shanghai"
將本地配置的local_settings上傳到計算節點,然后替換
[root@compute ~]# cat local_settings >/etc/openstack-dashboard/local_settings
權限是640,用戶是Apache
systemctl start httpd.service
/usr/share/doc/httpd-2.4.6/httpd-default.conf
驗證:
驗證儀表盤的操作。在瀏覽器中輸入 ``http://192.168.0.108/dashboard``訪問儀表盤。
驗證使用 admin 或者``demo``用戶憑證和``default``域憑證。
在/var/log/httpd/error_log中看到End of script output before headers: django.wsgi
在/etc/httpd/conf.d/openstack-dashboard.conf添加一行WSGIApplicationGroup %{GLOBAL}
[root@compute1 ~]# vim /etc/httpd/conf.d/openstack-dashboard.conf
[root@compute1 ~]# cat /etc/httpd/conf.d/openstack-dashboard.conf | grep -i global
WSGIApplicationGroup %{GLOBAL}
cat >> etc/httpd/conf.d/openstack-dashboard.conf << 'EOF'
WSGIDaemonProcess dashboard WSGIProcessGroup dashboard WSGISocketPrefix run/wsgi WSGIApplicationGroup %{GLOBAL} WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi Alias /dashboard/static /usr/share/openstack-dashboard/static <Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi> Options All AllowOverride All Require all granted </Directory> <Directory /usr/share/openstack-dashboard/static> Options All AllowOverride All Require all granted </Directory>
EOF
Oct 08 00:12:25 compute1 httpd[77803]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.0.108. Set the 'ServerName' directive globally to suppress this message
解決方案:將 apache 的配置文件httpd.conf中的 ServerName 改成可用域名或如下配置
ServerName localhost:80
驗證:http://192.168.0.108/dashboard
admin 用戶:openstack user create --domain default \
--password ADMIN_PASS admin
登錄時有如下報錯:
Something went wrong!
An unexpected error has occurred. Try refreshing the page. If that doesn't help, contact your local administrator.
解決方法
1.修改配置文件vim /etc/openstack-dashboard/local_settings2.將SESSION_ENGINE值修改
原SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
改為SESSION_ENGINE = 'django.contrib.sessions.backends.file'
3.重啟服務,然后再次登錄。
systemctl restart httpd.service memcached.service
http://controller//dashboard/ 這樣登錄也行,需要在本地配置hosts解析