目录
一、理论部分
- 了解Openstack的基本概念
- 了解Openstack的工作原理
- 了解Openstack主要组件的使用
(1)Openstack是什么
Openstack是一个云操作系统,控制着一个大规模(数据中心级别)的资源池,资源池包含计算、存储和网络。给管理员提供一个仪表盘去控制资源池里所有资源,最终用户可以通过web页面下发(获得)这些资源。
(2)云与操作系统
1、虚拟化与云计算
虚拟化是将物理资源分配给多个虚拟机,提高硬件资源利用率,重点在于分配物理资源的能力。云计算通过管理众多云虚拟机对外提供服务,重点在于提供服务。并且能够多租户之间隔离,按需使用、按量计费。
2、操作系统功能
云也被当成操作系统,因为它也提供了:资源抽象、资源分配与负载调度、应用的生命周期管理、系统运维及人机交互等。
(3)Openstack的定位
OpenStack只是云计算系统的控制面,为了构建一个云,我们还需要很多东西。
(4)openstack的设计理念
开放:1.开源。2.尽最大可能重用已有开源项目。
灵活:1.不使用任何不可替代的私有/商业组件(如华为云用GaussDB替代MySQL)。2.大量使用插件化方式进行架构设计与实现。
可拓展:1.由多个相互独立的项目组成。2.每个项目包含多个独立服务组件。3.无中心架构。4.无状态架构(高可用)。
(5)Openstack各主要项目间相互关系
在Dashboard[Horizon]上申请一台云虚拟机流程:Network[Neutron]提供网络,Block Storage[Cinder]提供卷,image[Glance]提供操作系统镜像(image不存储镜像,只存镜像目录,镜像实际存储在Object Storage[Swift]),然后交由Compute[Nova]创建虚拟机。在这个过程中Identity[Keystone]为各个独立的服务提供认证、鉴权服务
(6)Openstack各主要项目间相互关系
在Dashboard[Horizon]上申请一台云虚拟机流程:Network[Neutron]提供网络,Block Storage[Cinder]提供卷,image[Glance]提供操作系统镜像(image不存储镜像,只存镜像目录,镜像实际存储在Object Storage[Swift]),然后交由Compute[Nova]创建虚拟机。在这个过程中Identity[Keystone]为各个独立的服务提供认证、鉴权服务。
(7)Openstack部署
对于双机模式来说,可让vm流量和内部管理流量共一个网卡,故我们的实验环境为:
外网:ens33,即设置为nat模式的第一块网卡。
IP为192.168.1.x的设备。
内网:ens34(或ens37),即设置为仅主机模式的第二网卡。IP为20.0.0.x。
(8)计算组件nova
OpenStack中提供计算资源服务的项目
Nova负责:虚拟机生命周期管理,其他计算资源生命周期管理
Nova不负责:承载虚拟机的物理主机自身的管理,全面的系统状态监控
Nova是OpenStack事实上最核心的项目
API接收简单用户请求(开关虚拟机)->Compute(计算节点)处理请求,API接收复杂用户请求(创建虚拟机)->Conductor(指令器)->Scheduler(调度器)选择空闲的Compute->Conductor发送指令给Compute,Compute中实际执行指令的是Hypervisor(虚拟机监视器)。
(9)块存储服务组件cinder
为云平台提供统一接口,按需分配的,持久化的块存储服务。
核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行操作。
为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商在Cinder 中实现其驱动支持以与OpenStack进行整合。
(10)网络服务组件neutron
L2 Agent:二层网络服务,提供基础服务,部署在所有计算节点
L3 Agent:三层网络服务,提供IP、交换、路由服务,根据业务情况部署在网络节点或者计算节点,华为云部署在计算节点
DHCP Agent:DHCP服务
Adv Services:高级网络服务,如负载均衡
neutron组件之间通过消息队列通信
二、实验部分
需求描述
- 用脚本安装Openstack网络组件
实现思路
- 编辑Openstack环境变量脚本/etc/xiandian/openrc.sh正确设置外网和管理网的网卡和IP地址,配置必须的组件的帐户和登录密码,以及虚拟网络。
- 执行必须的组件对应的安装脚本。
1、卸载前面的安装的Openstack组件
#controller节点
执行在/usr/local/bin中的:
iaas-uninstall-all.sh
进行卸载
# compute节点
执行在/usr/local/bin中的:
iaas-uninstall-all.sh
进行卸载
2、设置主机名和网卡参数
#controller节点,执行:
hostnamectl set-hostname controller
查看:
/etc/sysconfig/network-scripts/ifcfg-ens*
(具体的网口)文件文件,确认有IP参数。
ctrl+d 退出 重新登陆
# compute节点,执行:
hostnamectl set-hostname compute
查看:
/etc/sysconfig/network-scripts/ifcfg-ens*
(具体的网口)文件文件,确认有IP参数。
ctrl+d 退出 重新登陆
3、重新安装并设置vsftpd服务
# controller节点
yum -y install vsftpd
vi /etc/vsftpd/vsftpd.conf
添加一行
anon_root=/opt/
systemctl start vsftpd
systemctl enable vsftpd
#compute节点
确认yum list可看到资源清单
4、重新设置环境变量
# controller节点:
yum install iaas-xiandian -y
vi /etc/xiandian/openrc.sh
#compute节点:
yum install iaas-xiandian -y
vi /etc/xiandian/openrc.sh
节点最后添加:
HOST_IP=20.0.0.10
HOST_NAME=controller
HOST_IP_NODE=20.0.0.20
HOST_NAME_NODE=compute
RABBIT_USER=openstack
RABBIT_PASS=000000
DB_PASS=000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
KEYSTONE_DBPASS=000000
GLANCE_DBPASS=000000
GLANCE_PASS=000000
NOVA_DBPASS=000000
NOVA_PASS=000000
NEUTRON_DBPASS=000000
NEUTRON_PASS=000000
METADATA_SECRET=000000
INTERFACE_NAME=ens33
Physical_NAME=provider
minvlan=101
maxvlan=201
CINDER_DBPASS=000000
CINDER_PASS=000000
TROVE_DBPASS=000000
TROVE_PASS=000000
BLOCK_DISK=sdb1
SWIFT_PASS=000000
OBJECT_DISK=sdc1
STORAGE_LOCAL_NET_IP=20.0.0.10
HEAT_DBPASS=000000
HEAT_PASS=000000
CEILOMETER_DBPASS=000000
CEILOMETER_PASS=000000
AODH_DBPASS=000000
AODH_PASS=000000
5、重新安装基本配置
# Controller节点和Compute节点
执行脚本进行安装:
iaas-pre-host.sh
# 安装完成后同时重启
[root@controller ~]# reboot
6、重新安装基础服务
# Controller节点
执行脚本进行安装:
iaas-install-mysql.sh
#compute节点
yum -y install MySQL-python
7、重新安装Keystone认证服务
# Controller节点
执行脚本进行安装:
iaas-install-keystone.sh
8、重新安装Glance镜像服务
# Controller节点
执行脚本进行安装:
iaas-install-glance.sh
上传镜像:
# source /etc/keystone/admin-openrc.sh (执行配置授权脚本)
# glance image-create --name "CentOS7.0" --disk-format qcow2 --container-format bare --progress < /opt/images/CentOS_6.5_x86_64_XD.qcow2
9、重新安装Nova计算服务
# Controller节点
执行脚本进行安装:
iaas-install-nova-controller.sh
# Compute节点
执行脚本进行安装
iaas-install-nova-compute.sh
(controller 安装完成再做)
验证服务时输入控制节点root的密码,如Aa123456789
10、安装Neutron网络服务
#Controller节点
执行脚本进行安装:
iaas-install-neutron-controller.sh
#Compute节点
执行脚本进行安装:
iaas-install-neutron-compute.sh
11、设置Neutron网络为vlan模式
#Controller节点
#openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vlan
#systemctl restart neutron-server
#openstack-config --set /etc/neutron/l3_agent.ini DEFAULT external_network_bridge br-ex
#systemctl restart neutron-l3-agent
12、创建Neutron网络的vlan
#Controller节点
#neutron net-create demo-net --tenant-id `openstack project list |grep -w admin |awk '{print $2}'` --provider:network_type vlan
13、重新安装Dashboard服务
#Controller
执行脚本iaas-install-dashboard.sh进行安装Controller节点
打开物理机网络设置,启用网络vmnet1,并设置其IP为20.0.0.1/24,确认可以ping 20.0.0.10后用浏览器访问dashboard,以admin/000000访问管理平台。
14、使用管理平台进行云子网设置
#在dashboard网页中
管理员 → 网络 → (demo-net) → 创建子网(外网填服务器的外网网段)→设置dhcp
15、安装Cinder块存储服务
#controller节点
执行在/usr/local/bin中的
iaas-install-cinder-controller.sh 进行安装
# compute节点
修改/etc/yum.repos.d/centos.repo
将两个IP改为管理IP:20.0.0.10
执行在/usr/local/bin中的
iaas-install-cinder-compute.sh 进行安装
16、安装Swift对象存储服务
#controller节点
执行在/usr/local/bin中的
iaas-install-swift-controller.sh 进行安装
# compute节点
执行在/usr/local/bin中的
iaas-install-swift-compute.sh 进行安装
需联机时,输入密码controller登录密码:Aa123456789
-----------------------------实验安装阶段结束---------------------------------------