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 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值