之所以再重复一下,是因为踩坑的过程,希望能帮助有需要的人。
介绍:
宿主机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,若没有则输入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
保存退出。
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卡住
如果运行./stack.sh 过程中,下载tempset卡主超过10分钟左右,建议ctrl+z,手动下载tempset。放置的目录是/opt/stack,也就是和devstack同级。卡主的原因可能是由于执行过程中去devopenstack啥的地址下载,但是源修改了。
tempset下载
git clone https://github.com/openstack/tempest.git
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