1. 程式人生 > >如何快速部署OpenStack環境——devstack專案

如何快速部署OpenStack環境——devstack專案

題記

每次只要提到部署OpenStack都是一件非常複雜的事情,當然很多人都會提及使用devstack來快速部署Openstack,一般我們都用Devstack部署開發環境,它可以實現在一臺機器上部署一個獨立版本同時包含主體元件的Openstack環境,一直以來我都沒有試過,這兩天一直在適用,最大的感受就是雖然確實很傻瓜,但是經常會遇到莫名的問題。

Devstack

Devstack採用自動化原始碼安裝,使用者只需要下載響應的分支(版本)指令碼,修改相關的配置檔案,就可以實現自動化安裝,自動化解決依賴關係,非常方面。

環境

一般都是在本機的虛擬機器環境下進行測試VM WorkStation 

這裡面需要注意,使用者可以選擇Workstation的兩種網路模式,必須可以實現連線外網。

1、橋接模式 (缺點,由於橋接模式直接連線宿主機所在的區域網絡,所以相關虛擬機器可能佔用已有的IP資源)

2、NAT(既可以實現連線外網,又可以自己共享一個Ip段供虛擬機器IP使用,推薦使用)


3、由於OpenStack需要獲得一個固定的連線IP,而不建議使用DHCP,所以上述不勾選DHCP,而且在虛擬機器固定相關的IP地址。

4、我使用的虛擬機器OS為Ubuntu 14.04 LTS,設定固定IP

[email protected]:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.27.128
        netmask 255.255.255.0
        gateway 192.168.27.2
        network 192.168.27.0
        broadcast 192.168.27.255
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 114.114.114.114

5、設定apt源,由於你可能安裝最新版本的Openstack,所以建議將源修改為國內ubuntu的官方源

[email protected]:~# cat /etc/apt/sources.list
deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
設定之後更新一下  apt-get update

6、安裝git並下載devstack相關版本

apt-get install git

下載devstack相關的mitaka(最新版本)

cd /home
git clone http://git.trystack.cn/openstack-dev/devstack.git -b stable/mitaka

直接通過工具指令碼建立stack使用者(目前不支援root使用者執行stack.sh)

cd /home/devstack/tools/
./create-stack-user.sh

修改devstack目錄許可權

chown -R stack:stack /home/devstack
chmod 777 /dev/pts/0

切換stack使用者

su stack
cd /home/devstack

7、進入/home/devstack目錄下,我們可以看到有如下檔案

[email protected]:/home/devstack$ ll
total 372
drwxr-xr-x 17 stack stack  4096 Jul 12 12:46 ./
drwxr-xr-x  4 root  root   4096 Jul 12 10:03 ../
drwxr-xr-x  9 stack stack  4096 Jul 12 12:46 accrc/
-rwxr-xr-x  1 stack stack  3306 Jul 12 10:03 clean.sh*
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 data/
drwxr-xr-x  3 stack stack  4096 Jul 12 10:03 doc/
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 driver_certs/
-rw-r--r--  1 stack stack   923 Jul 12 10:03 exerciserc
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 exercises/
-rwxr-xr-x  1 stack stack  1974 Jul 12 10:03 exercise.sh*
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 extras.d/
drwxr-xr-x  9 stack stack  4096 Jul 12 10:51 files/
-rw-r--r--  1 stack stack 24769 Jul 12 10:03 functions
-rw-r--r--  1 stack stack 73963 Jul 12 10:03 functions-common
-rw-r--r--  1 stack stack  3774 Jul 12 10:03 FUTURE.rst
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 gate/
drwxr-xr-x  8 stack stack  4096 Jul 12 10:03 .git/
-rw-r--r--  1 stack stack   330 Jul 12 10:03 .gitignore
-rw-r--r--  1 stack stack   109 Jul 12 10:03 .gitreview
-rw-r--r--  1 stack stack 14888 Jul 12 10:03 HACKING.rst
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 inc/
drwxr-xr-x  8 stack stack  4096 Jul 12 10:03 lib/
-rw-r--r--  1 stack stack 10143 Jul 12 10:03 LICENSE
-rw-rw-r--  1 stack stack  1726 Jul 12 11:34 local.conf
-rw-r--r--  1 stack stack  1738 Jul 12 12:32 .localrc.auto
-rw-r--r--  1 stack stack   340 Jul 12 10:03 .mailmap
-rw-r--r--  1 stack stack  1506 Jul 12 10:03 MAINTAINERS.rst
-rw-r--r--  1 stack stack  2489 Jul 12 10:03 Makefile
-rw-r--r--  1 stack stack  3822 Jul 12 10:03 openrc
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 pkg/
-rw-r--r--  1 stack stack    40 Jul 12 12:35 .prereqs
-rw-r--r--  1 stack stack  3795 Jul 12 10:03 README.md
-rwxr-xr-x  1 stack stack  1188 Jul 12 10:03 run_tests.sh*
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 samples/
-rw-r--r--  1 stack stack   481 Jul 12 10:03 setup.cfg
-rwxr-xr-x  1 stack stack   781 Jul 12 10:03 setup.py*
-rw-r--r--  1 stack stack   672 Jul 12 12:46 .stackenv
-rw-r--r--  1 stack stack 33564 Jul 12 10:03 stackrc
-rw-r--r--  1 stack stack  4908 Jul 12 12:45 stack-screenrc
-rwxr-xr-x  1 stack stack 40292 Jul 12 10:03 stack.sh*
drwxr-xr-x  2 stack stack  4096 Jul 12 10:03 tests/
drwxr-xr-x  4 stack stack  4096 Jul 12 10:03 tools/
-rw-r--r--  1 stack stack  1644 Jul 12 10:03 tox.ini
-rwxr-xr-x  1 stack stack  4204 Jul 12 10:03 unstack.sh*
-rw-r--r--  1 stack stack   396 Jul 12 12:38 userrc_early

  • stack.sh #自動化部署的入口;判斷是否存在localrc檔案; 否,進入互動模式; 是,進入配置模式(如果需要輸入輸入stack.sh需要的引數,如:資料庫的密碼、Rabbit MQ的密碼、Service TOKEN 等)
  • localrc  #配置檔案;傳入stack.sh的引數;nova部署在哪個節點,使用者名稱密碼是什麼
  • openrc   #環境變數指令碼;在執行openstack命令時要匯入一些環境變數 如:export OS_USERNAME = admin
  • unstack.sh #解除安裝指令碼
  • lib          #每個服務的自動化安裝指令碼;通常存放nova,swift等自動化安裝指令碼,手動安裝時執行的所有命令;每一個openstack服務對應一個檔案

8、一般情況下,我們需要在該目錄建立一個local.conf檔案,這裡面可以設定我們相關資訊:

例如git的源地址設定,Host IP設定,外部網路和私有網路的IP段設定,安裝元件的選擇及版本,相關密碼設定,日誌路徑設定等。

[[local|localrc]]

# 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

#OFFLINE=True
RECLONE=True

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

HOST_IP=192.168.27.128


# Credentials
DATABASE_PASSWORD=pass
ADMIN_PASSWORD=pass
SERVICE_PASSWORD=pass
SERVICE_TOKEN=pass
RABBIT_PASSWORD=pass

HORIZON_BRANCH=stable/mitaka
KEYSTONE_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
GLANCE_BRANCH=stable/mitaka
CINDER_BRANCH=stable/mitaka


#keystone
KEYSTONE_TOKEN_FORMAT=UUID

##Heat
HEAT_BRANCH=stable/mitaka
enable_service h-eng h-api h-api-cfn h-api-cw


## Swift
SWIFT_BRANCH=stable/mitaka
ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
SWIFT_REPLICAS=1
SWIFT_HASH=011688b44136573e209e


# Enabling Neutron (network) Service
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron

## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="192.168.27.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=192.168.27.102,end=192.168.27.110
PUBLIC_NETWORK_GATEWAY="192.168.27.2"
Q_L3_ENABLED=True
PUBLIC_INTERFACE=eth0
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex

# #VLAN configuration.
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True

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

9、接下來只需要在stack使用者下,執行./stack.sh即可

安裝完畢的效果



安裝時間估計20分鐘,在安裝之前也看了不少部落格介紹,devstack安裝可能不會一遍成功,果不出所料,我也是碰了N個坑才得以完成。

問題1:在安裝過程中經常出現如下錯誤

+functions-common:apt_get:1122 return 0
+tools/install_pip.sh:main:127 install_get_pip
+tools/install_pip.sh:install_get_pip:49 [[ -r /home/stack/devstack/files/get-pip.py ]]
+tools/install_pip.sh:install_get_pip:66 [[ ! -r /home/stack/devstack/files/get-pip.py ]]
+tools/install_pip.sh:install_get_pip:69 local timecond=
+tools/install_pip.sh:install_get_pip:70 [[ -r /home/stack/devstack/files/get-pip.py ]]
+tools/install_pip.sh:install_get_pip:74 curl -f –retry 6 –retry-delay 5 -o /home/stack/devstack/files/get-pip.py https://bootstrap.pypa.io/get-pip.py
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1488k 100 1488k 0 0 6489 0 0:03:54 0:03:54 –:–:– 23270
+tools/install_pip.sh:install_get_pip:77 touch /home/stack/devstack/files/get-pip.py.downloaded
+tools/install_pip.sh:install_get_pip:79 sudo -H -E python /home/stack/devstack/files/get-pip.py -c /home/stack/devstack/tools/cap-pip.txt
Collecting pip!=8 (from -c /home/stack/devstack/tools/cap-pip.txt (line 1))
/tmp/tmpfip0Vp/pip.zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
/tmp/tmpfip0Vp/pip.zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB)
24% |####### | 296kB 4.7kB/s eta 0:03:11Exception:
Traceback (most recent call last):
File “/tmp/tmpfip0Vp/pip.zip/pip/basecommand.py”, line 215, in main
status = self.run(options, args)
File “/tmp/tmpfip0Vp/pip.zip/pip/commands/install.py”, line 299, in run
requirement_set.prepare_files(finder)
File “/tmp/tmpfip0Vp/pip.zip/pip/req/req_set.py”, line 370, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File “/tmp/tmpfip0Vp/pip.zip/pip/req/req_set.py”, line 587, in _prepare_file
session=self.session, hashes=hashes)
File “/tmp/tmpfip0Vp/pip.zip/pip/download.py”, line 810, in unpack_url
hashes=hashes
File “/tmp/tmpfip0Vp/pip.zip/pip/download.py”, line 649, in unpack_http_url
hashes)
File “/tmp/tmpfip0Vp/pip.zip/pip/download.py”, line 871, in _download_http_url
_download_url(resp, link, content_file, hashes)
File “/tmp/tmpfip0Vp/pip.zip/pip/download.py”, line 595, in _download_url
hashes.check_against_chunks(downloaded_chunks)
File “/tmp/tmpfip0Vp/pip.zip/pip/utils/hashes.py”, line 46, in check_against_chunks
for chunk in chunks:
File “/tmp/tmpfip0Vp/pip.zip/pip/download.py”, line 563, in written_chunks
for chunk in chunks:
File “/tmp/tmpfip0Vp/pip.zip/pip/utils/ui.py”, line 139, in iter
for x in it:
File “/tmp/tmpfip0Vp/pip.zip/pip/download.py”, line 552, in resp_read
decode_content=False):
File “/tmp/tmpfip0Vp/pip.zip/pip/_vendor/requests/packages/urllib3/response.py”, line 353, in stream
data = self.read(amt=amt, decode_content=decode_content)
File “/tmp/tmpfip0Vp/pip.zip/pip/_vendor/requests/packages/urllib3/response.py”, line 320, in read
flush_decoder = True
File “/usr/lib/python2.7/contextlib.py”, line 35, in __exit__
self.gen.throw(type, value, traceback)
File “/tmp/tmpfip0Vp/pip.zip/pip/_vendor/requests/packages/urllib3/response.py”, line 242, in _error_catcher
raise ReadTimeoutError(self._pool, None, ‘Read timed out.’)
ReadTimeoutError: HTTPSConnectionPool(host=’pypi.python.org’, port=443): Read timed out.

解決:這是由於預設devstack在使用pip下載django框架,由於國外的源不穩定,經常會出現超時情況,所以建議使用國內的源,例如使用豆瓣源。

1、在root使用者根目錄建立.pip資料夾(前面有一個“.”)

2、進入.pip資料夾裡建立pip.conf檔案,輸入以下內容即可

[global]
trusted-host =  pypi.douban.com
index-url = http://pypi.douban.com/simple

問題2:該過程我沒有記錄,不過我印象中出現的錯誤無法解析images.trystack.cn

解決:這個問題好解決,直接ping images.trystack.cn獲得相關域名的IP地址,然後進入/etc/hosts,新增域名與IP的對應關係即可。

問題3:在demo租戶建立的虛擬機器,設定浮動IP,無法ping通。

解決:這個是我個人的低階錯誤,沒有留意demo組合的安全組,設定ICMP和SSH既可以ping通和SSH連結了。

如何實現重啟devstack後,還能正常訪問openstack?

1、如果你是物理機,在/home/devstack檔案下面有一個stack-screenrc

[email protected]:/home/devstack$ screen -c stack-screenrc
Cannot open your terminal '/dev/pts/33' - please check.

出現該問題,切換root使用者 chmod 777 /dev/pts/33後重新執行

2、如果你是虛擬機器,你會連虛擬機器的IP都無法連線。

因為eth0 橋接到br-ex 上面去了,而重啟後br-ex 沒有ip 配置,把eth0 從 br-ex 上去掉,或者手動通過ifconfig 給 br-ex 配置ip ,都可以解決問題。

當然,你也可以通過VMwork Station 建立一個快照,每次開啟只需要恢復到該快照就可以了,不然你會連虛擬機器的IP都無法連線上。

還有一種方式,就是將你的虛擬機器建立雙網絡卡,將控制網路和外部網路分開管理,也可以解決該問題。

參考文件:http://www.chenshake.com/openstack-project-series-3-devstack/

相關推薦

如何快速部署OpenStack環境——devstack專案

題記 每次只要提到部署OpenStack都是一件非常複雜的事情,當然很多人都會提及使用devstack來快速部署Openstack,一般我們都用Devstack部署開發環境,它可以實現在一臺機器上部署一個獨立版本同時包含主體元件的Openstack環境,一直以來我都沒有試過

使用Fuel 9.0快速部署Openstack Mitaka(其實也就用了五六個小時吧)

testing send onf perf nds 鍵盤 operation 如何 and 關於什麽是Fuel以及Fuel的作用和構架可以參考下面Openstack官方給出的Wiki鏈接. https://wiki.openstack.org/wiki/Fuel. 在安

在Ubuntu14 04上快速部署OpenStack

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Mirantis fuel 9.0 離線快速部署 Openstack Mitaka

      MOS 9.0是Mirantis公司開發 openstack自動化安裝工具,這個工具還有個專門的名字,叫做Fuel。 離線安裝時不需要更新Ubuntu和MOS包,即不需要網際網路連線。在同等網路頻寬情況下可以比線上安裝更快地部署。運氣不好的話,用線

Serverless Kubernetes容器服務中快速部署jenkins環境及執行流水線構建

本文主要演示如何在阿里雲Serverless Kubernetes服務上快速搭建jenkins持續整合環境,並基於提供的示例應用快速完成應用原始碼編譯、映象構建和推送以及應用部署的流水線。 先決條件:阿里雲Serverless Kubernetes叢集。 一 快速開始 1. 部署jenkins (1)

使用Docker快速部署ELK環境(最新5.5.1版本)

在Linux伺服器上安裝Docker以後,Pull相關的官方Docker映象: docker pull docker.elastic.co/elasticsearch/elasticsearch:5.5.1 docker pull docker.elast

Linux Ubuntu從零開始部署web環境專案 -----部署專案 (三)

1,打包專案包   2,上傳專案包 將.war專案包通過xftp上傳到tomcat目錄wabapps目錄下   3,啟動專案 通過xshell命令進入tomcat目錄下的bin目錄   輸入 :

Linux Ubuntu從零開始部署web環境專案-----搭建ssh環境(一)

linux搭建ssh環境 1,使用者登入     成功輸入使用者名稱和密碼後  進入Ubuntu介面  2,配置網路   參考:http://blog.csdn.net/liu782726344/a

Linux Ubuntu從零開始部署web環境專案 -----tomcat+jdk+mysql (二)

1,下載檔案  在官網下載好 tomcat、jdk、mysql的linux壓縮包 字尾名為.tar.gz   並通過xftp上傳到伺服器     或者直接通過linux命令 下在wget檔案的下載地址  例如: wget http://apache.fayea.com

Linux Ubuntu從零開始部署web環境專案 -----快捷鍵設定(四)

一、路徑快捷鍵設定  臨時快捷鍵設定:  執行XShel,輸入: alias 'aa=cd /etc/sysconfig'      aa:快捷鍵名稱    永久快捷鍵設定: 首先 輸入你想要設定的

kolla-ansible-----快速部署openstack

基本環境 作業系統:CentOS Linux release 7.5.1804 (Core) 核心版本:3.10.0-862.el7.x86_64 docker版本:1.13.1 1、禁用宿主機的 Libvirt 服務 大多數作業系統會預設啟動 Libvirt,但使用 Kolla 來部署 OpenS

DevstackOpenStack開發環境快速部署

    devstack是一套指令碼,可以快速部署OpenStack開發環境。它會自動執行所有服務的安裝指令碼,自動生成配置檔案 ,自動安裝依賴的軟體包,這個過程中,OpenStack的原始碼也會自動clone到本地。這次部署是在Ubuntu 15.04下進行的。    

CentOS7使用DevStack快速搭建OpenStack實驗環境

inf TE das 安裝過程 .org Opens 分享 dev open 安裝環境:centos7系統下安裝devstack 一、下載Ubuntu14或者Centos7安裝(實體機或者虛擬機都可以),建議選擇最小安裝鏡像即可。 二、安裝devstack   文檔

網上最新的devstack安裝教程【一鍵部署openstack測試環境

這段時間由於測試需要搭建openstack環境,搜遍谷歌百度進行不下30次嘗試...看了陳沙克等前輩的安裝教程,很多配置資訊都已經過期了。不過大致的步驟基本不變,由於最近devstack在github

Ubuntu16.04下使用Devstack快速安裝、部署Openstack

對於Openstack的初學者而言,除去看大量的官方文件瞭解整個Openstack架構外,還需要通過實踐,自己搭建Openstack平臺,用來學習,最後在使用的過程中,通過檢視原始碼不斷的解決遇到的問題。今天就和大家講下如何使用Devstack在Ubuntu16.04下搭建

openstack學習筆記(四)-使用devstack自動化部署openstack的實驗環境

devstack 是一套用來給開發人員快速部署Openstack開發環境的指令碼,其實對於整個安裝過程沒有什麼好說的,因為指令碼寫的很完善,安裝過程沒有難度,安裝的速度取決於自身的網路情況。 實驗環境:Ubuntu 14.04 LTS 64 1、安裝git

使用devstack快速安裝、部署openstack

關於openstack的學習今天終於進入正軌,開始學習如何搭建openstack環境,這件事在研究生第二年剛剛進入實驗室的時候做過,那個時候為了徹底瞭解opesntack整體架構,使用命令列原始碼安裝的方式。寫了很多筆記,但沒有同步到部落格上來,近期打算整理下,敬請期待。今

快速入門Openstack,無腦多節點部署Mitaka(1)--前期環境搭建準備

序言 openstack是什麼?官方的解釋:OpenStack is a cloud operating system that controls large pools of compute, storage, and networking reso

快速搭建OpenStack開發環境DevStack

官方參考文件:https://docs.openstack.org/developer/devstack/ 基本環境: 1. VMware+Ubuntu16.04-server.x86_64 2. DevStack應該使用非root使用者來執行,所以首先需要建立一個

6.25(openstack環境部署

enable 禁用selinux 兩種 ppi list med 本機 -s utf-8 安裝有轉發功能的DNSyum -y install bind bind-chrootvim /etc/named.confoptions {listen-on port 53 { 1