【Openstack】零基础用DevStack安装OpenStack(单机)

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过程中可能会提示错误,以下是解决方案:

           打开源文件,将所有以cdrom开头的代码(第二行)注释掉

            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)重启 openssh server

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. 配置网络结构,

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

【Openstack】零基础用DevStack安装OpenStack(单机)


总结: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节点,配置截图:

【Openstack】零基础用DevStack安装OpenStack(单机)

Computer节点,配置截图:

【Openstack】零基础用DevStack安装OpenStack(单机)

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

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

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

【Openstack】零基础用DevStack安装OpenStack(单机)

因为,我的电脑只有以太网卡可以设置为固定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)重启计算机

测试 ping baidu.com

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

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

二、部署openstack

1. 下载 devstack 代码,并切换到 stable/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

切换到 stack 用户

sudo su stack

cd devstack

3.  /opt/stack/devstack 目录下,创建 local.conf

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-v*n

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.分别在 devstack-controller 和 devstak-compute 上执行命令

./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.验证结果

输出各项操作的结果, 日志会写到 stack.sh.log 文件。 整个过程需要连接Internet,网速慢可能会花较长时间,成功后最后会打印出相关信息。