一、前言
單位新進了十幾台服務器,建了一個高標准的一體化機房,狀似劉姥姥進大觀園的我,從機房規划到企業私有雲搭建一一重頭學來,除了機房泥牆其他基本都涉獵到了。
從企業私有雲這個名字就能看出這是多么復雜的一個東西。牽涉到服務器、交換機、防火牆、網絡規划、雲系統搭建。個個都是厲害的角,用張國榮的話說:“咱什么時候也都成角?”。成角不成角不說,經過十幾天的折騰,今天才把OpenStack安裝成功,期間經歷了酷似煉獄的種種階段。現簡單記錄整個安裝過程以及踩過的坑,供自己查閱或后來人參考。
二、企業私有雲(OpenStack)
想必接觸過這塊的人都不陌生,到了現在這個年代,你要說你沒聽說過各種雲你簡直就是火星來的,從阿里雲到微軟的Azure到亞馬遜雲等等。他們的共同特點就是普通用戶你不再需要購買實體服務器,只需要從雲提供商購買相應的CPU、內存、硬盤、網絡就可以有一台自己的服務器。
對於企業而言,建立私有雲也是有必要的,可以充分發揮服務器的性能等等優勢暫且不提。我個人認為最理想的情況就是企業的每個人都不再需要實體機(當然遠程連接的機器還是需要的),每個人根據自己的業務需求,從私有雲中划分出相應的配置安裝需要的操作系統來進行自己的工作。大家無需再被數據備份等煩擾,也可以輕易的實現遠程辦公。
這就是OpenStack所實現的功能。其官網對其介紹如下:
OpenStack software controls large pools of compute, storage, and networking resources throughout a datacenter, managed through a dashboard or via the OpenStack API. OpenStack works with popular enterprise and open source technologies making it ideal for heterogeneous infrastructure.
大概是說OpenStack能夠簡單的管理(分配)大量計算機(整個數據中心)的計算能力(CPU)、存儲能力(硬盤、磁盤陣列)、內存。
那么我們只要在整個數據中心搭建起來OpenStack也就實現了搭建企業私有雲。看上去很容易吧。孔子曰:“言知之易,行之難。”。萬事同理,再簡單的事情當你操作的時候都會有各種情況發生,何況是這么復雜的OpenStack。加上之前有多次安裝Hadoop集群的慘痛經驗,所以在開始之前就做足了心里准備。還好,目前基本初裝成功,簡單記述之。
三、安裝過程
首先在這里要感謝CLOUDMAN,其關於OpenStack安裝及使用的一系列博客,給予我們很大的幫助,有興趣的可以直接拜讀,感謝他的無私分享。
3.1 安裝操作系統
在這里我選擇的是Ubuntu,剛開始想着14.04穩定,就裝了14.04。誰知道怎么裝OpenStack都報錯,后來查看官網才發現16.04比較匹配,又折騰到16.04。查看官方文檔確實是很重要的一步。
安裝完系統后還需要進行以下操作:
- 網卡設置固定IP
- 將ubuntu的apt源修改為阿里
- 設置hosts
這些我在前面的博客中都有介紹,也可以自行Google之。
3.2 安裝OpenStack
1、添加stack用戶
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
2、下載devstack
最重要的就是選擇版本,剛開始選擇默認分支安裝了一個all-in-one模式,一次成功。於是就朝着CLOUNDMAN介紹的controller和compute節點的方式邁進,結果一直報錯。今日試了一下ocata版,折騰了幾下之后成功。
git clone https://git.openstack.org/openstack-dev/devstack -b stable/ocata
3、創建local.conf
在剛剛clone后的devstack文件中新建local.conf文件,其配置如下:
主節點(controller)配置
[[local|localrc]]
MULTI_HOST=true
HOST_IP=10.0.0.101 # management & api network
LOGFILE=/opt/stack/logs/stack.sh.log
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# enable neutron-ml2-vlan
disable_service n-net
enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron,q-lbaas,q-fwaas,q-vpn,placement-api
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
LOG_COLOR=False
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen
# 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
計算節點(compute)配置
[[local|localrc]]
MULTI_HOST=true
HOST_IP=10.0.0.102 # management & api network
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# Service information
SERVICE_HOST=10.0.0.101
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
Q_HOST=$SERVICE_HOST
KEYSTONE_AUTH_HOST=$SERVICE_HOST
KEYSTONE_SERVICE_HOST=$SERVICE_HOST
CEILOMETER_BACKEND=mongodb
DATABASE_TYPE=mysql
ENABLED_SERVICES=n-cpu,q-agt,neutron
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
enable_service placement-api
# vnc config
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
LOG_COLOR=False
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen
# 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
此處需要注意的是,經過實際測試其中的HOST_IP和SERVICE_HOST必須輸入實際IP地址,不能輸入hostname,否則安裝不能成功。並且控制節點和計算節點的密碼要一致,否則無法啟動。
當然你也可以根據自己的雲部署需求,選擇其他部署方式。
4、修改pip源
注意stack用戶和root用戶的源都需要修改。分別在/root目錄下和/opt/stack目錄下新建.pip文件夾,並在此文件夾中創建pip.conf文件,寫入以下內容:
[global]
trusted-host=pypi.douban.com
index-url = https://pypi.douban.com/simple
5、執行安裝命令
./stack.sh
由於網速(主要是國外網速,這個占失敗的主因,沒辦法,大家都懂)以及一些未知因素等問題,幸運的話會成功,安裝時間也會很長,慢慢等待。下面介紹一些失敗的情況及應對的方案。
3.3 填各種坑
1、generate-subunit: command not found
這個問題比較常見,按順序執行以下命令:
sudo apt-get install python-pip
sudo pip install --upgrade pip
sudo pip install -U os-testr
2、generate-subunit ******* fail
這個問題更常見,一般在結束的上面幾行會告訴你失敗的原因,可以分析失敗原因,當然如果你看不明白,可以直接按以下步驟,重試安裝。
- 關閉ssh連接,新建連接。(當然重啟服務器更好)
- 執行./unstack.sh
- 執行./clean.sh
- 執行./stack.sh重新安裝
3、計算節點nova無法啟動:compute service on compute node not starting
從ocata版開始需要在計算節點的local.conf中添加下述信息:
enable_service placement-api
4、多次嘗試安裝均失敗
如果你多次安裝都失敗,建議你直接重裝操作系統,這樣比分析原因來的要快。而且一旦安裝失敗,系統的純潔性已經被破壞了,所以建議直接重裝系統,重裝一遍系統大概也就20分鍾。
四、總結與展望
安裝成功OpenStack只是在私有雲道路上邁出的萬里長征第一步,后面還有許許多多的東西需要涉足。這里只是個開端,與各位共勉。
