目标
本项目主要帮助学生掌握搭建OpenStack云计算平台的环境设计及系统,包括硬件基本需求,OpenStack云计算平台所需的软件包,部署一个实际的OpenStack云计算平台拓扑结构,并在这个环境下系统安装
通过本实训,你将能够巩固如下知识:
掌握构建云计算平台的系统拓扑结构
掌握系统拓扑结构下的网络配置
掌握正确配置搭建云计算平台的安装基础工作
掌握如何创建网络服务
了解Keystone、Cinder、Swfit的基本概念及用法
理解云平台中的Cinder云硬盘服务
通过监控服务,实时查看平台的运行情况
目录
第一章 需求分析 4
1.1 公司的基本组织结构 4
1.2 应用需求情况 4
1.3 服务需求 4
第二章 云平台系统架构设计 5
2.1 拓扑设计 5
2.2 系统架构设计 5
第三章 项目实施 7
3.1制作设备清单表 7
3.2 分配IP地址 7
3.3搭建实训环境 8
3.4基础环境配置 8
3.4.1修改主机名 8
3.4.2修改网络 8
3.4.3配置域名解析 10
3.4.4关闭防火墙及配置 10
3.4.5 更改安全策略 10
3.4.6挂载及yum配置 10
3.4.7 安装vsftpd服务 11
3.4.8部署脚本安装平台 11
3.5 Keystone安全认真服务配置 14
3.6 Neutron 网络服务配置 19
3.7 Glance 镜像服务配置 22
3.8 Nova 计算控制服务配置 23
3.9 Dashboard 图形界面安装 24
3.10 Cinder 块存储控制服务配置 25
3.11 Swift 对象存储控制服务配置 27
3.12 heat编排服务配置 28
3.13云主机 28
文献 30
(1) OpenStack官网 30
(2) OpenStack开源中国区 30
第一章 需求分析
经过调研,分析公司的基本情况如下:
1.1 公司的基本组织结构
内部有100名员工,其中50名为项目研发部(研发环境),45名为业务部(办公环境),3人IT工程部(运维环境)。
1.2 应用需求情况
按员工的办公情况不同,分别使用Centos7.2、Ubuntu、Windows7和Windows Server镜像作为办公使用;根据云存储特点,将镜像资源云硬盘存储于Swift内部,提升镜像的安全性;编写批量模板文件,可以短期快速部署集群;构建内部块存储和卷存储实现实例扩容和公司内部资源存储;根据企业员工的构成比例构建四种办公网络和四个租户组,保证单位内部资源隔离和资料安全;使用监控系统可以查看运行情况保证系统的正常稳定的运行,以及监测硬件平台的稳定。
1.3 服务需求
构建3个用户租户,100个用户,管理人员拥有管理员权限,其余人员拥有普通用户权限
构建4种不同类别镜像,镜像后端存储为Swift,满足企业正常的办公需求
构建云硬盘服务,保证资源的安全
创建3个用户租户网络,满足正常的办公需求
编写模板文件,定制云主机特性
运行监控系统,查看系统运行情况
第二章 云平台系统架构设计
根据收集到的资料进行需求分析,规划网络拓扑如下图所示。服务器管理网络192.168.20.0/24,外部网段192.168.120.0/24,实例私有网络172.16.20.0/24。
网络拓扑如3.1。
基于需求分析,依据OpenStack架构指南要求,构建一个通用性云平台,遵循IAAS模式,基于简单的需求为用户寻求最合适的平台。
2.1 拓扑设计
2.2 系统架构设计
根据设计的系统拓扑结构,将平台服务器做了拆分。控制节点(controller)安装如下服务:信息服务(QPID)、数据库服务(MySQL)、认证服务(Keystone)、镜像服务(Glance)、计算控制服务(Nova)、网络控制服务(Neutron)、控制台服务(Horizon)、块存储服务(Cinder)、对象存储服务(Swift)、编排服务(Heat)和监控服务(Ceilometer)。
计算节点(compute)安装如下服务:计算服务(Nova Compute)、网络控制服务(Neutron)、和监控服务(Ceilometer Compute)。
第三章 项目实施
120用户,每个用户2核CPU,内存4G,硬盘200G
CPU:1202=240核 CPU=240/64=5
内存:1204=480G
硬盘:120*200=24000G=24T
表3-1设备清单表
3.2 分配IP地址
服务器管理网络192.168.20.0/24,外部网段192.168.120.0/24,实例私有网络172.16.20.0/24。
3.3搭建实训环境
根据虚拟机网络环境,制作网络拓扑图。要求标出网络设备的虚拟机名称。网卡IP地址、网卡类型(物理网卡还是虚拟网卡),并给出网络环境清单。
表3-3实训设备清单表
3.4基础环境配置
3.4.1修改主机名
[root@localhost ~]# hostnamectl set-hostname controller01
[root@localhost ~]# bash
[root@controller01 ~]#
[root@localhost ~]# hostnamectl set-hostname compute01
[root@localhost ~]# bash
[root@compute01 ~]#
3.4.2修改网络
控制节点:
[root@localhost network-scripts]# vi ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=6cbc9c39-7535-4e05-b2d4-7df4a8ec8da9
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.20.10
NETMASK=255.255.255.0
[root@controoler01 network-scripts]#systemctl restart network
计算节点:
[root@localhost network-scripts]# vi ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=16bfe25f-4640-4ef6-9b4d-373728a155b0
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.20.20
NETMASK=255.255.255.0
[root@compute01 network-scripts]#systemctl restart network
3.4.5 更改安全策略
[root@controller01 ~]#vi /etc/selinux/config
SELINUX=permissive
[root@controller 01~]# getenforce 0
[root@controller 01~]#setenforce
Permissive
3.4.6挂载及yum配置
[root@controller01 yum.repos.d]# yum clean all
[root@controller01 yum.repos.d]# yum makecache
3.4.7 安装vsftpd服务
[root@controller01 ~]# yum install -y vsftpd
[root@controller 01~]#vi /etc/vsftp/vsftpd.conf
anon_root=/opt/
[root@controller 01~]#systemctl restart network
3.4.8部署脚本安装平台
[root@controller01 ~]# yum -y install iaas-xiandian
[root@controller01 xiandian]# cat openrc.sh
##--------------------system Config--------------------##
##Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.20.10
##Controller Server hostname. example:controller
HOST_NAME=controller01
##Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.20.20
##Compute Node hostname. example:compute
HOST_NAME_NODE=compute01
##--------------------Rabbit Config ------------------##
##user for rabbit. example:openstack
RABBIT_USER=openstack
##Password for rabbit user .example:000000
RABBIT_PASS=000000
##--------------------MySQL Config---------------------##
##Password for MySQL root user . exmaple:000000
DB_PASS=000000
##--------------------Keystone Config------------------##
##Password for Keystore admin user. exmaple:000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
##Password for Mysql keystore user. exmaple:000000
KEYSTONE_DBPASS=000000
##--------------------Glance Config--------------------##
##Password for Mysql glance user. exmaple:000000
GLANCE_DBPASS=000000
##Password for Keystore glance user. exmaple:000000
GLANCE_PASS=000000
##--------------------Nova Config----------------------##
##Password for Mysql nova user. exmaple:000000
NOVA_DBPASS=000000
##Password for Keystore nova user. exmaple:000000
NOVA_PASS=000000
##--------------------Neturon Config-------------------##
##Password for Mysql neutron user. exmaple:000000
NEUTRON_DBPASS=000000
##Password for Keystore neutron user. exmaple:000000
NEUTRON_PASS=000000
##metadata secret for neutron. exmaple:000000
METADATA_SECRET=000000
##External Network Interface. example:eth1
INTERFACE_NAME=eno33554984
##First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=
##Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=
##--------------------Cinder Config--------------------##
##Password for Mysql cinder user. exmaple:000000
CINDER_DBPASS=000000
##Password for Keystore cinder user. exmaple:000000
CINDER_PASS=000000
##Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb
##--------------------Trove Config--------------------##
##Password for Mysql Trove User. exmaple:000000
TROVE_DBPASS=000000
##Password for Keystore Trove User. exmaple:000000
TROVE_PASS=000000
##--------------------Swift Config---------------------##
##Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000
##The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb
##The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.20.10
##--------------------Heat Config----------------------##
##Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000
##Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000
##--------------------Ceilometer Config----------------##
##Password for Mysql ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000
##Password for Keystore ceilometer user. exmaple:000000
CEILOMETER_PASS=000000
##--------------------AODH Config----------------##
##Password for Mysql AODH user. exmaple:000000
AODH_DBPASS=000000
##Password for Keystore AODH user. exmaple:000000
AODH_PASS=000000
[root@controller01 bin]# iaas-pre-host.sh
[root@controller01 bin]#reboot
3.5 Keystone安全认真服务配置
[root@controller01 bin]# iaas-install-keystone.sh
[root@controller01 ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# openstack project create --domain demo ITgcb
[root@controller ~]# openstack project create --domain demo yfb
[root@controller ~]# openstack project create --domain demo ywb
openstack user create --project ITgcb --domain demo user01
openstack user create --project ITgcb --domain demo user02
openstack user create --project ITgcb --domain demo user03
openstack user create --project yfb --domain demo user04
openstack user create --project yfb --domain demo user05
openstack user create --project yfb --domain demo user06
openstack user create --project ywb --domain demo user07
openstack user create --project ywb --domain demo user08
openstack user create --project ywb --domain demo user09
openstack user create --project ywb --domain demo user10
[root@controller ~]# openstack user list
±---------------------------------±--------+
| ID | Name |
±---------------------------------±--------+
| 15a41f574150409bb1a54761a7a99dac | user05 |
| 2ffd6096ec084fa69f8dc07b74930e3d | user09 |
| 38e392e6fcc146599de101fb8786eafe | user01 |
| 3f19a861234442c4a3d29078306bdd10 | user03 |
| 4e6c4972ce86459e98ba02efdc946f23 | user07 |
| 5a7f06487e2e4006a86966c416da0d2d | user08 |
| 7c03b411dc424db0beecbdf773543340 | user02 |
| 7c4418ebcb86420e943f8af19efd6973 | user10 |
| 80dcab8cf16643a19b523e14ff233230 | admin |
| c33a5bf1636640909eaa0143fa636cb5 | nova |
| c700bb4f4b84497f96672c4fed1267c7 | user06 |
| d1966aaad09c41b6b7866d324fbcd816 | user04 |
±---------------------------------±--------+
图3.5-2 创建用户测试
研发部
[root@controller ~]# openstack group create --description 研发部 --domain demo yfb
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | 研发部 |
| domain_id | 3d56a9ff818046a98774f70896ed2204 |
| id | ad312998dafa4bdfacd6b0eee30c161f |
| name | yfb |
±------------±---------------------------------+
[root@controller ~]# openstack group create --description 业务部 --domain demo ywb
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | 业务部 |
| domain_id | 3d56a9ff818046a98774f70896ed2204 |
| id | 04e614235bd443da891c754dd21b1f0a |
| name | ywb |
±------------±---------------------------------+
[root@controller ~]# openstack group create --description IT工程部 --domain demo ITgcb
±------------±---------------------------------+
| Field | Value |
±------------±---------------------------------+
| description | IT工程部 |
| domain_id | 3d56a9ff818046a98774f70896ed2204 |
| id | 5cd2c24ae7ab40ceb5b8a82b90cb2a70 |
| name | ITgcb |
±------------±---------------------------------+
[root@controller ~]# openstack group add user ITgcb user01
[root@controller ~]# openstack group add user ITgcb user02
[root@controller ~]# openstack group add user ITgcb user03
图3.5-3 ITgcb组添加用户测试
[root@controller ~]# openstack group add user ywb user04
[root@controller ~]# openstack group add user ywb user05
[root@controller ~]# openstack group add user ywb user06
图3.5-4 ywb组添加用户测试
[root@controller ~]# openstack group add user yfb user07
[root@controller ~]# openstack group add user yfb user08
[root@controller ~]# openstack group add user yfb user09
[root@controller ~]# openstack group add user yfb user10
图3.5-5 yfb组添加用户测试
IT工程部成员给予admin权限
[root@controller ~]# openstack role add --group ITgcb admin
[root@controller ~]# openstack role add --user user01 admin
[root@controller ~]# openstack role add --user user02 admin
[root@controller ~]# openstack role add --user user03 admin
研发部成员给与user权限
[root@controller ~]# openstack role add --group ywb user
[root@controller ~]# openstack role add --user user04 user
[root@controller ~]# openstack role add --user user05 user
[root@controller ~]# openstack role add --user user06 user
业务部成员给与user权限
[root@controller ~]# openstack role add --user user07 user
[root@controller ~]# openstack role add --user user08 user
[root@controller ~]# openstack role add --user user09 user
[root@controller ~]# openstack role add --user use.xfs -i size=1024 -f /dev/$OBJECT_DISK
3.6 Neutron 网络服务配置
[root@controller01 bin]# iaas-install-neutron-contorller.sh
图3.6-1 创建实例通信网络
3.7 Glance 镜像服务配置
[root@controller01 bin]# iaas-install-glance.sh
[root@controller01 ~]# source /etc/keystone/admin-openrc.sh
图3.7-1 上传镜像cirros0.3.1
3.8 Nova 计算控制服务配置
[root@controller01 bin]# iaas-install-nova-controller01.sh
[root@controller01 bin]# iaas-install-nova-compute01.sh
[root@controller01 ~]# source /etc/keystone/admin-openrc.sh
图3.8-1 创建云主机类型
图3.8-3 yun3181添加TCMP、TCP、UDP规则
3.9 Dashboard 图形界面安装
[root@controller bin]# iaas-install-dashboard.sh
图3.9-1 dashboard图形界面测试
3.10 Cinder 块存储控制服务配置
[root@controller bin]# iaas-install-cinder-controller.sh
[root@controller bin]# iaas-install-cinder-compute.sh
[root@controller bin]# source /etc/keystone/admin-openrc.sh
图3.10-1 创建类型
3.11 Swift 对象存储控制服务配置
[root@controller ~]#iaas-install-swift-controller.sh
[root@controller ~]#iaas-install-swift-compute.sh
[root@controller ~]#source /etc/keystone/admin-openrc.sh
图3.11-1 创建对象存储容器并上传文件test.txt
3.12 heat编排服务配置
[root@controller bin]# iaas-install-heat.sh
图3.12-1 编排示意图
3.13云主机
[root@controller ~]# nova boot --flavor myflavor --image cirros0.3.1 --security-group sec-yun3181 --nic net-name=int-net test01
[root@controller ~]#neutron floatingip-create ext-net
[root@controller ~]#nova floating-ip-associate 192.168.120.102
图3.13-1 创建云主机
图3.13-2 云主机连接CRT
由于电脑配置原因,只能做一台计算结点,如果环境允许,可以多做几台计算结点。
文献
(1)OpenStack官网
http://www.openstack.org
https://wiki.openstack.org/wiki/main_page
(2)OpenStack开源中国区
http://www.oschina.net/question/tag/openstack