本文參考:https://docs.openstack.org/ocata/install-guide-rdo/index.html官方文檔來手把手教你安裝Ocata,安裝文檔中有漏洞的地方,本文都會說起。本指南不會給出全部命令的輸出結果,只給出部分必要的解釋,所以在安裝時最好對照着官方文檔進行。html
本文目錄:node
安裝環境python
認證服務mysql
鏡像服務linux
計算服務sql
網絡服務數據庫
Dashboardbootstrap
1、安裝環境 一、示例架構 vim
根據官方文檔,本文架構採用一個控制節點和一個計算節點。centos
(The example architecture requires at least twonodes (hosts) to launch a basic virtual machine or instance. )
控制節點運行認證服務、鏡像服務、計算服務的管理部分、網絡服務的管理部分、各類網絡代理以及Dashboard,還包括一些基礎服務如數據庫、消息隊列以及NTP。
計算節點上運行計算服務中管理實例的管理程序部分。默認狀況下,計算服務使用 KVM。還運行網絡代理服務,用來鏈接實例和虛擬網絡以及經過安全組給實例提供防火牆服務。
二、網絡
公有網絡
公有網絡選項以儘量簡單的方式經過layer-2(網橋/交換機)服務以及VLAN網絡的分割來部署OpenStack網絡服務。實際上,它將虛擬網絡橋接到物理網絡,並依靠物理網絡基礎設施提供layer-3服務(路由)。另外,DHCP服務爲實例提供IP地址。
私有網絡
私有網絡選項擴展了公有網絡選項,增長了layer-3(路由)服務,使用VXLAN相似的方式。本質上,它使用NAT路由虛擬網絡到物理網絡。另外,這個選項也提供高級服務的基礎,好比LBaas和FWaaS。
這裏咱們選擇私有網絡。
三、安全
下面是各個須要密碼的服務以及解釋,建議這些密碼使用同一個,以避免混淆。
四、主機網絡配置
控制節點
配置網絡接口
Controller:IP:192.168.0.112/24 GATEWAY:192.168.0.1
網絡配置完以後須要將防火牆和selinux關閉。
關閉防火牆:
systemctl stop firewalld.service
禁止防火牆開機啓動
systemctl disable firewalld.service
關閉selinux
vim /etc/selinux/config,配置selinux=disabled
# setenforce 0,使配置當即生效
配置地址解析
編輯/etc/hosts
# controller
192.168.0.112 controller
# compute1
192.168.0.113 compute1
計算節點
配置網絡接口。
Compute:IP:192.168.0.113/24 GATEWAY:192.168.0.1
一樣須要配置地址解析,參考控制節點。
配置完成以後須要進行驗證:
與外網連通性:
分別在控制節點和計算節點上:
# ping -c 4 www.baidu.com
控制節點和計算節點連通性:
控制節點上輸入# ping -c 4 compute1
計算節點上輸入# ping -c 4 controller
五、NTP
控制節點
安裝相關包
# yum install chrony
編輯 /etc/chrony.conf
server NTP_SERVER iburst
能夠根據須要將NTP_SERVER替換爲合適的NTP服務器,建議不用改。而後添加:
allow 192.168.0.0/24
即容許計算節點同步。(計算節點IP網段屬於192.168.0.0)
# systemctl enable chronyd.service
# systemctl start chronyd.service
啓動服務。
計算節點
編輯/etc/chrony.conf,能夠將其餘的幾個同步地址註釋掉。
server controller iburst
同步控制節點。
# systemctl enable chronyd.service
# systemctl start chronyd.service
啓動服務。(若是發現同步的不是控制節點,那麼重啓一下NTP服務便可。)
# systemctl restart chronyd.service
驗證操做:
在控制節點上同步時間。
# chronyc sources
帶星號的是NTP當前同步的地址。
計算節點上同步。
# chronycsources
210 Number of sources = 1
MS Name/IP address
Stratum Poll Reach LastRx Last sample
======================================================
^* controller 3 9 377 421 +15us[ -87us] +/- 15ms
六、安裝OpenStack包
如下操做在全部節點上進行。
啓用OpenStack庫:
# yum install centos-release-openstack-ocata
完成安裝
1)在全部節點上升級包
# yum upgrade
2)安裝OpenStack 客戶端
# yum install python-openstackclient
3)CentOS默認啓用了SELinux,安裝openstack-selinux來自動管理OpenStack服務的安全策略。
# yum install openstack-selinux
七、安裝數據庫
數據庫通常運行在控制節點上。
安裝並配置組件。
安裝相關包。
# yum install mariadb mariadb-server python2-PyMySQL
建立並編輯/etc/my.cnf.d/openstack.cnf 文件,並完成如下操做。在配置文件中添加如下配置:
[mysqld]
bind-address=192.168.0.112
default-storage-engine=innodb
innodb_file_per_table=on
max_connections=4096
collation-server=utf8_general_ci
character-set-server=utf8
其中bind-address爲控制節點IP地址。
完成安裝
1)啓動數據庫並設置開機啓動
# systemctl enable mariadb.service
# systemctl start mariadb.service
2)運行mysql_secure_installation腳原本保證數據庫安全,爲root帳戶設置一個合適的密碼
# mysql_secure_installation
八、消息隊列
OpenStack使用消息隊列來協調服務之間的狀態和操做,消息隊列服務通常運行在控制節點上。,OpenStack支持RabbitMQ,Qpid以及ZeroMQ等消息隊列服務。本指南使用RabbitMQ消息隊列服務。
安裝相關包
# yum install rabbitmq-server
啓動消息隊列並設置開機啓動
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
添加openstack用戶
#rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...
使用合適的密碼替換掉 RABBIT_PASS
容許openstack用戶的配置、寫、讀權限
#rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
九、緩存令牌
認證服務的認證機制使用Memcached來緩存令牌,通常運行在控制節點上。
安裝相關包
# yum install memcached python-memcached
編輯 /etc/sysconfig/memcached文件並配置IP地址,將127.0.0.1改成控制節點IP。
完成安裝
啓動 Memcached服務並設置開機啓動。
# systemctl enable memcached.service
# systemctl start memcached.service
2、認證服務
在 控制節點上配置。 一、前提條件
建立數據庫
以root身份登陸數據庫
$ mysql -u root -p
建立keystone數據庫
MariaDB[(none)]> CREATE DATABASE keystone;
給數據庫賦予適當的權限;
MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO 'keystone'@'localhost'
IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO 'keystone'@'%'
IDENTIFIED BY 'KEYSTONE_DBPASS';
用合適的密碼替換KEYSTONE_DBPASS
二、安裝並配置組件
運行命令安裝相關包
# yum install openstack-keystone httpd mod_wsgi
編輯文件/etc/keystone/keystone.conf
在[database]選項配置數據庫鏈接
[database]
# ...
connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替換掉KEYSTONE_DBPASS
在[token]選項中,配置,Fernet令牌提供者:
[token]
# ...
provider=fernet
同步認證服務數據庫
# su -s/bin/sh -c "keystone-manage db_sync" keystone
初始化Fernetkey倉庫
# keystone-manage fernet_setup --keystone-user keystone --keystone-
groupkeystone
# keystone-manage credential_setup --keystone-user keystone--keystone-groupkeystone
引導認證服務
# keystone-manage bootstrap --bootstrap-password ADMIN_PASS
--bootstrap-admin-urlhttp://controller:35357/v3/
--bootstrap-internal-urlhttp://controller:5000/v3/
--bootstrap-public-urlhttp://controller:5000/v3/
--bootstrap-region-id RegionOne
替換掉ADMIN_PASS
配置Apache服務器
編輯/etc/httpd/conf/httpd.conf並配置ServerName選項,使之參考控制節點
給/usr/share/keystone/wsgi-keystone.conf文件建立一個連接
# ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
完成安裝
1.啓動Apache服務器並設置開機啓動
# systemctlenable httpd.service
# systemctl start httpd.service
2.配置管理帳戶
$export OS_USERNAME=admin
$export OS_PASSWORD=ADMIN_PASS
$export OS_PROJECT_NAME=admin
$export OS_USER_DOMAIN_NAME=Default
$export OS_PROJECT_DOMAIN_NAME=Default
$export OS_AUTH_URL=http://controller:35357/v3
$export OS_IDENTITY_API_VERSION=3
三、建立一個域、項目、用戶和角色
本指南有一個service 項目,你添加的每個服務都有惟一的用戶。
$ openstack project create --domain default
--deion "Service Project"service
普通的任務不該該使用具備特權的項目和用戶。做爲示例,本指南建立一個demo項目和用戶。
一、建立demo項目:
$ openstack project create --domain default
--deion "Demo Project"demo
二、建立demo用戶:
$ openstack user create --domain default
--password-prompt demo
三、建立user角色:
$ openstack role create user
四、將user角色添加到demo項目和用戶中。
$ openstack role add --project demo --user demo user
四、驗證操做
出於安全性的緣由,禁用掉暫時的認證令牌機制。
編輯/etc/keystone/keystone-paste.ini文件,並從[pipeline:public_api], [pipeline:admin_api], 和[pipeline:api_v3]選項中刪除admin_token_auth
取消設置臨時的OS_AUTH_URL和OS_PASSWORD環境變量:
$unset OS_AUTH_URL OS_PASSWORD
使用admin用戶,請求一個認證令牌;
$ openstack --os-auth-url http://controller:35357/v3
--os-project-domain-name default--os-user-domain-name default
--os-project-name admin --os-username admintoken issue
這裏遇到錯誤
因爲是Http錯誤,因此返回Apache HTTP 服務配置的地方,重啓Apache 服務,並從新設置管理帳戶:
# systemctlrestart httpd.service
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3
錯誤解決!
使用demo用戶,請求認證令牌:
$ openstack--os-auth-url http://controller:5000/v3
--os-project-domain-namedefault --os-user-domain-name default
--os-project-namedemo --os-username demo token issue
Password:
密碼爲建立demo用戶時的密碼。
五、建立OpenStack客戶端環境腳本:
在前面章節中,咱們使用環境變量和命令的組合來配置認證服務,爲了更加高效和方便,咱們建立一個腳本方便之後的操做。這些腳本包括一些公共的操做,可是也支持自定義的操做。
建立腳本
建立並編輯admin-openrc文件,並添加如下內容:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=root
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替換掉OS_PASSWORD的密碼。
建立並編輯demo-openrc文件,並添加如下內容:
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_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
使用腳本
加載腳本文件更新環境變量:
$ . admin-openrc
請求一個認證令牌;
$ openstack token issue
3、鏡像服務
一、前提條件
建立數據庫
鏈接數據庫,使用root登陸。
$ mysql -u root -p
建立 glance 數據庫
MariaDB [(none)]> CREATE DATABASEglance;
賦予權限:
MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO 'glance'@'localhost'
IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGESON glance.* TO 'glance'@'%'
IDENTIFIED BY 'GLANCE_DBPASS';
替換GLANCE_DBPASS爲合適的密碼;
退出數據庫鏈接。
導入admin證書來獲取只有admin才能執行的命令行權限;
$ . admin-openrc
建立服務認證:
建立glance用戶
$ openstack user create --domain default --password-prompt glance
添加管理員角色到glance用戶和service項目中:
$ openstack role add --project service --user glance admin
建立glance服務實體
建立鏡像服務API端口:
$ openstack endpoint create --region RegionOne
p_w_picpathpublic http://controller:9292
$ openstack endpoint create --region RegionOne
p_w_picpath internal http://controller:9292
$ openstack endpoint create --region RegionOne
p_w_picpath admin http://controller:9292
二、安裝並配置組件
安裝相關包:
# yum install openstack-glance
編輯/etc/glance/glance-api.conf文件,完成如下操做;
在[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_PASS密碼。刪除或註釋掉其餘[keystone_authtoken]參數。
在[glance_store]選項中,配置本地文件系統存儲和鏡像文件位置。
[glance_store]
# ...
stores=file,http
default_store=file
filesystem_store_datadir=/var/lib/glance/p_w_picpaths/
編輯/etc/glance/glance-registry.conf文件,並完成如下操做:
在[database]選項中,配置數據庫權限:
[database]
# ...
connection=mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
替換掉 GLANCE_DBPASS密碼。
在[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_DBPASS密碼。
四、更新鏡像服務數據庫
完成安裝
啓動鏡像服務並設置開機啓動。
# systemctl enable openstack-glance-api.service
openstack-glance-registry.service
# systemctl start openstack-glance-api.service
openstack-glance-registry.service
五、驗證操做
獲取admin權限
$ . admin-openrc
下載源鏡像
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
上傳鏡像
$ 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
4、計算服務 一、安裝和配置控制節點
準備條件
建立數據庫,與以前步驟相似,這裏再也不詳細列出
$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASEnova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> GRANT ALL PRIVILEGESON nova_api.* TO 'nova'@'localhost'
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGESON nova_api.* TO 'nova'@'%'
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGESON nova.* TO 'nova'@'localhost'
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGESON nova.* TO 'nova'@'%'
IDENTIFIED BY 'NOVA_DBPASS';
獲取admin權限:
$ . admin-openrc
建立nova用戶
$ openstack user create --domain default
--password-prompt nova
設置合適的密碼
向nova用戶中添加admin角色。
$ openstack role add --project service --user nova admin
建立nova服務實體
$ openstack service create --name nova
--deion "OpenStack 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
安裝並配置組件
安裝相關包
# yum install openstack-nova-api openstack-nova-conductor
openstack-nova-console openstack-nova-novncproxy
openstack-nova-scheduler
編輯 /etc/nova/nova.conf文件
在[DEFAULT]選項中,開啓計算和元數據API
[DEFAULT]
# ...
enabled_apis=osapi_compute,metadata
在 [api_database]和[database]選項中,配置數據庫鏈接
[api_database]
# ...
connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
# ...
connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova
替換NOVA_DBPASS密碼。
在[DEFAULT]選項中,配置消息隊列鏈接。
[DEFAULT]
# ...
transport_url=rabbit://openstack:RABBIT_PASS@controller
替換掉RABBIT_PASS
在[api]和[keystone_authtoken]選項中,
[api]
# ...
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_PASS
在[DEFAULT]選項中,配置my_ip
[DEFAULT]
# ...
my_ip=10.0.0.11
開啓對網絡服務的支持
[DEFAULT]
# ...
use_neutron=True
firewall_driver=nova.virt.firewall.NoopFirewallDriver
在[vnc]選項中,配置VNC代理
[vnc]
enabled=true
# ...
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
更新數據庫
#su -s /bin/sh -c"nova-manage api_db sync"nova
#su -s /bin/sh -c "nova-manage db sync"nova
完成安裝
開啓計算服務並設置開機啓動;
# systemctl enable openstack-nova-api.service
openstack-nova-consoleauth.service openstack-nova-scheduler.service
openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl start openstack-nova-api.service
openstack-nova-consoleauth.service openstack-nova-scheduler.service
openstack-nova-conductor.service openstack-nova-novncproxy.service
三、安裝並配置計算節點
安裝並配置組件
安裝相關包
# yum install openstack-nova-compute
編輯/etc/nova/nova.conf文件
在[DEFAULT]選項中,開啓計算和元數據API
[DEFAULT]
# ...
enabled_apis=osapi_compute,metadata
在[DEFAULT]選項中,配置消息隊列權限
[DEFAULT]
# ...
transport_url=rabbit://openstack:RABBIT_PASS@controller
替換掉RABBIT_PASS
在[api]和[keystone_authtoken]選項中,配置認證服務權限
[api]
# ...
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_PASS
在[DEFAULT]選項中,配置my_ip參數
[DEFAULT]
# ...
my_ip=MANAGEMENT_INTERFACE_IP_ADDRESS
替換MANAGEMENT_INTERFACE_IP_ADDRESS爲計算節點IP
在[DEFAULT]選項中,開啓網絡服務支持
[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
在[glance]選項中,配置鏡像服務API地址
[glance]
# ...
api_servers=http://controller:9292
在[oslo_concurrency]選項,配置鎖定路徑
[oslo_concurrency]
# ...
lock_path=/var/lib/nova/tmp
四、完成安裝
檢查你的計算節點是否支持硬件虛擬化
$ egrep -c '(vmx|svm)' /proc/cpuinfo
若是輸出值大於等於1,那麼不須要配置,不然,須要作一下配置
編輯/etc/nova/nova.conf文件,配置[libvirt]
[libvirt]
# ...
virt_type=qemu
開啓計算服務並設置開機啓動
# systemctl enable libvirtd.serviceopenstack-nova-compute.service
# systemctl start libvirtd.service openstack-nova-compute.service
驗證操做
在控制節點上進行操做。
獲取admin權限
$ . admin-openrc
列出服務組件來驗證每一個組件都成功運行了
$ openstack compute service list
這裏遇到問題:發現計算節點上服務沒有啓動
查看計算節點日誌:/var/log/nova/nova-compute.log發現
裏面提到須要配置placement,而官方文檔並無提到這一點。解決辦法是安裝openstack-nova-placement-api,並配置相關選項。
在控制節點上,而後建立用戶把用戶placement添加到項目中去並建立placement類型的服務目錄:
最終建立端口:
openstack endpoint create --regionRegionOne placement public http://192.168.0.112:8778
openstack endpoint create --regionRegionOne placement admin http://192.168.0.112:8778
openstack endpoint create --regionRegionOne placement intenal http://192.168.0.112:8778
在計算節點上編輯文件:/etc/nova/nova.conf
在placement選項中添加:
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 = root
os_region_name = RegionOne
替換掉password,重啓計算服務:
# systemctl restartopenstack-nova-compute.service
能夠看到服務已經啓動:
控制節點上也顯示正常:
在此參考了
http://superbigsea.blog.51cto.com/6862263/1901216,特別感謝!
下面接着驗證操做:
三、列出認證服務中的API端口以檢查連通性
$ openstack catalog list
四、列出鏡像服務中的鏡像以驗證連通性;
$ openstack p_w_picpath list