Oenstack Queens 部署全過程(未更新完)
1、安裝並配置系統基礎環境
1.1 作業系統版本
CentOS 7.4 64bit
1.2 配置IP地址資訊
首先建議大家用vim,vim和vi操作的區別就是高亮,vim能讓人更清晰的看出程式碼之間的差異。
yum install vim
正式配置我們的網絡卡資訊,我的網絡卡有四張,名字為ens33,ens34,ens35,ens36
#配置管理網/API網路的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#配置Ovelary網路的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens34
vim /etc/sysconfig/network-scripts/ifcfg-ens35
vim /etc/sysconfig/network-scripts/ifcfg-ens36
#四張網絡卡操作均相同
#1、ONBOOT=yes
#2、刪除網絡卡UUID
1.3 配置主機名
這項操作是為了讓今後對節點操作的時候心中不亂。
hostnamectl set-hostname controller
hostnamectl set-hostname cinder
hostnamectl set-hostname compute-01
hostnamectl set-hostname compute-02
1.4 配置域名解析
此項操作在controller,compute01,compute02和cinder結點都相同。分別配置他們的DNS。
vi /etc/hosts
#複製如下資訊至四臺結點
#這是我自己的ens33網絡卡的資訊,其中具體的ip地址要按照你們的網路分配的IP來
#不要完全複製我的網絡卡IP地址。
192.168.124.27 controller
192.168.124.31 network
192.168.124.32 compute-01
192.168.124.33 compute-02
1.5 關閉Selinux
這項操作要在四個結點都進行操作
vim /etc/sysconfig/selinux
#設定如下資訊
SELINUX=disabled
#該操作需要重啟才能生效,但先別急著重啟。
1.6 關閉並禁用防火牆
這項操作同樣要在四個結點都進行操作
#關閉防火牆(重啟後才生效)
systemctl stop firewalld
#禁用防火牆
systemctl disable firewalld
1.7 重啟系統
重啟系統,讓selinux的關閉,以及防火牆的關閉以及禁用操作生效。
reboot
檢視一下selinux關閉成功了沒:
getenforce
#顯示應該為disabled
再檢視一下防火牆關閉成功了沒:
systemctl status firewalld
1.8 配置網路時間協議(NTP)
這個操作也要再四臺虛擬機器同時操作,但控制節點和其他節點不同,他的目的是讓其他節點的時間和控制節點同步。
#1)首先四臺結點都要安裝chrony包
yum install chrony -y
#2)下面的操作在controller結點的配置檔案設定
vi /etc/chrony.conf
#設定允許以下網段的資訊:(直接找到allow開頭的一行,把註釋去掉進行修改)
allow 192.168.124.0/24
#3)下面的操作在cinder,compute01,compute02結點的配置檔案設定
vi /etc/chrony.conf
#註釋掉前面server0,server1,server2,server3的三行程式碼,同時在其下新增一行:
server controller iburst
#4)下面開啟chrony服務,此操作要在四個結點都進行
systemctl enable chronyd.service
systemctl start chronyd.service
#5)檢視一下服務開啟情況
chronyc sources
#正常情況下,在compute01,compute02,cinder結點執行上述命令後
#會顯示一個controller的資訊,不會出現其他資訊。
#如果出現了的列表中沒有controller,則執行以下操作,
#如果出現了就以下操作就不用進行操作了。
#6)安裝ntpdate
yum install ntpdate
ntpdate controller
#7)重啟並檢視一下服務開啟情況
systemctl restart chronyd.service
chronyc sources
#此時應該已經成功了
1.9 安裝Stack軟體倉庫 和 OpenStack client
yum install centos-release-openstack-queens
yum install python-openstackclient
- 注意,以下部分都是在控制節點安裝配置的
1.10 安裝並配置SQL資料庫
yum install mariadb mariadb-server python2-PyMySQL -y
vim /etc/my.cnf.d/openstack.cnf
# 開啟配置文件並修改以下資訊,取消其註釋
#[mysqld]
bind-address = 192.168.124.27
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
# 退出編輯文件,設定開機啟動並開啟服務
systemctl enable mariadb.service
systemctl start mariadb.service
# 注意這一步開始的時候要注意執行完這個語句,會讓你選擇
# 先按一個Enter,然後依次輸入y,n,y,y
# 其中的n那一項為是否禁止遠端連線資料庫
mysql_secure_installation
1.11 安裝並配置訊息佇列
# 安裝rabbitmq-server
yum install rabbitmq-server -y
# 啟動訊息佇列服務並將其配置為開機啟動
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server
# 新增 openstack 使用者,RABBIT_PASS 為密碼
rabbitmqctl add_user openstack RABBIT_PASS
# 給openstack使用者配置寫和讀許可權
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
1.12 安裝並配置Memcached
yum install memcached python-memcached -y
vim /etc/sysconfig/memcached
# 編輯如下選項,記住不要複製過去,只是在選項括號內的末尾新增上controller即可
OPTIONS="-l 127.0.0.1,::1,controller"
# 啟動Memcached並將其配置為開機啟動
systemctl enable memcached.service
systemctl start memcached.service
1.13 安裝並配置etcd
yum install etcd -y
vim /etc/etcd/etcd.conf
# 編輯以下資訊,其中192.168.124.27為我本機ens33網絡卡的ip地址
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.124.27:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.124.27:2379"
ETCD_NAME="controller"
# 退出編輯並啟動服務
systemctl start etcd
2、 安裝部署認證服務 (Identity Service )
Keystone為所有OpenStack服務提供身份認證和授權,跟蹤使用者以及它們的許可權,提供一個可用服務以及API的列表。接收前臺請求的Keystone API和後臺的Keystone-db。
2.1 建立Keystone 使用者、資料庫並分配訪問許可權
mysql -u root -p
#建立資料庫keystone
CREATE DATABASE keystone;
#退出資料庫
\q
#配置資料庫許可權
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
2.2 安裝並配置
yum install openstack-keystone httpd mod_wsgi
vim /etc/keystone/keystone.conf
#配置下面的引數
[database]
# ...
connection = mysql+pymysql://keystone:[email protected]/keystone
[token]
# ...
provider = fernet
2.3 構建認證服務的資料庫
su -s /bin/sh -c "keystone-manage db_sync" keystone
2.4 初始化 Fernet key
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
2.5 引導身份服務
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
#管理員的密碼為 ADMIN_PASS ,可以替換,第一次部署不建議替換。
2.6 配置Apache HTTP 服務
vi /etc/httpd/conf/httpd.conf
# 編輯下列內容
ServerName controller
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service
systemctl start httpd.service
2.7 配置管理賬戶
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
2.8 建立domain, projects, users, and roles
openstack domain create --description "An Example Domain" example
openstack project create --domain default \
--description "Service Project" service
openstack project create --domain default \
--description "Demo Project" demo
openstack user create --domain default \
--password-prompt demo
# 密碼 DEMO_PASS
openstack role create user
openstack role add --project demo --user demo user
2.9 驗證操作
unset OS_AUTH_URL OS_PASSWORD
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 token issue
# 密碼 ADMIN_PASS
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
# 密碼 DEMO_PASS
3、安裝映象服務 - Glance(在控制節點安裝)
OpenStack映象服務是IaaS的核心服務,它接受磁碟映象或伺服器映象API請求,和來自終端使用者或OpenStack計算元件的元資料定義。
它也支援包括OpenStack物件儲存在內的多種型別倉庫上的磁碟映象或伺服器映象儲存。
大量週期性程序運行於OpenStack映象服務上以支援快取。
同步複製(Replication)服務保證叢集中的一致性和可用性。
其它週期性程序包括auditors, updaters, 和 reapers。
OpenStack映象服務包括以下元件:
glance-api
接收映象API的呼叫,諸如映象發現、恢復、儲存。
glance-registry
儲存、處理和恢復映象的元資料,元資料包括項諸如大小和型別。
3.1 建立 OpenStack 客戶端環境指令碼
# 建立admin專案和使用者客戶端環境變數指令碼
vim 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=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
# 建立demo專案和使用者客戶端環境變數指令碼
vim 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
3.2 使用指令碼
. admin-openrc
3.3 請求認證令牌
openstack token issue
3.4 安裝Glance
# 建立建立Glance資料庫、服務憑證和API端點。
mysql -u root -p
# 建立 glance 資料庫
CREATE DATABASE glance;
# 對``glance``資料庫授予恰當的許可權 , GLANCE_DBPASS 資料庫密碼可以替換,第一次安裝不建議替換
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
# 退出資料庫
\q
3.5 獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權
. admin-openrc
3.6 建立 glance 使用者 , 密碼 GLANCE_PASS
openstack user create --domain default --password-prompt glance
3.7 新增 admin 角色到 glance 使用者和 service 專案上
openstack role add --project service --user glance admin
3.8 建立glance
服務實體
openstack service create --name glance \
--description "OpenStack Image" image
3.9 建立映象服務的 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
3.10 安裝glance軟體包
yum install openstack-glance -y
# 編輯檔案 /etc/glance/glance-api.conf 並完成如下修改:
vim /etc/glance/glance-api.conf
# 在 [database] 部分,配置資料庫訪問:(如果修改了glance使用者密碼要替換 GLANCE_PASS )
[database]
# ...
connection = mysql+pymysql://glance:[email protected]/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:5000
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/
# 編輯 /etc/glance/glance-registry.conf 檔案,並完成如下配置:
vim /etc/glance/glance-registry.conf
# 在 [database] 部分,配置資料庫訪問(如果更改了密碼,注意替換GLANCE_DBPASS):
[database]
# ...
connection = mysql+pymysql://glance:[email protected]/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問(如果更改了密碼,注意替換GLANCE_PASS):
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:5000
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
3.11 寫入映象服務資料庫
su -s /bin/sh -c "glance-manage db_sync" glance
3.12 啟動映象服務、配置開機啟動
systemctl start openstack-glance-api.service \
openstack-glance-registry.service
systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
3.13 測試驗證
# 下載源映象cirros:
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
# 使用 QCOW2 磁碟格式, bare 容器格式上傳映象到映象服務並設定公共可見,這樣所有的專案都可以訪問它
openstack image create "cirros" \
--file cirros-0.3.5-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
# 確認映象的上傳並驗證屬性
openstack image list
4、安裝計算服務-Nova(控制節點)
Nova是基礎設施即服務(IaaS)系統的主要部分,該模組主要由Python實現。
Nova請求Keystone服務進行認證;
請求Image服務提供磁碟映象;
為dashboard提供使用者與管理員介面。
首先,要在控制節點安裝部署Nova元件:
4.1 用資料庫連線客戶端
mysql -u root -p
4.2 建立 nova_api 、 nova 和nova_cell0資料庫
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
4.3 授予對資料庫的適當訪問許可權
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';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
4.4 獲得 admin 憑證
# 獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權
. admin-openrc
4.5 建立 nova 使用者 (密碼 NOVA_PASS)
openstack user create --domain default --password-prompt nova
4.6 給 nova 使用者新增 admin 角色
openstack role add --project service --user nova admin
4.7 建立 nova 服務實體
openstack service create --name nova \
--description "OpenStack Compute" compute
4.8 建立 Compute 服務 API 端點
openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1
openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1
openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1
4.9 建立Placement service (密碼 PLACEMENT_PASS)
openstack user create --domain default --password-prompt placement
4.10 給 placement 新增 admin 角色
openstack role add --project service --user placement admin
4.11 建立 Placement API
openstack service create --name placement --description "Placement API" placement
4.12 建立 Placement API service endpoints
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
4.13 安裝控制節點Nova軟體包
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api
4.14 編輯/etc/nova/nova.conf
檔案並完成下面的操作
vim /etc/nova/nova.conf
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
my_ip = 192.168.124.27
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
# ...
connection = mysql+pymysql://nova:[email protected]/nova_api
[database]
# ...
connection = mysql+pymysql://nova:[email protected]/nova
[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
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip
[glance]
# ...
api_servers = http://controller:9292
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
# 新建一個配置檔案
vim /etc/httpd/conf.d/00-nova-placement-api.conf
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
4.15 重啟http服務
systemctl restart httpd
4.16 同步資料庫
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova
nova-manage cell_v2 list_cells
4.17 啟動 Nova 服務並將其設定為隨系統啟動
systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service