openstark

第二章:环境设计和系统准备

理论:

本项目主要帮助读者掌握搭建 OpenStack 云计算平台的环境设计及系统准备,包括硬件基本需求,OpenStack 云计算平台的搭建所需的软件包,部署一个实际的 OpenStack 云计算平台拓扑结构,并在这个环境下进行系统安装基础工作。

1.项目需求分析

(1)基本概念
需求分析是指理解用户需求,就用户的功能需求与客户达成一致,并需要估计项目风险和评估项目代价,最终形成开发计划的一个复杂过程。在这个过程中,用户是处在主导地位的,需求分析工程师和项目经理要负责整理用户需求,为之后的项目设计打下基础。从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理等一系列需求工程。狭义上理解:需求分析指需求的分析、定义过程。
需求分析阶段结束后应该得到相应的需求分析报告。
(2)分析内容
需要分析的内容可以包含:公司应用需求、技术资金投入与生产效益、行业技术发展趋势,国家政策支持等。
(3)分析过程
需求分析阶段的工作,可以分为 4 个方面:问题识别、分析与综合、制订规格说明、评审。
(4)分析方法
需求分析的方法有很多。如原型化方法、结构化方法和动态分析法等。

2.系统架构设计

一个项目的系统架构设计一般是由系统架构设计师来负责完成的。对于系统架构设计师来说,其主要职责有如下 4 条。
(1)确认需求
在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户
需求。
(2)系统分解
依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
(3)技术选型
通过对系统的一系列的分解,架构师最终形成项目的整体架构。技术选择主要取决于项目架构。
架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会对项目预算、人力资源和时间进度等实际情况进行权衡,最终进行确认。
(4)制定技术规格说明
在项目开发过程中,架构师是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照他的架构意图去实现各项功能。
架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至最终用户保持沟通。所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。

3.环境说明

① 若教学环境有足够的可供学生使用的服务器,则每组分配 2 台服务器进行练习。
② 若教学环境没有服务器,可使用 PC 代替,每组分配 2 台 PC 进行练习(每台 PC
支持 CPU 虚拟化,双网卡,最低 4GB 内存,最低 100GB 硬盘)。
③ 若教学环境可供学生使用的服务器数量不够,可将所有服务器组建一个云平台,每组
学生分配 2 台虚拟机进行练习(每台虚拟机配置双网卡,最低 4GB 内存,最低 100GB 硬盘)。

操作:

1: OpenStack环境拓扑图

在这里插入图片描述

2:环境基本描述及配置要求

创建两台虚拟机
环境要求:CentOS-7 及 XianDian-2.2
配置要求:一块硬盘(容量20G及以上),两块网卡,一块仅主机模式,一块NAT模式

3:重命名主机名第一台虚拟机(控制节点):control

第一台虚拟机(控制节点):control

hostnamectl set-hostname control

第二台虚拟机(实例节点):computer

hostnamectl set-hostname computer

4:配置网卡

控制节点:
仅主机网卡配置:

cd /etc/sysconfig/network-scripts/ifcfg-eno16777736

找到BOOTPROTO=dhcp改成BOOTPROTO=static
找到ONBOOT=no改成ONBOOT=yes
并在末尾添加:

IPADDR=192.168.100.10
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=114.114.114.144

NAT网卡配置

cd /etc/sysconfig/network-scripts/eno33554984

找到BOOTPROTO=dhcp改成BOOTPROTO=static
找到ONBOOT=no改成ONBOOT=yes
并在末尾添加:

IPADDR=192.168.128.10
NETMASK=255.255.255.0
GATEWAY=192.168.128.10
DNS1=114.114.114.114

配置好后重启网卡

service network restart

实例节点:同控制节点相同,注意IP别重复

5:修改配置文件配置域名解析

进入配置文件并在末尾添加:

vi /etc/hosts
192.168.128.10     control
192.168.128.20     computer		

实例节点同控制节点相同

6:配置yum

首先要将1511和先电的iso文件上传到root目录下
删除所有默认yum源在创建一个本地yum源

rm -rf /etc/yum.repos.d/*
vi /etc/yum.repos.d/yum.repo 

添加以下内容

[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1

[openstack]
name=OpenStack
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1

创建挂载点文件

mkdir -p /opt/centos /opt/iaas/iaas-repo

挂载iso

echo "/root/CentOS-7-x86_64-DVD-1511.iso /opt/centos/ auto defaults 0 0
/root/XianDian-IaaS-v2.2.iso /opt/iaas/ auto defaults 0 0
" >> /etc/fstab

清理yum缓存并创建新的缓存

yum clean all 
yum makecache				

实例节点与控制节点一样

7:防火墙配置

关闭防火墙服务

systemctl stop firewalld

关闭防火墙开机自启

systemctl disable firewalld

关闭selinux

vi /etc/selinux/config
改SELINUX=enforcing为SELINUX=disabled

实例节点与控制节点相同

8:磁盘分区

关闭虚拟机添加一块20G的硬盘

打开虚拟机分区磁盘

[root@control ~]# fdisk /dev/sdb 

  
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xea6a6f15.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p

Partition number (1-4, default 1): 

First sector (2048-41943039, default 2048): 

Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G

Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): n

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
   
Select (default p): 
Using default response p

Partition number (2-4, default 2): 

First sector (20973568-41943039, default 20973568): 
Using default value 20973568

Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): 
Using default value 41943039

Partition 2 of type Linux and of size 10 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

格式化分好区的磁盘

[root@control ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=256    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@control ~]# mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2              isize=256    agcount=4, agsize=655296 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=2621184, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

实例节点与控制节点相同

9:安装软件

下载文件包

yum install -y iaas-xiandian

配置文件(配置环境变量)

/etc/xiandian/openrc.sh
##--------------------system Config--------------------##
##--------------------系统配置--------------------##

##控制器服务器管理器IP。示例:x.x.x.x
HOST_IP=192.168.128.10  #控制节点的NAT网卡IP地址

##控制器服务器主机名。示例:control
HOST_NAME=control		#控制节点主机名

##计算节点管理器IP。示例:x.x.x.x
HOST_IP_NODE=192.168.128.20  #实例节点NAT网卡IP地址

##计算节点主机名。示例:compute
HOST_NAME_NODE=computer		#实例节点主机名

##--------------------Rabbit Config ------------------##

##rabbit的用户。示例:openstack
RABBIT_USER=openstack

##rabbit用户的密码。示例:000000
RABBIT_PASS=000000

##--------------------MySQL Config---------------------##
##--------------------MySQL配置---------------------##
##MySQL根用户的密码.示例:000000
DB_PASS=000000

##--------------------Keystone Config------------------##
##--------------------密钥配置------------------##
##密钥库管理员用户的密码。示例:000000
DOMAIN_NAME=demo		#自定义(域)
ADMIN_PASS=000000		#用户密码
DEMO_PASS=000000

##Mysql密钥库用户的密码。示例:000000
KEYSTONE_DBPASS=000000

##--------------------Glance Config--------------------##
##--------------------浏览配置--------------------##
##Mysql glance用户的密码。 示例:000000
GLANCE_DBPASS=000000

##Keystore glance用户的密码。 示例:000000
GLANCE_PASS=000000

##--------------------Nova Config----------------------##
##Mysql nova 用户的密码 示例:000000
NOVA_DBPASS=000000

##Keystore nova 用户的密码。 示例:000000
NOVA_PASS=000000

##--------------------Neturon Config-------------------##
##--------------------Neturon配置-------------------##

##Mysql中子用户的密码。示例:000000
NEUTRON_DBPASS=000000

##密钥库中子用户的密码。示例:000000
NEUTRON_PASS=000000

##metadata secret for neutron. 示例:000000
METADATA_SECRET=000000

##外部网络接口。示例:eth1
INTERFACE_NAME=eno16777736		#仅主机模式的网卡名字

##Vlan网络的Vlan范围中的第一个Vlan ID。 示例:101
#minvlan=

##Vlan网络的Vlan范围中的最后一个Vlan ID。示例:200
#maxvlan=

##--------------------Cinder Config--------------------##
##Mysql cinder用户的密码。示例:000000
CINDER_DBPASS=000000

##Keystore cinder用户的密码。示例:000000
CINDER_PASS=000000

##Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1		#空白分区

##--------------------Trove Config--------------------##
##Mysql Trove 用户的密码。 示例:000000
TROVE_DBPASS=000000

##密钥存储库用户的密码。示例:000000
TROVE_PASS=000000

##--------------------Swift Config---------------------##
##--------------------Swift配置---------------------##

##密钥库swift用户的密码。 exmaple:000000
SWIFT_PASS=000000

##Swift的节点对象磁盘。示例:md126p4.
OBJECT_DISK=sdb2		#空白分区

##Swift存储网络的节点IP。示例.x.x.x.x
STORAGE_LOCAL_NET_IP=192.168.128.10		#控制节点的NAT网卡IP地址

##--------------------Heat Config----------------------##
##Mysql热用户的密码。示例:000000
HEAT_DBPASS=000000

##Keystore heat用户的密码。示例:000000
HEAT_PASS=000000

##--------------------Ceilometer Config----------------##
##Password for Mysql ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000

##Keystore ceilometer用户的密码。示例:000000
CEILOMETER_PASS=000000

##--------------------AODH Config----------------##
##--------------------AODH配置----------------##

##Mysql AODH用户的密码。示例:000000
AODH_DBPASS=000000

##密钥库AODH用户的密码。示例:000000
AODH_PASS=000000

10:部署脚本安装平台

初始化配置脚本
进入/usr/local/bin/执行脚本iaas-pre-host.sh
完成后重启两个设备:reboot
挂载iso镜像

mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos/
mount /root/XianDian-IaaS-v2.2.iso /opt/iaas/

在家目录执行以下命令:
1:控制节点

iaas-install-mysql.sh

2:控制节点

iaas-install-keystone.sh

3:控制节点

iaas-install-glance.sh

4:控制节点

iaas-install-nova-controller.sh

实例节点

iaas-install-nova-compute.sh

5:控制节点

iaas-install-neutron-controller.sh

实例节点

iaas-install-neutron-compute.sh		

6:控制节点

iaas-install-neutron-controller-gre.sh

注:此文件最后一行有错误需更改

vim /usr/local/bin/iaas-install-neutron-controller-gre.sh
改systemctl enabled neutron-lbaas-agent为systemctl enable neutron-lbaas-agent

改好后执行

systemctl enable neutron-lbaas-agent
systemctl start neutron-lbaas-agent

实例节点

iaas-install-neutron-compute-gre.sh

7:控制节点

iaas-install-dashboard.sh

8:控制节点

iaas-install-cinder-controller.sh

实例节点

iaas-install-cinder-compute.sh

9:控制节点

iaas-install-swift-controller.sh

实例节点

iaas-install-swift-compute.sh

10:控制节点

iaas-install-heat.sh

11:控制节点

iaas-install-ceilometer-controller.sh

实例节点

iaas-install-ceilometer-compute.sh

12:控制节点

iaas-install-alarm.sh

完成后进入web输入控制节点IP地址(NAT)并在后面添加/dashboard如:192.168.128.10/dashboard
在这里插入图片描述
出现登入页面后依次输入
域:demo 账号:admin密码:000000
在这里插入图片描述

第三章:认证服务

理论:

在OpenStack框架中,Keystone(OpenStack Identity Service)的功能是负责验证身份、校验服务规则和发布服务令牌的,它实现了OpenStack的Identity API。Keystone可分解为两个功能,即权限管理和服务目录。权限管理主要用于用户的管理授权。服务目录,类似一个服务总线,或者说是整个OpenStack框架的注册表。认证模块提供API服务、 token 令牌机制、服务目录、规则和认证发布等功能。

1.相关概念

(1)认证(Authentication)。
认证是确认允许一个用户访问的进程。为了确认请求,OpenStack Identity会为访问用户提供证书,起初这些证书是用户名和密码,或用户名和API key。当OpenStack Identity平台构建完毕,系统会创建_member_、admin两个用户权限,在系统中,_member_表示系统的普通用户的权限,拥有系统的正常使用和对当前项目的管理权限。admin角色是代表系统的管理员身份,对系统有绝对的管理权限。

2.认证服务流程

用户请求云主机的流程涉及认证Keystone服务、计算Nova服务、镜像Glance服务,在服务流程中,令牌(Token)作为流程认证传递,具体服务申请认证机制流程,如图:
在这里插入图片描述

操作:(任务一)

1.配置Keystone应用环境

Keystone服务安装完毕,可以通过请求身份令牌来验证服务

openstack  --os-project-name admin --os-domain-name demo --os-username admin --os-password 000000 --os-auth-url http://controller:35357/v3 token issue

2.管理认证用户

(1)创建用户
此命令创建了一个名字叫alice的用户,密码是mypassword123,邮箱是123@163.com

openstack user create alice --password mypassword123 --email 123@163.com  --domain demo 

创建用户命令的格式

openstack user create [--domain <domain>]
[--password <password>]
[--email <email-address>]
[--enable | --disable]

注:如发生以下情况报错
在这里插入图片描述
可以用此命令解决

source /etc/keystone/admin-openrc.sh

(2)创建项目
一个项目就是一个项目、团队或组织,当请求OpenStack服务时,你必须定义一个项目。例如,查询计算服务正在运行的云主机实例列表。
创建一个名为“acme”项目。

openstack project create --domain demo acme

创建项目的命令格式

openstack project create [--domain <domain>]
                              [--description <description>]
                              [--enable | --disable]
                               <project-name>

(3)创建角色
角色限定了用户的操作权限。例如,创建一个角色“compute-user”。

openstack role create compute-user

创建角色的命令格式

openstack role create <name>

(4)绑定用户和项目权限
添加的用户需要分配一定的权限,这就需要把用户关联绑定到对应的项目和角色。例如,给用户“alice”分配“acme”项目下的“compute-user”角色,命令如下。

openstack role add --user alice  --project acme  compute-user

绑定用户和项目权限的命令格式

openstack role add --user <user> --project <project> <role>

(5)图形化界面操作
以管理员身份登录到dashboard,进入“身份管理/项目”,可以看到项目(项目)列表,如图
在这里插入图片描述

操作(任务二)

在这里插入图片描述

1:创建项目

(1)通过图形化界面创建一个叫RD_Dept的项目
在这里插入图片描述
(2)通过命令行界面创建一个叫BS_Dept的项目

openstack project create "BS_Dept" --domain demo --description 业务部门

(3)通过脚本创建一个叫IT_Dept的项目

./Keystone-manage-project.sh

脚本内容

#!/bin/bash
if [  -f "/etc/keystone/admin-openrc.sh" ];then
        source /etc/keystone/admin-openrc.sh
else
env_path=`find / -name admin-openrc.sh`
        source $env_path
fi
    echo -e "\033[31mPlease Input new project name : eg (openstack)\033[0m "
        read New_Project_Name
if [ ! -n "$New_Project_Name" ];then
            echo -e "\033[31mProject Name Is Empty,Exit\033[0m "
            exit 1
        fi
    echo -e "\033[31mPlease Input project description : eg (openstack description)\033<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一、Virtual Box的安装 1、安装Virtual Box 2、 Virtual Box网络设定 3、 安装操作系统 二、 环境预配置 1、 网路设置 2、 分别修改三个虚拟机的主机名 3、 主机地址映射配置 4、 禁用selinux 5、 CentOS6本地yum源配置 注:先加载镜像 6、 NTP安装服务 三、 本地源制作 1. Centos6.6本地base、extra源制作 2. 本地base、extra源制作 3. 本地epel、openstack源制作 4. ftp服务安装 5. 修改yum源仓库指向文件 四、 keystone安装(上) 1. 安装Mysql服务 2. 安装rabbitmq消息队列 3. 为nova,neutron,cinder.heat创建用户并授权 五、 keystone安装(下) 1. 创建库和授权 2. 创建库和授权 3. 生成PKI认证所需要的证书文件 4. 同步keystone数据库,生成keystone所需的表 5. 启动keystone服务和校验服务状态 6. 创cron任务,配置定期清理过期的token 7. keystone创建user,tenant,role和endpoint 六、 Glance安装 1. Glance的安装 2. 配置glance-api服务 3. 配置glance-registry服务 4. 启动并校验glance服务 57 七、 Nova安装 59 1. nova的安装与配置 59 2. 安装和配置nova 60 八、 Neutron安装 63 1. neutron的安装与配置 63 2.Neutron使用二层组件 66 3. 配置OVS二层插件 67 4. 配置nova支持neutron 67 5. 启动neutron-server服务 68 6. 重启nova服务和neutron联动 69 7. 重启neutron-server 69 8. controller0上校验neutron的配置 69 九、 Horizon安装 71 1. Horizon组件的安装与配置 71 十、 Compute0安装nova 74 1. nova的安装与配置(compute0-10.20.0.30) 74 2. nova的安装与配置 75 十一、 Compute0安装neutron 78 1. neutron的安装与配置(compute0) 78 十二、 Network0安装neutron 83 1. neutron的安装与配置 83 十三、 新建网络 91 1. 配置安全组规则 91 2. 新建网络 92 3 .创建云主机 99 4 .分配浮动ip 101 十四、 心得体会 107

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值