一、前言

前期成功通過DevStack安裝OpenStack,現(xiàn)將從機房規(guī)劃到虛擬機搭建的整個過程總結(jié)如下,以供日后查閱或有需之人參考。

二、機房規(guī)劃

這個整個安裝過程的重點,能不能成功就看規(guī)劃的如何。一旦此步有問題會導(dǎo)致整個安裝失敗,當(dāng)然后續(xù)步驟操作過程中你也可以發(fā)現(xiàn)此步存在的問題,修改完善也可。

2.1 服務(wù)器規(guī)劃

首先服務(wù)器按照性能劃分功能。選擇一臺性能最好的服務(wù)器(內(nèi)存足夠大、CPU足夠多、硬盤要求不高)用于控制節(jié)點。另選若干臺性能一般的服務(wù)器用于計算節(jié)點。此外如果需要虛擬機之間共享存儲的話可以選一些內(nèi)存一般、CPU一般但是硬盤足夠大或者掛載了磁盤陣列的服務(wù)器用于建立共享存儲,一般選擇ceph。

每臺服務(wù)器至少包含兩塊網(wǎng)卡(如果考慮主備則為四塊),最好是兩塊萬兆,根據(jù)自己條件而定,沒有萬兆也可,此塊與下部網(wǎng)絡(luò)規(guī)劃相對應(yīng)。磁盤陣列需要的配置單獨考慮。主節(jié)點需要多裝一塊網(wǎng)卡,用于與外部網(wǎng)絡(luò)(此處的外網(wǎng)可以是互聯(lián)網(wǎng)也可以是公司內(nèi)部網(wǎng)絡(luò))進行通信。

2.2 網(wǎng)絡(luò)規(guī)劃

服務(wù)器選擇好后規(guī)劃網(wǎng)絡(luò),網(wǎng)絡(luò)是整個機房規(guī)劃的重點。至少需要兩臺交換機(如果考慮主備則需要四臺),一臺用于虛擬機之間的通信網(wǎng)絡(luò)構(gòu)建,一臺用于宿主機之間的信息交換也稱為管理網(wǎng)絡(luò)和API網(wǎng)絡(luò)。當(dāng)然如果都是萬兆交換機最好,否則可以將虛擬機之間的通信網(wǎng)路規(guī)劃成萬兆,管理網(wǎng)絡(luò)規(guī)劃成千兆,如果實在沒有條件都做成千兆也可。并將外部網(wǎng)絡(luò)從交換機接出一根線至主節(jié)點。

管理網(wǎng)絡(luò)不需要特殊設(shè)置,只需要為每臺服務(wù)器的對應(yīng)網(wǎng)卡配上此網(wǎng)段固定IP即可。虛擬機之間通信網(wǎng)絡(luò)對應(yīng)的交換機需要進行設(shè)置,包含以下功能:1、設(shè)置vlan 1 至 100(100個足夠了,如果不夠可以設(shè)置的更大);2、所有端口設(shè)置成trunk模式,并允許所有vlan通過。

以h3c 6300為例,配置如下:

vlan 2 to 100int range T 2/0/1 to T 2/0/32port link-type trunk
port trunk permit vlan all

虛擬機通信交換機的其他配置項以及管理網(wǎng)絡(luò)的配置根據(jù)自己的需求進行相應(yīng)設(shè)置。

三、服務(wù)器配置

  1. 選擇ubuntu16.04版(目前DevStack對此版本支持較好),在安裝軟件環(huán)節(jié)選擇虛擬host項。

  2. 啟用root賬戶。

vim /etc/ssh/sshd_config

修改

PermitRootLogin prohibit-password

PermitRootLogin yes
  1. 修改阿里的apt源。修改如下:

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  1. 創(chuàng)建stack用戶

sudo useradd -s /bin/bash -d /opt/stack -m stackecho "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stacksudo su - stack
  1. 修改豆瓣的pip源,root用戶和stack用戶均需修改,在root用戶的根目錄以及stack用戶的根目錄創(chuàng)建.pip文件夾,在此文件夾中新建pip.conf文件,寫入以下內(nèi)容:

[global]index-url = https://pypi.douban.com/simpledownload_cache = ~/.cache/pip[install]use-mirrors = truemirrors = http://pypi.douban.com/
  1. 修改網(wǎng)絡(luò)配置

    vim /etc/network/interfaces

    將管理網(wǎng)絡(luò)設(shè)置成固定IP,并需要打開虛擬機內(nèi)部通信網(wǎng)絡(luò)以及主節(jié)點外部網(wǎng)絡(luò)的相應(yīng)網(wǎng)卡。設(shè)置內(nèi)容大致如下:

# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto enp3s0f0iface enp3s0f0 inet manualauto enp3s0f1iface enp3s0f1 inet staticaddress 192.168.166.101netmask 255.255.255.0gateway 192.168.166.1dns-nameservers 114.114.114.114

其中網(wǎng)卡名稱根據(jù)服務(wù)器配置而定。

  1. 進行ntp時間同步

只需安裝ntp軟件即可:

sudo apt-get install ntp

四、安裝DevStack

4.1 下載及配置openstack

使用的是devstack newton版。具體部署過程也可以參考cloudman的視頻http://cloudman.cc/。

  1. 下載

git clone https://git.openstack.org/openstack-dev/devstack -b stable/newton

下載完后,進入devstack目錄,新建local.conf文件,根據(jù)節(jié)點的功能不同,分別寫入不同配置,具體下面詳細說明。

  1. 主節(jié)點配置

[[local|localrc]]

MULTI_HOST=true# management & api networkHOST_IP=192.168.166.101
LOGFILE=/opt/stack/logs/stack.sh.log# CredentialsADMIN_PASSWORD=admin
MYSQL_PASSWORD=admin
RABBIT_PASSWORD=admin
SERVICE_PASSWORD=admin
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz# enable neutron-ml2-vlandisable_service n-net
enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron,q-lbaas,q-fwaas
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=10:100
PHYSICAL_NETWORK=default

LOG_COLOR=True
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen# use TryStack git mirrorGIT_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
  1. 計算節(jié)點配置

[[local|localrc]]MULTI_HOST=true# management & api networkHOST_IP=192.168.166.102# CredentialsADMIN_PASSWORD=adminMYSQL_PASSWORD=adminRABBIT_PASSWORD=adminSERVICE_PASSWORD=adminSERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz# Service informationSERVICE_HOST=192.168.166.101MYSQL_HOST=$SERVICE_HOSTRABBIT_HOST=$SERVICE_HOSTGLANCE_HOSTPORT=$SERVICE_HOST:9292Q_HOST=$SERVICE_HOSTKEYSTONE_AUTH_HOST=$SERVICE_HOSTKEYSTONE_SERVICE_HOST=$SERVICE_HOSTENABLED_SERVICES=n-cpu,q-agt,neutronQ_AGENT=linuxbridgeENABLE_TENANT_VLANS=TrueTENANT_VLAN_RANGE=10:100PHYSICAL_NETWORK=default# vnc configNOVA_VNC_ENABLED=TrueNOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"VNCSERVER_LISTEN=$HOST_IPVNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTENLOG_COLOR=TrueLOGDIR=$DEST/logsSCREEN_LOGDIR=$LOGDIR/screen# use TryStack git mirrorGIT_BASE=http://git.trystack.cnNOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.gitSPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git

其中HOST_IP均為當(dāng)前主機管理網(wǎng)絡(luò)的IP地址,計算節(jié)點的SERVICE_HOST項內(nèi)容為控制節(jié)點的管理網(wǎng)絡(luò)IP地址。主從節(jié)點分別按上述配置即可安裝成功,注意先安裝主節(jié)點再安裝從節(jié)點。

4.2 修改/etc/neutron/plugins/ml2/ml2_conf.ini文件

此文件中的信息管理著當(dāng)前節(jié)點的網(wǎng)絡(luò)對應(yīng)情況。

  1. 所有節(jié)點

physical_interface_mappings修改如下:

[linux_bridge]physical_interface_mappings = default:enp130s0f1

其中enp130s0f1為當(dāng)前節(jié)點虛擬機之間通信的網(wǎng)卡名稱。

2、主節(jié)點

flat_networks修改如下:

[ml2_type_flat]
flat_networks = default,public,external

即添加external項,用于虛擬機訪問外部網(wǎng)絡(luò)。

physical_interface_mappings修改如下:

[linux_bridge]physical_interface_mappings = default:enp130s0f1,external:enp3s0f0

其中enp3s0f0為主節(jié)點與外部網(wǎng)絡(luò)相連的網(wǎng)卡的名稱。即在計算節(jié)點的基礎(chǔ)上添加此external項。

如此便完成了OpenStack的安裝。

五、OpenStack使用

以下操作基本全部在Web管理界面進行。地址為主節(jié)點的ip地址,密碼為主節(jié)點的配置項中設(shè)置的密碼。

5.1 創(chuàng)建虛擬機網(wǎng)絡(luò)

在Admin下的Networks中點擊Create Network。按照如下配置新建網(wǎng)絡(luò)。此處的vlan可隨意設(shè)置,但需在第一步交換機配置的vlan范圍內(nèi)。

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

而后點擊進入此網(wǎng)絡(luò)創(chuàng)建Subnet。如下:

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

重復(fù)上述操作,創(chuàng)建足夠自己使用的vlan網(wǎng)絡(luò)。

5.2 創(chuàng)建router實現(xiàn)vlan間通信

在Project下Network下的Routers中點擊Create Router創(chuàng)建路由,點擊創(chuàng)建的router,進入詳細信息,再點擊Add Interface,選擇剛剛創(chuàng)建的網(wǎng)絡(luò),重復(fù)添加接口,直到需要的vlan全部在此router中,這樣就實現(xiàn)了需要的vlan之間相互通信。

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

5.3 創(chuàng)建外部網(wǎng)絡(luò),實現(xiàn)虛擬機訪問外部網(wǎng)絡(luò)

在Admin下的Networks中點擊Create Network創(chuàng)建網(wǎng)絡(luò)。與之前網(wǎng)絡(luò)不同的是此處type選為flat,physical network設(shè)置為external(4.2中主節(jié)點修改項),勾選external network項。然后創(chuàng)建子網(wǎng),ip地址即為外部的IP地址(必須一致),網(wǎng)關(guān)設(shè)置為外部網(wǎng)絡(luò)網(wǎng)關(guān)。而后點擊上面創(chuàng)建的router的set gateway選擇此網(wǎng)絡(luò)即可。這樣便可實現(xiàn)虛擬機訪問外部網(wǎng)絡(luò)。

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

5.4 創(chuàng)建虛擬機

  1. 創(chuàng)建鏡像

根據(jù)自己的需求下載相應(yīng)的操作系統(tǒng)鏡像,也可以直接使用DevStack中自帶的cirros。如果是ubuntu的話需要下載cloud版(此處有全部對應(yīng)版本)。下載完后點擊Project下Compute下的Images中的Create Image,選擇下載的文件,注意Fomat選擇QCOW2。

  1. 創(chuàng)建虛機

在Project下Compute下的Instacnces中點擊Launch Instance,選擇創(chuàng)建的鏡像和創(chuàng)建的網(wǎng)絡(luò)以及需要的配置大小,便可完成虛擬機創(chuàng)建??梢詼y試虛擬機之間是否能夠正常通信以及是否能夠訪問外網(wǎng)。

5.5 創(chuàng)建floating ip,實現(xiàn)外部訪問虛擬機

點擊Project下Compute下的Access & Security下的Floating IPs中的Allocate IP to Project,選擇創(chuàng)建的外部網(wǎng)絡(luò),獲取一個浮動IP,而后將此IP綁定到需要通過外部訪問的虛擬機上。便可實現(xiàn)外部網(wǎng)絡(luò)訪問虛擬機。

5.6 設(shè)置Security Group解決ping不同的問題

通過上述步驟創(chuàng)建完網(wǎng)絡(luò)虛擬機之后有時會發(fā)現(xiàn)外部無法ping通或者ssh虛擬機或訪問虛擬機http端口等問題,這是由于OpenStack的安全規(guī)則造成的,點擊Project下Compute下的Access & Security下的security groups為default組加上ingress 和egress的all tcp rule、all ICMP rule、以及all udp rule。

六、總結(jié)

以上是使用DevStack安裝OpenStack及使用的完整步驟,整個機房除了刷墻、鋪地板沒有涉及,其他的基本都涉及到了。當(dāng)你真的徹底徹底能夠?qū)嵅僖槐?,你會發(fā)現(xiàn)整個世界徹底清晰了,頓時豁然開朗,一切事都不再是事,更勿論再安裝其他軟件,都是灑灑水啦!OpenStack真的有如此魅力!


作  者:魏守峰 
Email:772920866@qq.com 

出處:http://www.cnblogs.com/shoufengwei/ 

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載、交流,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。如果覺得本文對您有益,歡迎點贊、歡迎探討。

http://www.cnblogs.com/shoufengwei/p/7154087.html