OpenStack(企业私有云)万里长征第四步——DevStack整体安装规划及使用
一、前言
前期成功通过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
虚拟机通信交换机的其他配置项以及管理网络的配置根据自己的需求进行相应设置。
三、服务器配置
选择ubuntu16.04版(目前DevStack对此版本支持较好),在安装软件环节选择虚拟host项。
启用root账户。
vim /etc/ssh/sshd_config
修改
PermitRootLogin prohibit-password
为
PermitRootLogin yes
- 修改阿里的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
- 创建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
- 修改豆瓣的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/
- 修改网络配置
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
其中网卡名称根据服务器配置而定。
- 进行ntp时间同步
只需安装ntp软件即可:
sudo apt-get install ntp
四、安装DevStack
4.1 下载及配置openstack
使用的是devstack newton版。具体部署过程也可以参考cloudman的视频http://cloudman.cc/。
- 下载
git clone https://git.openstack.org/openstack-dev/devstack -b stable/newton
下载完后,进入devstack目录,新建local.conf文件,根据节点的功能不同,分别写入不同配置,具体下面详细说明。
- 主节点配置
[[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
- 计算节点配置
[[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文件
此文件中的信息管理着当前节点的网络对应情况。
- 所有节点
将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 创建虚拟机
- 创建镜像
根据自己的需求下载相应的操作系统镜像,也可以直接使用DevStack中自带的cirros。如果是ubuntu的话需要下载cloud版(此处有全部对应版本)。下载完后点击Project下Compute下的Images中的Create Image,选择下载的文件,注意Fomat选择QCOW2。
- 创建虚机
在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整体安装规划及使用的更多相关文章
- OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(5):主流硬件支持、云快速交付 和 SLA 保证
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV
自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云(Hybrid cloud)支持 主流硬件支持.云快速交付 ...
- OpenStack 企业私有云的若干需求(4):混合云支持 (Hybrid Cloud Support)
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(10):OpenStack 的前景和钱景
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(2):自动扩展(Auto-scaling) 支持
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(6):大规模扩展性支持
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack 企业私有云的若干需求(9): 云管理平台 CMP
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
随机推荐
- 开涛spring3(6.7) - AOP 之 6.7 通知顺序
如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序.总共有两种情况:同一切面中通知执行顺序.不同切面中的通知执行顺序. ...
- click和blur事件冲突解决方案
场景:例如做一个模仿百度搜索的搜索框,输入文字下面会有匹配项,当点击下拉项中的值时,就将值添加到搜索框中同时隐藏下拉框,点击其他地方就直接隐藏下拉框,这时所需要的事件分别为 下拉框事件onclick, ...
- javascript的运行过程以及setTimeout的运行机制
关于javascript的运行机制大家都应该有所了解了吧,其实javascript是一个单线程的机制,但是因为队列的关系它的表现会让我们感觉是一个多线程的错觉.javascript在运行的时候是这样的 ...
- python基础操作_方法(函数)
#函数,方法#普通方法def hello(): print('hello')hello()#带形参的方法def hello1(name): print('hello%s'%name)hello1('布 ...
- typecho for SAE
url:http://cloudbbs.org/forum.php?mod=viewthread&tid=22817 typecho和wordpress差不多,目前使用的用户非常之多.这里分享 ...
- js事件循环
之前有看过一些事件循环的博客,不过一阵子没看就发现自己忘光了,所以决定来自己写一个博客总结下! 首先,我们来解释下事件循环是个什么东西: 就我们所知,浏览器的js是单线程的,也就是说,在同一时刻,最多 ...
- JavaBean自动生成get和set方法
用Myeclipse开发java web程序,写javabean的时候,如果字段很多的话,写get和set方法是一件很无语和浪费时间的事情,所以Myeclipse提供了一个自动生成这些方法的功能. ...
- JS语句
JS语句包括: 1.顺序语句 2.分支语句: if...else switch...case 3.循环语句 一.先看顺序语句: </body> < ...
- Linux命令 文件压缩及压缩命令
gzip [功能说明] 文件的压缩 #gizp属于GNU软件,总性能不错,是Linux系统首选的压缩工具,tar归档命令的-z参数也是利用gzip/gunzip来解压缩 [语法格式] Gip[选项][ ...
- 一篇文章带你快速入门createjs
开始用createjs这个框架的时候,发现网上的相关教程还是挺少的,所以写一篇文章,方便日后查看. createjs简介 官网:http://www.createjs.cc/ createjs中包 ...