1. 程式人生 > >openstack安裝與配置

openstack安裝與配置

一、實驗環境
centos7.2
控制節點: hostname; controller
ip:172.25.6.2
需要大記憶體,最小4G左右。
計算節點:hostname:server2
ip : 172.25.6.1
記憶體可小點,1G左右即可。
二、配置兩個節點。
1.新增網絡卡
2.編寫 /etc/sysconfig/network-scripts/ifcfg-eth1
這裡寫圖片描述
3.啟動eth1網絡卡。
ifup eth1
這裡寫圖片描述


4.時間同步
yum install -y chrony
vim /etc/chrony.conf
這裡寫圖片描述
5.啟動chronyd服務。
systemctl enable chronyd
systemctl start chronyd
6.檢測時間是否同步
chronyc sources -v
這裡寫圖片描述
7.編寫/etc/hosts 檔案,配置解析。
這裡寫圖片描述
8.配置yum源。
將安裝openstack所需的安裝包,下載在/root/mitaka 目錄中
這裡寫圖片描述
9.yum源更新
yum update
這裡寫圖片描述
以下操作在控制節點
一、安裝 OpenStack 客戶端
yum install -y python-openstackclient
二、安裝配置資料庫

大多數 OpenStack 服務使用 SQL 資料庫來儲存資訊。 典型地,資料庫執行在控制節點上。
1.安裝資料庫。
yum install mariadb mariadb-server python2-PyMySQL -y
2.建立並編輯 /etc/my.cnf.d/openstack.cnf,然後完成如下動作:
在 [mysqld] 部分,設定 bind-address值為控制節點的管理網路IP地址以使得其它節點可以通過管理網路訪問資料庫,在[mysqld] 部分,設定如下鍵值來啟用一起有用的選項和 UTF-8 字符集.
這裡寫圖片描述
3.啟動資料庫服務,並將其配置為開機自啟
systemctl enable mariadb
systemctl start mariadb
4.為了保證資料庫服務的安全性,執行mysql_secure_installation
指令碼。為資料庫的root使用者設定一個適當的密碼。
這裡寫圖片描述
5、登陸資料庫,建立資料庫。
1.在配置 OpenStack 身份認證服務前。
建立 keystone 資料庫。CREATE DATABASE keystone;
keystone資料庫授予恰當的許可權
這裡寫圖片描述
2.建立 glance 資料庫:CREATE DATABASE glance;
glance資料庫授予恰當的許可權:
這裡寫圖片描述
3.建立 nova_api 和 nova 資料庫,對資料庫進行正確的授權.
這裡寫圖片描述
4.創配置OpenStack網路(neutron)服務之前,你必須為其建立一個數據庫,建 neutron 資料庫,允許 neutron 資料庫合適的訪問許可權。
這裡寫圖片描述
5.安裝和配置塊儲存服務之前,你必須建立資料庫,建立 cinder 資料庫,允許 cinder資料庫合適的訪問許可權
這裡寫圖片描述
OpenStack 使用 message queue 協調操作和各服務的狀態資訊。訊息佇列服務一般執行在控制節點上。OpenStack支援好幾種訊息佇列服務包括 RabbitMQ, Qpid, 和 ZeroMQ。不過,大多數發行版本的OpenStack包支援特定的訊息佇列服務
三、安裝 RabbitMQ 訊息佇列服務
1.安裝rabbit-server
yum install rabbitmq-server -y

2.啟動訊息佇列服務並將其配置為隨系統啟動
這裡寫圖片描述
3.新增 openstack 使用者
這裡寫圖片描述
4.給openstack使用者配置寫和讀許可權
這裡寫圖片描述
5.開啟rabbitmq訊息佇列管理器
rabbitmq-plugins enable rabbitmq_management
這裡寫圖片描述
6.過濾5672埠檢視是否已開啟。
這裡寫圖片描述
7.在瀏覽器上訪問172.25.6.2:15672開啟rabbitmq圖形管理器。
這裡寫圖片描述
登陸:使用者,密碼:guest
檢視openstack使用者是否建立成功及其許可權。
這裡寫圖片描述
這裡寫圖片描述
四、memcache安裝與配置。
認證服務認證快取使用Memcached快取令牌。快取服務memecached執行在控制節點。在生產部署中,我們推薦聯合啟用防火牆、認證和加密保證它的安全。
1.安裝軟體包
yum install memcached python-memcached -y
2.啟動Memcached服務,並且配置它隨機啟動
這裡寫圖片描述
3.更改memcache配置檔案 /etc/sysconfig/memcache
這裡寫圖片描述
4.重新啟動Memcached服務,檢視memcache的服務埠。
這裡寫圖片描述
五、認證服務的配置
1.生成一個隨機值在初始的配置中作為管理員的令牌
openssl rand -hex 10
這裡寫圖片描述
使用帶有mod_wsgi的Apache HTTP伺服器來服務認證服務請求,埠為5000和35357
2.安裝openstack-keystone httpd mod_wsgi
yum install -y openstack-keystone httpd mod_wsgi
3.編輯檔案 /etc/keystone/keystone.conf 並完成如下動作:

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

這裡寫圖片描述
在 [database] 部分,配置資料庫訪問:
這裡寫圖片描述
[token]部分,配置Fernet UUID令牌的提供者。
這裡寫圖片描述
4.初始化身份認證服務的資料庫
su -s /bin/sh -c “keystone-manage db_sync” keystone
5.初始化Fernet keys:
keystone-manage fernet_setup –keystone-user keystone –keystone-group keystone
六、配置 Apache HTTP 伺服器
1.編輯/etc/httpd/conf/httpd.conf 檔案,配置ServerName 選項為控制節點:
這裡寫圖片描述
2.用下面的內容建立檔案 /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>

3.啟動 Apache HTTP 服務並配置其隨系統啟動:
systemctl enable httpd.service
systemctl start httpd.service
4.檢視5000,35357埠是否開啟。
這裡寫圖片描述
七、建立服務實體和API端點
身份認證服務提供服務的目錄和他們的位置。每個你新增到OpenStack環境中的服務在目錄中需要一個 service 實體和一些 API endpoints 。
預設情況下,身份認證服務資料庫不包含支援傳統認證和目錄服務的資訊。你必須使用keystone-install 章節中,用命令openssl rand -hex 10為身份認證服務建立的臨時身份驗證令牌用來初始化的服務實體和API端點。
你必須使用–os-token引數將認證令牌的值傳遞給openstack 命令。類似的,你必須使用–os-url 引數將身份認證服務的 URL傳遞給 openstack 命令或者設定OS_URL環境變數.
1.配置認證令牌
export OS_TOKEN=ADMIN_TOKEN
ADMIN_TOKEN替換為你在 keystone-install章節中生成的認證令牌.
export OS_TOKEN=038f89801f2403ff0980
2.配置端點URL:
export OS_URL=http://controller:35357/v3
3.配置認證 API 版本
export OS_IDENTITY_API_VERSION=3
在你的Openstack環境中,認證服務管理服務目錄。服務使用這個目錄來決定您的環境中可用的服務
4.建立服務實體和身份認證服務
這裡寫圖片描述
5.身份認證服務管理了一個與您環境相關的 API 端點的目錄。服務使用這個目錄來決定如何與您環境中的其他服務進行通訊。
OpenStack使用三個API端點變種代表每種服務:admin,internal和public。預設情況下,管理API端點允許修改使用者和租戶而公共和內部APIs不允許這些操作。在生產環境中,處於安全原因,變種為了服務不同型別的使用者可能駐留在單獨的網路上。對例項而言,公共API網路為了讓顧客管理他們自己的雲在網際網路上是可見的。管理API網路在管理雲基礎設施的組織中操作也是有所限制的。內部API網路可能會被限制在包含OpenStack服務的主機上。此外,OpenStack支援可伸縮性的多區域。

建立認證服務的 API 端點:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
八、建立域、專案、使用者和角色
1.建立域default
openstack domain create –description “Default Domain” default
這裡寫圖片描述
2.在你的環境中,為進行管理操作,建立管理的專案、使用者和角色
。建立 admin 專案:
openstack project create –domain default –description “Admin Project” admin
這裡寫圖片描述
。建立 admin 使用者:
openstack user create –domain default –password-prompt admin
這裡寫圖片描述
。建立 admin 角色:
openstack role create admin
這裡寫圖片描述
。新增admin 角色到 admin 專案和使用者上
openstack role add –project admin –user admin admin
3.建立service專案:
openstack project create –domain default –description “Service Project” service
這裡寫圖片描述
4.建立 demo 專案和使用者
。建立demo 專案:
openstack project create –domain default –description “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
九、驗證認證服務。*
在安裝其他服務之前確認身份認證服務的操作。
1.重置OS_TOKENOS_URL 環境變數:
unset OS_TOKEN OS_URL
2.作為 admin 使用者,請求認證令牌:
openstack –os-auth-url http://172.25.6.2:35357/v3 –os-project-domain-name default –os-user-domain-name default –os-project-name admin –os-username admin token issue
這裡寫圖片描述
3.作為demo 使用者,請求認證令牌:
openstack –os-auth-url http://172.25.6.2:5000/v3 –os-project-domain-name default –os-user-domain-name default –os-project-name demo –os-username demo token issue
這裡寫圖片描述
十、建立 OpenStack 客戶端環境指令碼
建立 admin 和 demo 專案和使用者建立客戶端環境變數指令碼,接下來的部分會引用這些指令碼,為客戶端操作載入合適的的憑證。
1.編輯檔案 admin-openrc 並新增如下內容
這裡寫圖片描述
2.編輯檔案 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
export OS_AUTH_URL=http://172.25.6.2:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

使用指令碼
使用特定租戶和使用者執行客戶端,你可以在執行之前簡單地載入相關客戶端指令碼.
1. source admin-openrc
2. 列出使用者:openstack user list
這裡寫圖片描述
3.列出service專案:openstack service list
這裡寫圖片描述
4. openstack project list
這裡寫圖片描述
4.列出已建立的role: openstack role list
這裡寫圖片描述
5.openstack endpoint list
這裡寫圖片描述
十一、映象服務
映象服務 (glance) 允許使用者發現、註冊和獲取虛擬機器映象。它提供了一個 REST API,允許您查詢虛擬機器映象的 metadata 並獲取一個現存的映象。您可以將虛擬機器映象儲存到各種位置,從簡單的檔案系統到物件儲存系統—-例如 OpenStack 物件儲存, 並通過映象服務使用。
一、安裝和配置映象服務之前,你必須建立服務憑證和API端點。
1.建立服務憑證
。獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權:

source admin-openrc

。建立 glance 使用者:

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

這裡寫圖片描述
。新增 admin 角色到 glance 使用者和 service 專案上。

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

。建立glance服務實體

openstack service create --name glance  --description "OpenStack Image" image

這裡寫圖片描述

2.建立映象服務的 API 端點:

openstack endpoint create --region RegionOne image public http://172.25.6.2:9292

這裡寫圖片描述

openstack endpoint create --region RegionOne image public http://172.25.6.2:9292

這裡寫圖片描述

openstack endpoint create --region RegionOne image admin http://172.25.6.2:9292

這裡寫圖片描述

二、安全並配置元件
1.安裝軟體包
yum install -y openstack-glance
2.編輯檔案 /etc/glance/glance-api.conf 並完成如下動作:
。在 [database] 部分,配置資料庫訪問
這裡寫圖片描述
。在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問
這裡寫圖片描述
這裡寫圖片描述
。在 [glance_store] 部分,配置本地檔案系統儲存和映象檔案位置
這裡寫圖片描述
3.編輯檔案 /etc/glance/glance-registry.conf並完成如下動作:
。在 [database] 部分,配置資料庫訪問:
這裡寫圖片描述
。在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:
這裡寫圖片描述
這裡寫圖片描述
4.寫入映象服務資料庫:
su -s /bin/sh -c “glance-manage db_sync” glance
這裡寫圖片描述
5.啟動映象服務、配置他們隨機啟動
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
這裡寫圖片描述
三、驗證操作
1.獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權:source admin-openrc
2.下載源映象:

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

3.使用 QCOW2 磁碟格式, bare 容器格式上傳映象到映象服務並設定公共可見,這樣所有的專案都可以訪問它:

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

這裡寫圖片描述
4.確認映象的上傳並驗證屬性:openstack image list
這裡寫圖片描述
十二、計算服務
安裝與配置控制節點
在安裝和配置 Compute 服務前,你必須建立服務證書以及 服務API 端點。
一、建立服務證書
1.獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權: source admin-openrc
2.建立 nova 使用者

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

這裡寫圖片描述
3.給 nova 使用者新增 admin 角色:

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

4.建立 nova 服務實體:

openstack service create --name nova  --description "OpenStack Compute" compute

這裡寫圖片描述
二、建立 Compute 服務 API 端點

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

這裡寫圖片描述

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

這裡寫圖片描述

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

這裡寫圖片描述

三、安裝並配置元件
1.安裝軟體

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

2.編輯/etc/nova/nova.conf檔案並完成下面的操作:
。在[DEFAULT]部分,只啟用計算和元資料API,配置 “RabbitMQ” 訊息佇列訪問,配置認證服務訪問:
這裡寫圖片描述
。在[api_database][database]部分,配置資料庫的連線:
這裡寫圖片描述
這裡寫圖片描述
。在“[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 訊息佇列訪問:
這裡寫圖片描述
。在 “[keystone_authtoken]” 部分,配置認證服務訪問:
這裡寫圖片描述
。在 [DEFAULT] 部分,使用 Networking 服務

[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

。在[vnc]部分,配置VNC代理使用控制節點的管理介面IP地址 :
這裡寫圖片描述
。在 [glance] 區域,配置映象服務 API 的位置:
這裡寫圖片描述
。在 [oslo_concurrency] 部分,配置鎖路徑:
這裡寫圖片描述
3.同步Compute 資料庫:

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

四、完成安裝,啟動 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

安裝與配置計算節點
一、安裝並配置元件
1.安裝軟體
yum install -y openstack-nova-compute
2.編輯/etc/nova/nova.conf檔案並完成下面的操作:
。在[DEFAULT] 和 [oslo_messaging_rabbit]部分,配置RabbitMQ訊息佇列的連線:

[DEFAULT]
rpc_backend = rabbit

[oslo_messaging_rabbit]
rabbit_host = 172.25.6.2
rabbit_userid = openstack
rabbit_password = openstack

。在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認證服務訪問:

[DEFAULT]
auth_strategy = keystone

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

。在 [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 = 172.25.6.2
novncproxy_base_url = http://172.25.6.2:6080/vnc_auto.html

。在 [glance] 區域,配置映象服務 API 的位置:

[glance]
api_servers = http://172.25.6.2:9292

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

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

。在 [libvirt] 區域做出如下的編輯

[libvirt]
virt_type = qemu

二、完成安裝,啟動計算服務及其依賴,並將其配置為隨系統自動啟動:

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

驗證操作
1.獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權:source admin-openrc
2.列出服務元件,以驗證是否成功啟動並註冊了每個程序:

openstack compute service list

這裡寫圖片描述
Networking 服務
安裝並配置控制節點
一、建立服務憑證
1.獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權
source admin-openrc
2.建立neutron使用者:

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

這裡寫圖片描述
3.新增admin 角色到neutron 使用者:

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

4.建立neutron服務實體:

openstack service create --name neutron  --description "OpenStack Networking" network

這裡寫圖片描述
二、建立網路服務API端點。

openstack endpoint create --region RegionOne  network public http://172.25.6.2:9696

這裡寫圖片描述

openstack endpoint create --region RegionOne  network internal http://172.25.6.2:9696

這裡寫圖片描述

openstack endpoint create --region RegionOne  network admin http://172.25.6.2:9696

這裡寫圖片描述
三、安裝並配置網路元件
1.安裝元件

yum install -y openstack-neutron openstack-neutron-ml2  openstack-neutron-linuxbridge ebtables

2.配置服務元件
Networking 伺服器元件的配置包括資料庫、認證機制、訊息佇列、拓撲變化通知和外掛.
編輯/etc/neutron/neutron.conf 檔案並完成如下操作:
。在 [database] 部分,配置資料庫訪問:

[database]
connection = mysql+pymysql://neutron:[email protected]172.25.6.2/neutron

。在[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 = openstack

。在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認證服務訪問:

[DEFAULT]
auth_strategy = keystone

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

。在[DEFAULT][nova]部分,配置網路服務來通知計算節點的網路拓撲變化:

[DEFAULT]
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True

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

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

oslo_concurrency]
lock_path = /var/lib/neutron/tmp

3.配置 Modular Layer 2