OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作,但是安装OpenStack却不是很容易,尤其是它涉及的学科特别广泛,让许多初学者望而却步。安装openstack可以通过很多途径,但是可以使用DevStack来安装是业界最常用的方式。

但是我找了网上好多安装教程,写的都不太详细,不适合小白来学习,安装过程走了许多弯路,所以我写这个特别详细教程来从零安装openstack

以下是安装openstack的具体步骤:

一、环境搭建

1. 安装虚拟机管理器Vmware12.0

    去官网下载即可。

2. 安装Ubuntu 14.04 Serve;下面是下载链接:

https://www.ubuntu.com/download/alternative-downloads

使用默认NAT网络即可,其他按照默认值),另外,可能会出现安装失败的情况,可以多尝试几次。另外,需要安装两个虚拟机,分别是两个节点controller和computer,其拓扑结构和网络下面详细讲解。

3. 安装Xshell

    去官网下载即可。

4. 因为许多配置要通过终端配置,但是server自带的tty命令行模式不太好操作,所以最好通过Xshell远程登陆,但是LInux默认不允许SSH远程Root登陆,所以要开启SHH远程ROOT登陆。

(1) 在执行apt-get过程中可能会提示错误,以下是解决方案:

注释掉

sudo vi /etc/apt/sources.list

下载安装vim,用于编辑配置文件

sudo apt-get install vim

使用apt-get安装openssh server,用于支持远程登陆

sudo apt-get install openssh-server

         然后再执行上述命令即可。

    (2)安装完成后对openssh server配置

sudo vim /etc/ssh/sshd_config

   (3) 找到PermitRootLogin no一行,改为PermitRootLogin yes 

(4)重启

sudo service ssh restart

5. 配置好ssh服务后,查看本机ip,远程登陆。

Ifconfig 查看inet addr 的IP地址;

使用Xshell远程登陆虚拟机

以下操作均在Xshell下运行!!!

6. 更换为国内的镜像源

备份源文件:

cd  /etc/apt/

sudo cp sources.list sources.list.bak

打开镜像文件:

sudo vim sources.list

输入以下内容:

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted

更新源

sudo apt-get update

7. pip源地址也可以换为国内的豆瓣源

安装pip

sudo apt-get install python-pip -y

创建pip配置文件

sudo mkdir /root/.pip 
sudo vim /root/.pip/pip.conf

输入以下内容,没有配置文件可以创建:

[global] index-url = http://pypi.douban.com/simple/ 
trusted-host = pypi.douban.com

8. 配置网络结构,

首先介绍以下配置的网络结构:

heat安装 openstack 怎么安装openstack_IP


总结:controller节点的虚拟机有三块网卡分别是:eth0、eth1、eth2

Eth0:主要用于上网访问网络和用于内部管理,如服务之间的通信问题。

Eth1:OpenStack 部署的虚拟机所使用的网络。 OpenStack 支持多租户(Tenant),虚机是放在 Tenant 下的,所以叫 Tenant Network。

Eth2:一般来说,Tenant Network 是内部私有网络,只用于 VM 之间通信,与其他非 VM 网络是隔离的。 这里我们规划了一个外部网络(External Network),通过 devstak-controller 的 eth2 连接。 Neutron 通过 L3 服务让 VM 能够访问到 External Network。 对于公有云,External Network 一般指的是 Internet。 对于企业私有云,External Network 则可以是 Intranet 中的某个网络。

因此,eth0使用桥接网络,两个虚拟机配置不同的ip地址

Eth1使用NAT网络、eth2使用仅主机模式。

(1)配置固定IP

因为两个虚拟机中的eth0网卡需要使用桥接模式,所以主机最好使用固定ip;

固定IP的配置方法可自行百度,注意不要忘记配置DNS:

参考:https://jingyan.baidu.com/article/7908e85c7c1147af481ad237.html

(2)配置网卡

打开VMware - 相应的虚拟机-设置-添加-网络适配器-选择模式:

Controller节点,配置截图:


heat安装 openstack 怎么安装openstack_heat安装 openstack_02



Computer节点,配置截图:

heat安装 openstack 怎么安装openstack_heat安装 openstack_03


(3)设置桥接的连接模式:

编辑-网络编辑器-更改设置-桥接模式

桥接模式可选自动,或者选择上一步已经配置好固定ip的网卡:

heat安装 openstack 怎么安装openstack_IP_04


因为,我的电脑只有以太网卡可以设置为固定IP,所以这里我选择的是相应的网卡,谨记!

配置网卡后,重启虚拟机并查看网卡信息:

sudo reboot

ifconfig

(3)配置固定ip --以下操作可在系统tty1进行操作配置

注意:ubuntu14.04 网卡标志:eth0/1/2

      ubuntu16.04 网卡标志:ens 33/38/39

注意;在配置ubuntu16.04是,ifconfig查看网卡,只有一个网卡信息,等配置完所有信息后才全部显示

我实验室能用IP:115/116(computer/controller)

打开配置文件(记得配置完重启并ping一下)

sudo vim /etc/network/interface
Controller虚拟机节点:
# The loopback network interfaces
auto lo
iface lo inet loopback
# The primary network interface
 
auto eth0
iface eth0 inet static
address 192.168.0.*
netmask 255.255.255.0
gateway 192.168.*.*
dns-nameservers 202.112.144.30 202.112.144.236
 
auto eth1
iface eth1 inet manual
 
auto eth2
iface eth2 inet manual
 
computer虚拟机节点:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
 
auto eth0
iface eth0 inet static
address 192.168.0.119
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 202.112.144.30 202.112.144.236
 
auto eth1
iface eth1 inet manual

注意:此处的IP地址一定要和之前设置桥接模式时连接的网卡,在同一个网段,其他掩码、网关、DNS都与主机网卡的相同,注意要在主机上测试IP地址可用,避免被占用。

(4)重启计算机

测试

而且,保证两个虚拟机之间能够联通。

重启后,ip固定,以后操作可在xshell操作,也可以先配置固定ip,然后在配置其他设置。

二、部署openstack

1. 下载ocata分支

注意:分支ocata可以改,最新的版本是ocata

sudo apt-get install git -y

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

2.目前Devstack脚本已经不支持直接使用root身份运行,你需要创建stack用户运行

sudo devstack/tools/create-stack-user.sh

为方便起见,将devstack目录放到/opt/stack下,并设置权限

sudo mv devstack /opt/stack

sudo chown -R stack:stack /opt/stack/devstack

切换到

sudo su stack

cd devstack

3. 

vim local.conf

Controller节点配置文件内容:

[[local|localrc]]
MULTI_HOST=true
HOST_IP=192.168.0.116  # management & api network
LOGFILE=/opt/stack/logs/stack.sh.log
 
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
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=False
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
 
enable_service placement-api 
enable_service placement-client

 

Computer节点配置文件内容:

[[local|localrc]]
 
MULTI_HOST=true
HOST_IP=192.168.0.115 # management & api network
 
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
 
# Service information
SERVICE_HOST=192.168.0.119
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=False
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
 
enable_service placement-api 
enable_service placement-client

 

 

4.分别在

./stack.sh

问题总结:

(1)cp: cannot stat '/opt/stack/keystone/etc/policy.json': No such file or directory

解决方法:/opt/stack/keystone/etc/下有一个sample policy文件,把它复制一份命名为policy.json,然后重新跑stack.sh。另外,建议不是ocata版本,这个成功率较高

(2) Devstack 安装 openstack 时执行./stack.sh 时出现

[ERROR] ./stack.sh:227 If you wish to run this script anyway run with FORCE=yes

解决方法:  FORCE=yes ./stack.sh

(3)E: There are problems and -y was used without --force-yes

再试一次

(4)[ERROR] /opt/stack/devstack/inc/python:396 Can't find package systemd-python in requirements

目前无解

(5)建议用ocata版本,这个 成功率高。

Ocata版本,需要在/etc/nova/nova.conf中加入placement-api这个section,

对于devstack,需要在local.conf中加入下面两行:

enable_service placement-api 
enable_service placement-client

5.验证结果

输出各项操作的结果, 日志会写到