序言

openstack是什麼?官方的解釋:OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.大致意思是說openstack是一個具有大量計算能力、儲存、乃至於整個資料中心網路資源的雲作業系統,可以通過dashboard這個web管理介面對其進行管理操作。
本人也只是一個openstack的初學者,寫這序列博文的目的最主要是分享記錄自己的學習成長曆程,其次是希望大家能在這裡能夠學會在最少資源規劃下實現無腦搭建openstack,然後再通過部署的過程去初步瞭解openstack。
本文以UnistedStack公有云為例,選擇其他雲伺服器或者虛擬機器的小朋友也不用太過糾結,原理是一樣的。
這篇文章只是開始篇,比較簡單粗暴。但是如果前期的準備比較充足的話,後面會省了很多麻煩。很多人一開始就遇到各種問題,比如網路不通,服務已經正常啟動但是卻抓不到包。所以為了避免這些麻煩,我們需要一開始就把防火牆清空關掉。

Openstack整體架構

我們可以通過官方的overview,大致瞭解一下openstack的整體架構和相關服務。

官方overView:

這裡寫圖片描述

整體架構:

這裡寫圖片描述

OpenStack元件:

後續會針對各個元件做介紹,現在只需要初步瞭解一下各個元件的功能即可。
Compute (Nova) 計算服務
Identity Service (Keystone) 認證服務
Image Service (Glance) 映象服務
Networking (Neutron/Quantum) 網路服務
Dashboard (Horizon) 儀表板
Object Storage (Swift) 物件儲存
Block Storage (Cinder) 塊儲存
Orchestration (Heat) 編排
Telemetry (Ceilometer) 監控
Database Service (Trove) 資料庫服務
Data Processing (Sahara) 資料處理

網路拓補圖

Although most environments include Identity, Image service, Compute, at least one networking service, and the dashboard, the Object Storage service can operate independently. If your use case only involves Object Storage, you can skip to Object Storage service after configuring the appropriate nodes for it. However, the dashboard requires at least the Image service, Compute, and Networking.
根據官方給的建議,我覺得如果不考慮效能和安全性的話,整個網路拓補圖可以設計成方案一,我打算把neutron裝到controller節點上(這樣做很不好,會導致controller節點直接暴露在公網上),但是這樣就只需要三個節點即可,而我的目的是在最少資源下實現openstack的基礎功能。如果計算機資源充沛的同學我推薦使用傳統方案二,因為openstack是耦合架構,所以部署的辦法也是一樣的,只需要把對應的服務安裝到你拓補圖中的對應節點中即可。

方案一:

這裡寫圖片描述
如圖所示,我用了三個網段,一個是Management管理網路,一個是Instance例項網路,另一個連線外網用的Public網路。至於這些網路是幹什麼用的,到neutron那裡會做介紹。所以現階段大家需要準備三個網段即可。其中controller節點需要三個網絡卡,compute節點需要兩個網絡卡,storage節點只需要一個網絡卡就好。

方案二:

這裡寫圖片描述

這個是比較經典的搭配方案,有興趣的朋友可以自己嘗試一下。

環境準備

  1. 因為公司免費的原因,我使用的是UOS雲:
    UnistedStack控制檯傳送門:https://console.ustack.com
    這裡寫圖片描述
  2. 下面步驟也可在vmware上操作。
  3. 建立三臺虛擬機器,建議使用官方推薦配置。4核+8G記憶體+20G硬碟,雙核也可以,但是記憶體不夠的,可以新增swap虛擬分割槽,將就著用。
    這裡寫圖片描述
  4. 按照官方文件要求,系統統一使用64位的centos7.0。話說你見過32位的centos7麼?冷漠臉…..
  5. 建立網路,網絡卡,繫結靜態IP,更改主機名。本人配置如下
    ManageSubnet:192.168.0.0/24:
    controller.example.com:192.168.0.17/24
    compute.example.com:192.168.0.18/24
    compute.example.com:192.168.0.19/24
    InstanceSubnet:172.16.0.0/24:
    controller.example.com:172.16.0.17/24
    compute.example.com:172.16.0.18/24
    PublicSubnet:10.10.10.0/24:
    controller.example.com:10.10.10.17/24
  6. 配置NTP時間伺服器
    在每部機器上安裝:
    yum install chrony -y
    在controller節點上修改/etc/chrony.conf配置檔案,註釋掉其他server,重新指定NTP伺服器IP,並允許192.168.0.0/24網段的主機訪問。儲存退出,重啟服務並設定為開機自啟。
    vim /etc/chrony.conf

     server 192.168.0.17 iburst
     allow 192.168.0.0/24
     systemctl enable chronyd.service
     systemctl start chronyd.service

    在其他節點進行同樣操作
    vim /etc/chrony.conf

    server 192.168.0.17 iburst
    systemctl enable chronyd.service
    systemctl start chronyd.service
  7. 配置DNS域名解析伺服器:
    偷懶,所以我用了靜態的,修改每個節點的/etc/hosts
    vim /etc/hosts

    192.168.0.17 controller.example.com
    192.168.0.18 compute.example.com
    192.168.0.19 storage.example.com
    172.16.0.17 controller.example.com
    172.16.0.18 compute.example.com

    可以相互ping一下對方的主機名做測試
  8. 如果ping不通,配置檔案又沒有錯的話,可以檢視一下你的防火牆。官方建議是關掉防火牆和selinux的。

    systemctl mask iptables.service
    systemctl mask ip6tables.service
    systemctl mask ebtables.service
    systemctl mask firewalld.service
    setenforce 0

    編輯selinux檔案,設定為開機預設關閉
    vim /etc/selinux/config
    SELINUX=disabled
  9. 安裝openstackPackage,每部機器都執行一遍:
    安裝yum-plugin-priorities包,防止高優先順序軟體被低優先順序軟體覆蓋。
yum install yum-plugin-priorities -y 
安裝EPEL擴充套件yum源,這個包是會更新,去用前面的地址去找到最新的包:
yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-7.noarch.rpm -y 
安裝OpenStackyum源,同樣會更新:
yum install https://repos.fedorapeople.org/repos/openstack/openstack-mitaka/rdo-release-mitaka-5.noarch.rpm -y 

更新系統

yum upgrade -y

重啟系統

reboot

安裝openstackClient

yum install python-openstackclient -y

安裝openstack的selinux

yum install openstack-selinux

Installing······!本文結束
have a nice day!

.