VirtualBox安装OpenStack
记录使用VirtualBox安装OpenStack的过程.
环境概述
- VirtualBox5.0
- CentOS7操作系统镜像
VirtualBox网络配置
菜单栏 管理
->全局设定
->网络
,选择 仅主机(Host-Only)网络
, 添加两个网络,网络分别设置为:
- 网络#2: IPv4地址:172.16.1.1, 掩码:255.255.255.0
- 网络#3: IPv4地址:10.0.0.1, 掩码:255.255.255.0
两个网络都没有启用DHCP服务器.
创建虚拟机
为了避免重复操作,先创建一台虚拟机,安装公共的软件后,再制作快照复制.
总共添加3块虚拟网卡, 第一块是选择桥接网络,另外两块分别选择上面创建的网络#2和#3
安装CentOS7系统
语言选择English,软件选择最小安装.
安装完毕后,停以下服务:
1 | # systemctl disable firewalld.service |
安装必要的包
最小安装缺少的常有命令:
1 | # yum install vim |
其中 net-tools
是为了使用 ifconfig
命令.bash-completion
是增强自动补全功能,可以补全子命令
配置网络
系统的3块网卡名分别是: enp0s3, enp0s8, enp0s9
桥接网络,dhcp获取的地址是192.168.1.1121
2
3
4
5
6
7
8
9
10
11# cat ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=enp0s3
UUID=3b6d6cd2-8309-438b-98a6-f03025c38c55
DEVICE=enp0s3
ONBOOT=yes
用于管理网络1
2
3
4
5
6
7
8
9
10
11
12# cat ifcfg-enp0s8
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes
IPADDR=10.0.0.11
PREFIX=24
用于虚机网络1
2
3
4
5
6
7
8
9
10
11
12# cat ifcfg-enp0s9
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=enp0s9
DEVICE=enp0s9
ONBOOT=yes
IPADDR=172.16.1.100
PREFIX=24
配置hostname为controller,并配置/etc/hosts
, 添加如下配置:
1 | # controller |
OpenStack安装
后面的操作主要就是参照 官方手册 一步步的执行,不再列出完整的过程.
其中配置文件的编辑部分比较繁琐,参考 陈沙克博客,使用openstack-config
命令完成
安装公共包
安装EPEL源1
# yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
安装OpenStack源1
# yum install centos-release-openstack-liberty
安装openstack客户端1
# yum install python-openstackclient
安装selinux工具1
# yum install openstack-selinux
更新系统1
# yum update
执行到此可以将虚机关机,并制作快照
复制虚拟机
复制虚拟机controller, 新的虚拟机用作计算节点, 名为compute01
继续安装Controller节点
参照文档以下的章节依次安装:
- 安装数据库
- 安装消息队列
- Add the Identity service,即keystone
- Add the Image service,即glance
- Add the Compute service, controller部分, nova
- Add the Networking service,即neutron
- Add the dashboard,即horizon
其中网络部分选择第一种,Provider networks
网络安装部分指定的网卡是 enp0s9
安装计算节点
计算节点虚机启动前可以更改一下配置,多分配一点内存和CPU.
安装包之前要先修改网络和Hostname配置.
计算节点的安装比较简单,主要就是nova和neutron的部分,参照文档执行即可.
OpenStack调试
创建网络
供应商网络类型选择Flat, 物理网络是public,网络地址是172.16.1.0/24
创建虚机
虚机中起虚机,速度感人,只能用cirros尝鲜.
遇到的问题
镜像上传失败
开始上传镜像时一直报错,日志显示是keystone调用出错,后来发现是自己配置错了,囧.
虚机创建失败
虚机创建时报错,”No valid host was found”, 开始以为是虚机的内存分的不够,更改了虚机配置后仍然报错.
查看计算节点的nova-compute日志, “libvirtError: invalid argument: could not find capabilities for domain type=kvm”,
感觉VirtualBox的虚机不支持kvm,按照网上说法,应该是从5.0版本已经开始支持kvm了,而且虚机的设置页面,系统硬件加速显示是支持KVM半虚拟化,但是就是不行. 最终只能使用qemu全虚拟化,更改计算节点的nova.conf
:
1 | [libvirt] |
重启服务后生效,虚机创建成功.
虚机网络不通
虚机启动后无法获取地址,手动配置地址后,和所在的计算节点可以互通,但是和管理节点不通.
在管理节点抓包,可以抓取到虚机发送的报文.
同时管理节点可以ping通dhcp-port,但是在计算节点上ping不通dhcp-port的地址.
现在不能确定是不是VirtualBox的虚拟网络问题,还是这个地址段的问题
google了一番, 参考这个博客 终于解决了.
主要是这里
Tip: it is important to enable Promiscuous mode on eth1, the data traffic interfaces on both compute and controller node. Without this setting packets will not reach from OpenStack tenant VMs (that will be started inside the compute node), to the OpenStack controller.
把对应的网卡设置,选择高级, 把 混杂模式
原来是”拒绝”改成”全部允许”