之所以再重復一下,是因為踩坑的過程,希望能幫助有需要的人。
介紹:
宿主機win10,在vmware下創建兩台ubuntu16.04虛擬機,一台作為控制節點,一台作為計算節點,利用devstack部署openstack ocata。
前期工作:
1、下載ubuntu鏡像,我用的是ubuntu-16.04.3-server-amd64版本
2、下載vmware workstation,我用的是vmware workstation 11版本
3、下載xshell,用於ssh連接虛擬機,方便復制代碼
4、安裝完vmware后,點擊編輯,啟動虛擬網絡編輯器,選擇vmnet8,依次設置子網ip、子網掩碼、點擊NAT設置,修改網關為10.10.10.2(10.10.10.1默認分給宿主機)
安裝虛擬機:
作為控制節點的虛擬機至少分配40g磁盤空間,4g內存,處理器開啟虛擬化,網絡適配器設置NAT模式,再添加一個網絡適配器,設置為host-only模式;作為計算節點的虛擬機至少30g磁盤空間,2g內存,網絡適配器類似;然后啟動虛擬機,安裝操作系統。
開始搭建:(控制節點+計算節點)
1、安裝完畢,進入系統,切換到root用戶並設置密碼
sudo su
passwd root // 123456 123456
2、編輯sshd_config文件
vi /etc/ssh/sshd_config
將PermitRootLogin改為yes,保存退出。
重啟ssh服務
service ssh restart
問題1:沒有sshd_config文件,需要安裝openssh-server:
apt-get install openssh-server
問題2:vi編輯器無法編輯,需要安裝vim編輯器:
apt-get install vim
3、測試虛擬機能否ping通宿主機、能否ping通外網,測試宿主機能否ping通虛擬機,都可以的話利用xshell通過ssh連接虛擬機
4、ssh訪問成功后,查看網卡信息(ip a),編輯網卡信息
vi /etc/network/interfaces
替換掉原來的ens33、ens34信息(我的網卡名是ens33和ens34,將它們替換為你們的網卡名;這里我設置控制節點的ip為10.10.10.10,計算節點ip為10.10.10.11,大家隨意;網關設置為10.10.10.2,與前面虛擬網絡編輯器設置的一致就好)[ifconfig 沒有 第二個網卡名,雖然添加過第二個網絡適配器,配置也可以如下,重啟系統之后會出現,但是沒有ip...]
auto ens33
iface ens33 inet static
address 10.10.10.10
netmask 255.255.255.0
gateway 10.10.10.2
dns-nameserver 114.114.114.114
auto ens38
iface ens38 inet manual
保存退出,reboot重啟,輸入ip r查看ip是否改變,ping下外網是否可ping通,成功可進入下一步
5、換源,將apt源換為國內的源。
備份:cp /etc/apt/sources.list /etc/apt/sources.list.back
編輯:vi /etc/apt/sources.list
清空並替換為:
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-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
保存退出。
更新:
apt-get update
apt-get upgrade
6、pip安裝與升級
輸入pip檢測是否安裝pip,若沒有則輸入apt-get install python-pip安裝。
設置pip源:
mkdir ~/.pip
vi ~/.pip/pip.conf
添加
[global]
index-url = http://pypi.douban.com/simple/
trusted-host = pypi.douban.com
保存退出。
pip -V //查看版本
7、設定時間同步
設定時區:dpkg-reconfigure tzdata
選擇Asia -> 再選擇Shanghai -> OK
同步時間命令:
1、sudo apt-get install ntpdate // 安裝時間同步工具
2、sudo ntpdate cn.pool.ntp.org // 與網絡服務器同步時間
3、date // 查看時間是否已同步
8、安裝git:
apt-get install git
9、創建stack用戶:
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
切換到stack用戶:
sudo su - stack
重復步驟6,給stack用戶也布置pip源
10、下載devstack
cd /opt/stack
git clone https://github.com/openstack-dev/devstack -b stable/ocata
cd devstack
11、編輯local.conf文件
vim local.conf
添加如下內容:
控制節點:(HOST_IP改為你的控制節點ip,# Credentials 設置密碼,# Branches設置要裝的openstack版本)
控制節點
[[local|localrc]]
MULTI_HOST=true
#management & api network
HOST_IP=10.10.10.10
LOGFILE=/opt/stack/logs/stack.sh.log
#Credentials
ADMIN_PASSWORD=123456
MYSQL_PASSWORD=123456
RABBIT_PASSWORD=123456
SERVICE_PASSWORD=123456
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
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
LOG_COLOR=True
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen
#Branches
KEYSTONE_BRANCH=stable/ocata
NOVA_BRANCH=stable/ocata
NEUTRON_BRANCH=stable/ocata
SWIFT_BRANCH=stable/ocata
GLANCE_BRANCH=stable/ocata
CINDER_BRANCH=stable/ocata
#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,# Credentials 設置密碼,# Branches設置要裝的openstack版本)
[[local|localrc]]
MULTI_HOST=true
# management & api network
HOST_IP=10.10.10.11
# Credentials
ADMIN_PASSWORD=ztabtabz
MYSQL_PASSWORD=ztabtabz
RABBIT_PASSWORD=ztabtabz
SERVICE_PASSWORD=ztabtabz
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# Service information
SERVICE_HOST=10.10.10.10
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
#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
#Branches
KEYSTONE_BRANCH=stable/ocata
NOVA_BRANCH=stable/ocata
NEUTRON_BRANCH=stable/ocata
SWIFT_BRANCH=stable/ocata
GLANCE_BRANCH=stable/ocata
CINDER_BRANCH=stable/ocata
#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
12、安裝。
在stack用戶下,運行/opt/stack/devstack/stack.sh
等待1小時左右,如報錯(time out),一般是網速問題,重新運行stack.sh就好。
13、安裝完成
提示This is your ip 等等,代表安裝成功。
日志如下:
2019-11-25 08:09:20.778 | ++inc/meta-config:get_meta_section_files:66 [[ -r /opt/stack/devstack/local.conf ]]
2019-11-25 08:09:20.784 | ++inc/meta-config:get_meta_section_files:68 awk -v matchgroup=test-config '
2019-11-25 08:09:20.784 | /^\[\[.+\|.*\]\]/ {
2019-11-25 08:09:20.784 | gsub("[][]", "", $1);
2019-11-25 08:09:20.784 | split($1, a, "|");
2019-11-25 08:09:20.784 | if (a[1] == matchgroup)
2019-11-25 08:09:20.785 | print a[2]
2019-11-25 08:09:20.785 | }
2019-11-25 08:09:20.785 | ' /opt/stack/devstack/local.conf
=========================
DevStack Component Timing
=========================
Total runtime 966
run_process 57
test_with_retry 3
apt-get-update 3
pip_install 107
restart_apache_server 26
wait_for_service 16
git_timed 134
apt-get 11
=========================
This is your host IP address: 10.10.10.10
This is your host IPv6 address: ::1
Horizon is now available at http://10.10.10.10/dashboard
Keystone is serving at http://10.10.10.10/identity/
The default users are: admin and demo
The password: 123456
DevStack Version: ocata
Change: a70d84ceed38d6933176f42b6b3c2064e8d78c33 Fix rdo-release install 2019-09-17 07:01:25 +0000
OS Version: Ubuntu 16.04 xenial
14、瀏覽器輸入控制器ip,訪問openstack。
用戶名:admin,密碼:你設置的密碼。登陸后檢測下各服務是否都能正常訪問;最好做個快照,以防萬一。
注意: 虛擬機重啟后openstack服務不會自動運行,需要切換到devstack目錄下,輸入screen -c stack-screenrc 以手動啟動
由上圖可知,內存還是多分配點好,至少4G。
計算節點安裝成功
問題總結 建議先往下運行,最后遇到問題再來看怎么解決的。
1.ubuntu鏡像選擇
我剛開始是在desktop鏡像上進行安裝的,然后報了很多錯誤,最后也沒成功,雖然有一篇博客說,desktop和server都可以,但是我實踐的總結是desktop不好成功,因為我自己就卡在最后的一個504 Gateway Timeout上。因此,建議選擇ubuntu-16.04.6-server-amd64來安裝,鏡像還比較小。
2.克隆下載tempset卡住(其他cinder等也可以用此方法,最笨的辦法)
如果運行./stack.sh 過程中,下載tempset卡主超過10分鍾左右,建議ctrl+z,手動下載tempset。放置的目錄是/opt/stack,也就是和devstack同級。卡主的原因可能是由於執行過程中去devopenstack啥的地址下載,但是源修改了。
tempset下載
git clone https://github.com/openstack/tempest.git --branch stable/ocata
3.git fetch https://review.opendev.org/openstack/tempest refs/changes/71/645471/2 失敗
只能說建議,因為我用server鏡像沒出現這個問題,但是desktop鏡像出現了,可以嘗試先unstack.sh 再執行clean.sh(深度清理)。
4.出現You are using pip version 9.0.3, however version 19.1 is available.錯誤
系統提示使用pip進行upgrade,執行完成后安裝到相應版本,但是再次執行 ./stack.sh ,pip又恢復到9.0.3的版本,陷入死循環
問題出在/devstack/tools目錄下的cap-pip.txt文件中
# cap-pip.txt
pip!=8,<10
改為
pip!=8
升級
pip install --upgrade pip
# 查看
pip -V
如果查看版本遇到錯誤ImportError: cannot import name main,可以參考博客修改如下。
#!/usr/bin/python
# GENERATED BY DEBIAN
import sys
# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
5.ERROR: Package 'more-itertools' requires a different Python: 2.7.5 not in '>=3.4'
解決辦法 (建議不要升級python,2.7就夠了)
pip install more-itertools==5.0.0
6.計算節點安裝報錯 Didn’t find service registered by hostname after 120 seconds
錯誤信息
echo 'Didn'\''t find service registered by hostname after 120 seconds'
解決方法:
在local.conf中修改(就是添加 ENABLED_SERVICES placement-api)
ENABLED_SERVICES=n-cpu,q-agt,neutron,placement-api