一、前言

前期成功通过DevStack安装OpenStack,现将从机房规划到虚拟机搭建的整个过程总结如下,以供日后查阅或有需之人参考。

二、机房规划

这个整个安装过程的重点,能不能成功就看规划的如何。一旦此步有问题会导致整个安装失败,当然后续步骤操作过程中你也可以发现此步存在的问题,修改完善也可。

2.1 服务器规划

首先服务器按照性能划分功能。选择一台性能最好的服务器(内存足够大、CPU足够多、硬盘要求不高)用于控制节点。另选若干台性能一般的服务器用于计算节点。此外如果需要虚拟机之间共享存储的话可以选一些内存一般、CPU一般但是硬盘足够大或者挂载了磁盘阵列的服务器用于建立共享存储,一般选择ceph。

每台服务器至少包含两块网卡(如果考虑主备则为四块),最好是两块万兆,根据自己条件而定,没有万兆也可,此块与下部网络规划相对应。磁盘阵列需要的配置单独考虑。主节点需要多装一块网卡,用于与外部网络(此处的外网可以是互联网也可以是公司内部网络)进行通信。

2.2 网络规划

服务器选择好后规划网络,网络是整个机房规划的重点。至少需要两台交换机(如果考虑主备则需要四台),一台用于虚拟机之间的通信网络构建,一台用于宿主机之间的信息交换也称为管理网络和API网络。当然如果都是万兆交换机最好,否则可以将虚拟机之间的通信网路规划成万兆,管理网络规划成千兆,如果实在没有条件都做成千兆也可。并将外部网络从交换机接出一根线至主节点。

管理网络不需要特殊设置,只需要为每台服务器的对应网卡配上此网段固定IP即可。虚拟机之间通信网络对应的交换机需要进行设置,包含以下功能:1、设置vlan 1 至 100(100个足够了,如果不够可以设置的更大);2、所有端口设置成trunk模式,并允许所有vlan通过。

以h3c 6300为例,配置如下:

vlan 2 to 100
int range T 2/0/1 to T 2/0/32
port link-type trunk
port trunk permit vlan all

虚拟机通信交换机的其他配置项以及管理网络的配置根据自己的需求进行相应设置。

三、服务器配置

  1. 选择ubuntu16.04版(目前DevStack对此版本支持较好),在安装软件环节选择虚拟host项。

  2. 启用root账户。

vim /etc/ssh/sshd_config

修改

PermitRootLogin prohibit-password

PermitRootLogin yes
  1. 修改阿里的apt源。修改如下:
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-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  1. 创建stack用户
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo su - stack
  1. 修改豆瓣的pip源,root用户和stack用户均需修改,在root用户的根目录以及stack用户的根目录创建.pip文件夹,在此文件夹中新建pip.conf文件,写入以下内容:
[global]
index-url = https://pypi.douban.com/simple
download_cache = ~/.cache/pip
[install]
use-mirrors = true
mirrors = http://pypi.douban.com/
  1. 修改网络配置
vim /etc/network/interfaces

将管理网络设置成固定IP,并需要打开虚拟机内部通信网络以及主节点外部网络的相应网卡。设置内容大致如下:

# The loopback network interface
auto lo
iface lo inet loopback # The primary network interface
auto enp3s0f0
iface enp3s0f0 inet manual auto enp3s0f1
iface enp3s0f1 inet static
address 192.168.166.101
netmask 255.255.255.0
gateway 192.168.166.1
dns-nameservers 114.114.114.114

其中网卡名称根据服务器配置而定。

  1. 进行ntp时间同步

只需安装ntp软件即可:

sudo apt-get install ntp

四、安装DevStack

4.1 下载及配置openstack

使用的是devstack newton版。具体部署过程也可以参考cloudman的视频http://cloudman.cc/

  1. 下载
git clone https://git.openstack.org/openstack-dev/devstack -b stable/newton

下载完后,进入devstack目录,新建local.conf文件,根据节点的功能不同,分别写入不同配置,具体下面详细说明。

  1. 主节点配置
[[local|localrc]]

MULTI_HOST=true

# management & api network
HOST_IP=192.168.166.101
LOGFILE=/opt/stack/logs/stack.sh.log # Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=admin
RABBIT_PASSWORD=admin
SERVICE_PASSWORD=admin
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_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=10:100
PHYSICAL_NETWORK=default LOG_COLOR=True
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
  1. 计算节点配置
[[local|localrc]]

MULTI_HOST=true
# management & api network
HOST_IP=192.168.166.102 # Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=admin
RABBIT_PASSWORD=admin
SERVICE_PASSWORD=admin
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz # Service information
SERVICE_HOST=192.168.166.101
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 ENABLED_SERVICES=n-cpu,q-agt,neutron
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=10:100
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 # 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地址。主从节点分别按上述配置即可安装成功,注意先安装主节点再安装从节点。

4.2 修改/etc/neutron/plugins/ml2/ml2_conf.ini文件

此文件中的信息管理着当前节点的网络对应情况。

  1. 所有节点

physical_interface_mappings修改如下:

[linux_bridge]
physical_interface_mappings = default:enp130s0f1

其中enp130s0f1为当前节点虚拟机之间通信的网卡名称。

2、主节点

flat_networks修改如下:

[ml2_type_flat]
flat_networks = default,public,external

即添加external项,用于虚拟机访问外部网络。

physical_interface_mappings修改如下:

[linux_bridge]
physical_interface_mappings = default:enp130s0f1,external:enp3s0f0

其中enp3s0f0为主节点与外部网络相连的网卡的名称。即在计算节点的基础上添加此external项。

如此便完成了OpenStack的安装。

五、OpenStack使用

以下操作基本全部在Web管理界面进行。地址为主节点的ip地址,密码为主节点的配置项中设置的密码。

5.1 创建虚拟机网络

在Admin下的Networks中点击Create Network。按照如下配置新建网络。此处的vlan可随意设置,但需在第一步交换机配置的vlan范围内。

而后点击进入此网络创建Subnet。如下:

重复上述操作,创建足够自己使用的vlan网络。

5.2 创建router实现vlan间通信

在Project下Network下的Routers中点击Create Router创建路由,点击创建的router,进入详细信息,再点击Add Interface,选择刚刚创建的网络,重复添加接口,直到需要的vlan全部在此router中,这样就实现了需要的vlan之间相互通信。

5.3 创建外部网络,实现虚拟机访问外部网络

在Admin下的Networks中点击Create Network创建网络。与之前网络不同的是此处type选为flat,physical network设置为external(4.2中主节点修改项),勾选external network项。然后创建子网,ip地址即为外部的IP地址(必须一致),网关设置为外部网络网关。而后点击上面创建的router的set gateway选择此网络即可。这样便可实现虚拟机访问外部网络。

5.4 创建虚拟机

  1. 创建镜像

根据自己的需求下载相应的操作系统镜像,也可以直接使用DevStack中自带的cirros。如果是ubuntu的话需要下载cloud版(此处有全部对应版本)。下载完后点击Project下Compute下的Images中的Create Image,选择下载的文件,注意Fomat选择QCOW2。

  1. 创建虚机

在Project下Compute下的Instacnces中点击Launch Instance,选择创建的镜像和创建的网络以及需要的配置大小,便可完成虚拟机创建。可以测试虚拟机之间是否能够正常通信以及是否能够访问外网。

5.5 创建floating ip,实现外部访问虚拟机

点击Project下Compute下的Access & Security下的Floating IPs中的Allocate IP to Project,选择创建的外部网络,获取一个浮动IP,而后将此IP绑定到需要通过外部访问的虚拟机上。便可实现外部网络访问虚拟机。

5.6 设置Security Group解决ping不同的问题

通过上述步骤创建完网络虚拟机之后有时会发现外部无法ping通或者ssh虚拟机或访问虚拟机http端口等问题,这是由于OpenStack的安全规则造成的,点击Project下Compute下的Access & Security下的security groups为default组加上ingress 和egress的all tcp rule、all ICMP rule、以及all udp rule。

六、总结

以上是使用DevStack安装OpenStack及使用的完整步骤,整个机房除了刷墙、铺地板没有涉及,其他的基本都涉及到了。当你真的彻底彻底能够实操一遍,你会发现整个世界彻底清晰了,顿时豁然开朗,一切事都不再是事,更勿论再安装其他软件,都是洒洒水啦!OpenStack真的有如此魅力!

OpenStack(企业私有云)万里长征第四步——DevStack整体安装规划及使用的更多相关文章

  1. OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  2. OpenStack 企业私有云的若干需求(5):主流硬件支持、云快速交付 和 SLA 保证

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  3. OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  4. OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV

    自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云(Hybrid cloud)支持 主流硬件支持.云快速交付 ...

  5. OpenStack 企业私有云的若干需求(4):混合云支持 (Hybrid Cloud Support)

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  6. OpenStack 企业私有云的若干需求(10):OpenStack 的前景和钱景

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  7. OpenStack 企业私有云的若干需求(2):自动扩展(Auto-scaling) 支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  8. OpenStack 企业私有云的若干需求(6):大规模扩展性支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  9. OpenStack 企业私有云的若干需求(9): 云管理平台 CMP

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

随机推荐

  1. Ubuntu上配置SQL Server Always On Availability Group(Configure Always On Availability Group for SQL Server on Ubuntu)

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  2. .net 非对称加密

    后台   public class RSAHelper     {         /// <summary>         /// RSA加密         /// </sum ...

  3. 写给Android App开发人员看的Android底层知识(6)

    (十一)BroadcastReceiver BroadcastReceiver,也就是广播,简称Receiver. 很多App开发人员表示,从来没用过Receiver.其实吧,对于音乐播放类App,用 ...

  4. redis3.2.6 集群安装

    下载   [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# wget http://download.redis.io/rele ...

  5. spring 事务无效解决方法

    (原) spring 事务目前有二种,注解式和声明式,以前都是以公司里的框架写好的,没有学习的机会,今天抽空好好试了下,结果遇到好多问题. 1.注解式 最开始是这么玩的,发现数据进数据库了,没有起作用 ...

  6. 傻瓜式安装nginx以及负载均衡配置

    概述 需求 做了一个对内的http api应用.由于只有一台服务器,考虑到升级问题(即升级时会造成几秒钟用户访问不了),决定搭一个nginx,公共端口:9999,部署2套应用,端口:9981,9982 ...

  7. 数据库插入数据失败,log提示不能将值 NULL 插入列 'id'

    已经记不住具体的log信息了,意思就是ID如果没有设置为自增长的情况下就不能插入数据,而建表时ID字段是设置为"not null",所以就不能顺利插入数据. 解决方法有两种: ①建 ...

  8. 搭建Elasticsearch集群常见问题

    一.ES安装方法: Linux用户登录(bae),我们用的是5.3版本的包.从官网下载: curl -L -O https://artifacts.elastic.co/downloads/elast ...

  9. linux下mysql重置密码

    如果忘记mysql的root密码可以采取下面的步骤重新设置 1.kill掉所有mysql的进程 2.使用--skip-grant-tables的参数启动mysql shell> mysqld_s ...

  10. 创建对象的N种模式

    1 new Object() 先创建一个Object实例,然后为它添加属性和方法 var Person = new Object() Person.name = 'hl' Person.sayName ...