前期成功經過DevStack安裝OpenStack,現將從機房規劃到虛擬機搭建的整個過程總結以下,以供往後查閱或有需之人蔘考。html
這個整個安裝過程的重點,能不能成功就看規劃的如何。一旦此步有問題會致使整個安裝失敗,固然後續步驟操做過程當中你也能夠發現此步存在的問題,修改完善也可。html5
首先服務器按照性能劃分功能。選擇一臺性能最好的服務器(內存足夠大、CPU足夠多、硬盤要求不高)用於控制節點。另選若干臺性能通常的服務器用於計算節點。此外若是須要虛擬機之間共享存儲的話能夠選一些內存通常、CPU通常可是硬盤足夠大或者掛載了磁盤陣列的服務器用於創建共享存儲,通常選擇ceph。linux
每臺服務器至少包含兩塊網卡(若是考慮主備則爲四塊),最好是兩塊萬兆,根據本身條件而定,沒有萬兆也可,此塊與下部網絡規劃相對應。磁盤陣列須要的配置單獨考慮。主節點須要多裝一塊網卡,用於與外部網絡(此處的外網能夠是互聯網也能夠是公司內部網絡)進行通訊。git
服務器選擇好後規劃網絡,網絡是整個機房規劃的重點。至少須要兩臺交換機(若是考慮主備則須要四臺),一臺用於虛擬機之間的通訊網絡構建,一臺用於宿主機之間的信息交換也稱爲管理網絡和API網絡。固然若是都是萬兆交換機最好,不然能夠將虛擬機之間的通訊網路規劃成萬兆,管理網絡規劃成千兆,若是實在沒有條件都作成千兆也可。並將外部網絡從交換機接出一根線至主節點。shell
管理網絡不須要特殊設置,只須要爲每臺服務器的對應網卡配上此網段固定IP便可。虛擬機之間通訊網絡對應的交換機須要進行設置,包含如下功能:一、設置vlan 1 至 100(100個足夠了,若是不夠能夠設置的更大);二、全部端口設置成trunk模式,並容許全部vlan經過。ubuntu
以h3c 6300爲例,配置以下:vim
vlan 2 to 100 int range T 2/0/1 to T 2/0/32 port link-type trunk port trunk permit vlan all
虛擬機通訊交換機的其餘配置項以及管理網絡的配置根據本身的需求進行相應設置。api
選擇ubuntu16.04版(目前DevStack對此版本支持較好),在安裝軟件環節選擇虛擬host項。安全
啓用root帳戶。bash
vim /etc/ssh/sshd_config
修改
PermitRootLogin prohibit-password
爲
PermitRootLogin yes
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
sudo useradd -s /bin/bash -d /opt/stack -m stack echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack sudo su - stack
[global] index-url = https://pypi.douban.com/simple download_cache = ~/.cache/pip [install] use-mirrors = true mirrors = http://pypi.douban.com/
vim /etc/network/interfaces
將管理網絡設置成固定IP,並須要打開虛擬機內部通訊網絡以及主節點外部網絡的相應網卡。設置內容大體以下:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp3s0f0 iface enp3s0f0 inet manual auto enp3s0f1 iface enp3s0f1 inet static address 192.168.166.101 netmask 255.255.255.0 gateway 192.168.166.1 dns-nameservers 114.114.114.114
其中網卡名稱根據服務器配置而定。
只需安裝ntp軟件便可:
sudo apt-get install ntp
使用的是devstack newton版。具體部署過程也能夠參考cloudman的視頻http://cloudman.cc/。
git clone https://git.openstack.org/openstack-dev/devstack -b stable/newton
下載完後,進入devstack目錄,新建local.conf文件,根據節點的功能不一樣,分別寫入不一樣配置,具體下面詳細說明。
[[local|localrc]] MULTI_HOST=true # management & api network HOST_IP=192.168.166.101 LOGFILE=/opt/stack/logs/stack.sh.log # Credentials ADMIN_PASSWORD=admin MYSQL_PASSWORD=admin RABBIT_PASSWORD=admin SERVICE_PASSWORD=admin 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_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 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
[[local|localrc]] MULTI_HOST=true # management & api network HOST_IP=192.168.166.102 # Credentials ADMIN_PASSWORD=admin MYSQL_PASSWORD=admin RABBIT_PASSWORD=admin SERVICE_PASSWORD=admin SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz # Service information SERVICE_HOST=192.168.166.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 ENABLED_SERVICES=n-cpu,q-agt,neutron Q_AGENT=linuxbridge ENABLE_TENANT_VLANS=True TENANT_VLAN_RANGE=10:100 PHYSICAL_NETWORK=default # 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=True 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
均爲當前主機管理網絡的IP地址,計算節點的SERVICE_HOST
項內容爲控制節點的管理網絡IP地址。主從節點分別按上述配置便可安裝成功,注意先安裝主節點再安裝從節點。
此文件中的信息管理着當前節點的網絡對應狀況。
將physical_interface_mappings
修改以下:
[linux_bridge] physical_interface_mappings = default:enp130s0f1
其中enp130s0f1爲當前節點虛擬機之間通訊的網卡名稱。
二、主節點
將flat_networks
修改以下:
[ml2_type_flat] flat_networks = default,public,external
即添加external項,用於虛擬機訪問外部網絡。
將physical_interface_mappings
修改以下:
[linux_bridge] physical_interface_mappings = default:enp130s0f1,external:enp3s0f0
其中enp3s0f0爲主節點與外部網絡相連的網卡的名稱。即在計算節點的基礎上添加此external項。
如此便完成了OpenStack的安裝。
如下操做基本所有在Web管理界面進行。地址爲主節點的ip地址,密碼爲主節點的配置項中設置的密碼。
在Admin下的Networks中點擊Create Network。按照以下配置新建網絡。此處的vlan可隨意設置,但需在第一步交換機配置的vlan範圍內。
然後點擊進入此網絡建立Subnet。以下:
重複上述操做,建立足夠本身使用的vlan網絡。
在Project下Network下的Routers中點擊Create Router建立路由,點擊建立的router,進入詳細信息,再點擊Add Interface,選擇剛剛建立的網絡,重複添加接口,直到須要的vlan所有在此router中,這樣就實現了須要的vlan之間相互通訊。
在Admin下的Networks中點擊Create Network建立網絡。與以前網絡不一樣的是此處type選爲flat,physical network設置爲external(4.2中主節點修改項),勾選external network項。而後建立子網,ip地址即爲外部的IP地址(必須一致),網關設置爲外部網絡網關。然後點擊上面建立的router的set gateway選擇此網絡便可。這樣即可實現虛擬機訪問外部網絡。
根據本身的需求下載相應的操做系統鏡像,也能夠直接使用DevStack中自帶的cirros。若是是ubuntu的話須要下載cloud版(此處有所有對應版本)。下載完後點擊Project下Compute下的Images中的Create Image,選擇下載的文件,注意Fomat選擇QCOW2。
在Project下Compute下的Instacnces中點擊Launch Instance,選擇建立的鏡像和建立的網絡以及須要的配置大小,即可完成虛擬機建立。能夠測試虛擬機之間是否可以正常通訊以及是否可以訪問外網。
點擊Project下Compute下的Access & Security下的Floating IPs中的Allocate IP to Project,選擇建立的外部網絡,獲取一個浮動IP,然後將此IP綁定到須要經過外部訪問的虛擬機上。即可實現外部網絡訪問虛擬機。
經過上述步驟建立完網絡虛擬機以後有時會發現外部沒法ping通或者ssh虛擬機或訪問虛擬機http端口等問題,這是因爲OpenStack的安全規則形成的,點擊Project下Compute下的Access & Security下的security groups爲default組加上ingress 和egress的all tcp rule、all ICMP rule、以及all udp rule。
以上是使用DevStack安裝OpenStack及使用的完整步驟,整個機房除了刷牆、鋪地板沒有涉及,其餘的基本都涉及到了。當你真的完全完全可以實操一遍,你會發現整個世界完全清晰了,頓時豁然開朗,一切事都再也不是事,更勿論再安裝其餘軟件,都是灑灑水啦!OpenStack真的有如此魅力!