第一次OpenStack之旅

vito0319發表於2018-07-10

今天開始,研究OpenStack,開始IAAS層的探索!!

雲:通過管理框架來靈活使用通用硬體裝置的計算方式,可以說是擁有了資源“雲”。
OpenStack:從一個更高的角度來說,你可以認為OpenStack之於資料中心,就像作業系統之於伺服器,都帶來了相同水平的執行效率。
租戶:是資源的配額限制集合,被虛擬機器用來在邏輯上與不同租戶互相隔離。

以下使用Icehouse版本的OpenStack
https://www.manning.com/books/openstack-in-action

OpenStack是什麼

OpenStack官方網站這樣描述這個框架:建立私有云和公有云的開源軟體;OpenStack軟體是一個大規模雲作業系統;
主要元件有:
這裡寫圖片描述

通過 DevStack 來體驗 OpenStack

DevStack是一個快速部署OpenStack的工具。DevStack可以讓你與一個小規模(更大規模部署的代表)的OpenStack
互動。
準備工作:需要一臺執行可支援的Linux發行版本的物理伺服器或者虛擬伺服器。

1. 搭建伺服器:

最好是用一臺全新安裝Linux的伺服器來進行DevStack的部署,本次實驗建議使用Ubuntu 16.04(TLS),如果條件允許,建議使用物理硬體來部署,儘管在虛擬環境中“巢狀”執行OpenStack也是可行的,但執行在這個巢狀的OpenStack環境裡的虛擬機器會非常慢。
設定IP地址:
vi /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.8.100    
netmask 255.255.255.0
gateway 192.168.8.2
dns-nameserver 119.29.29.29

關閉防火牆:sudo ufw disable
檢視防火牆:sudo ufw status
安裝SSH服務:

sudo apt-get install openssh-server

更改源:
sudo vim /etc/apt/sources.list
阿里源:

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

更新源:
sudo apt-get update

更改pip映象源:

# 更改pip映象源
echo "---> update pip mirrors ..."
mkdir ~/.pip
echo """
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
""" >> ~/.pip/pip.conf

2. 準備伺服器環境

DevStack將會安裝和配置整套OpenStack。部署OpenStack框架的過程稱為Stacking。
現在應該通過普通使用者加 sudo 許可權操作,而不是通過 root 使用者,在下面的例子中使用 sysop 作為有 sudo 特權的普通使用者。更新源

sudo apt-get -y update

DevStack 不是通過 Linux 發行版提供的包管理系統,而是直接通過 OpenStack 線上軟體倉庫
獲取 OpenStack 元件。Git,用來從 OpenStack 軟體倉庫獲取原始碼。

leo@master:~$ sudo apt-get install git

3. 準備 DevStack

下載最新的DevStack程式碼,如下:

leo@master:~$ sudo git clone http://git.trystack.cn/openstack-dev/devstack.git /opt/devstack/

下一步是為 OpenStack 設定正確的目錄許可權和建立一個新的服務賬號(所有服務都在該賬號
下執行),這一過程將會建立 stack 使用者並設定所有 DevStack 檔案從屬於這個使用者。

# 進入 devstack 目錄
leo@master:~$ cd /opt/devstack
# 使 create-stack-user.sh工具可執行
leo@master:/opt/devstack$ sudo  chmod u+x tools/create-stack-user.sh
# 建立 stack 使用者
leo@master:/opt/devstack$ sudo tools/create-stack-user.sh
Creating a group called stack
Creating a user called stack
Giving stack user passwordless sudo privileges
# 使 stack 使用者擁有目錄中的所有檔案
leo@master:/opt/devstack$ sudo chown -R stack:stack /opt/devstack/

目錄已經設定好正確的許可權,新使用者也已經建立好了。下一步是切換到剛建立的 stack 賬戶,
建立 DevStack 的配置檔案,然後就可以以這個配置檔案 stack(部署)了。

4. 執行 DevStack

DevStack 被設計用來部署和測試 OpenStack 元件,因此有多種可行的配置方式。DevStack
是通過維護 local.conf 檔案中的配置引數來進行控制的。現在必須在 devstack 目錄下建立一個名為 local.conf 的配置檔案。
1、切換到stack使用者執行下面的操作:

leo@master:/opt/devstack$ sudo -i -u stack
stack@master:~$ cd /opt/devstack
stack@master:/opt/devstack$ 

2、使用 Vim 編輯、建立 local.conf

stack@master:/opt/devstack$  vim local.conf
[[local|localrc]]
ADMIN_PASSWORD=devstack
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

HOST_IP=172.181.141.11

# Define images to be automatically downloaded during the DevStack built process.
#DOWNLOAD_DEFAULT_IMAGES=False
#IMAGE_URLS=http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git

#CINDER CONFIG
VOLUME_BACKING_FILE_SIZE=10240M

#GENERAL CONFIG
API_RATE_LIMIT=False

# Output
LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
SCREEN_LOGDIR=/opt/stack/logs

執行安裝命令:

./stack.sh

遇到的坑:

  • pip版本問題
    安裝過程中會把pip降到pip 9.0.3辦吧,而最新版本是10.0.0,後面因為版本問題報錯,檢視指令碼發現在:
    /opt/devstack/tools/cap-pip.txt 中,定義的pip辦吧是pip!=8,<10修改為pip!=8,<11後,可以安裝最新pip,排除錯誤。升級pip命令:pip install -U pip setuptools wheel
  • pip安裝問題
    安裝過程中遇到pip安裝失敗,可以手動安裝,
    例如:
    sudo pip install cryptography===2.2.2
    sudo pip install Babel===2.6.0
    sudo pip install numpy===1.14.5
    或者直接:
    sudo pip install -r requirements.txt

  • ETCD錯誤
    https://github.com/coreos/etcd/releases/download/v3.2.17/etcd-v3.2.17-linux-amd64.tar.gz
    手動下載並安裝ETCD版本為:etcd-v3.2.17-linux-amd64.tar.gz,放到/opt/devstack/files中,再次執行即可。

  • 版本錯誤
    經過測試,很多組建的版本有錯誤,遇到版本錯誤可以自行修改檔案/opt/stack/requirements/upper-constraints.txt

  • 自己下載原始碼
git clone git://git.openstack.org/openstack/neutron.git /opt/stack/neutron --branch master

git clone git://git.openstack.org/openstack/nova.git /opt/stack/nova --branch master

git clone git://git.openstack.org/openstack/horizon.git /opt/stack/horizon --branch master
  • 終極大法
    遇到錯誤,手動安裝依賴包,然後重新執行:
    ./unstack.sh
    ./clear.sh
    ./stack.sh
    多次執行,必將成功!
    成功後貼圖:
=========================
DevStack Component Timing
 (times are in seconds)  
=========================
run_process           27
test_with_retry        4
apt-get-update        14
pip_install          580
osc                  265
wait_for_service      30
dbsync                30
apt-get               61
-------------------------
Unaccounted time     1231
=========================
Total runtime        2242



This is your host IP address: 127.18.141.11
This is your host IPv6 address: ::1
Horizon is now available at http://127.18.141.11/dashboard
Keystone is serving at http://127.18.141.11/identity/
The default users are: admin and demo
The password: devstack

WARNING: 
Using lib/neutron-legacy is deprecated, and it will be removed in the future


Services are running under systemd unit files.
For more information see: 
https://docs.openstack.org/devstack/latest/systemd.html

DevStack Version: rocky
Change: ea2aff96ffa8ec95d029a20e052648cfe6de3a03 Merge "Ensure passwordless ssh with stack between nodes" 2018-06-09 05:28:07 +0000
OS Version: Ubuntu 16.04 xenial

登陸頁面

登陸後頁面

5、測試devstack
測試包含兩個測試套件:DevStack exercises 和 OpenStack Tempest,執行下面的命令進行測試:
./exercise.sh
https://blog.csdn.net/u011521019/article/details/51114681

相關文章