Openstack原理及应用
Openstack是什么
OpenStack是一个开源的云计算管理平台项目,它由几个主要的组件组合起来完成一些具体的工作,旨在提供基础设施即服务(IaaS)的解决方案。OpenStack既是一个社区,也是一个项目和开源软件,它提供了一个部署云的操作平台或工具集,可以帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云提供可扩展的、灵活的云计算。
云与操作系统
1、虚拟化与云计算
虚拟化是将物理资源分配给多个虚拟机,提高硬件资源利用率,重点在于分配物理资源的能力。
云计算通过管理众多云虚拟机对外提供服务,重点在于提供服务。并且能够多租户之间隔离,按需使用、按量计费。
2、操作系统功能
云也被当成操作系统,因为它也提供了:资源抽象、资源分配与负载调度、应用的生命周期管理、系统运维及人机交互等。
openstack的设计理念
OpenStack在当前的开源云计算系统领域非常流行,之所以如此风靡,与其设计理念密不可分。下面,我们就来了解一下OpenStack所秉持的设计理念,共三个方面:开放、灵活、可扩展。
开放(Open):
- 端到端的开源:从需求的收集、提交、架构的变更到代码,均开源
- 尽最大可能重用已有开源项目
灵活(Flexible):
- 不使用任何不可替代的私有/商业组件
- 大量使用插件化方式进行架构设计与实现
可扩展(Scalable):
- 由多个相互独立的项目组成
- 每个项目包含多个独立服务组件
- 无中心架构
- 无状态架构
Openstack工作原理
OpenStack架构是基于一系列相互协作的服务组件构建而成的。它采用了分布式架构,每个服务组件都可以独立运行,通过API进行通信和协作。以下是OpenStack架构的工作原理:
-
控制节点(Control Node):控制节点是OpenStack架构的中心,它包含了各种服务组件,如Nova(计算服务)、Glance(镜像服务)、Neutron(网络服务)等。控制节点负责接收用户请求、管理资源分配、监控系统运行等。
-
计算节点(Compute Node):计算节点是OpenStack架构中的计算资源提供者,它负责运行虚拟机实例、处理计算任务等。控制节点通过API向计算节点发送请求,计算节点接收请求后执行相应的操作。
-
存储节点(Storage Node):存储节点负责存储OpenStack架构中的数据和镜像。OpenStack支持多种存储后端,如Cinder(块存储服务)、Swift(对象存储服务)等。存储节点通过API接收用户的存储请求,并将数据存储在相应的存储后端中。
-
网络节点(Network Node):网络节点负责管理OpenStack架构中的网络资源,如虚拟网络、子网、路由等。Neutron服务是OpenStack中的网络服务组件,它负责实现虚拟机之间的通信、网络隔离、网络安全等功能。
-
API服务(API Service):API服务是OpenStack架构的接口层,它提供了一组RESTful API,用于控制节点与其他服务组件之间的通信和交互。用户可以通过API向OpenStack发送请求,管理虚拟机实例、存储资源、网络配置等。
总的来说,OpenStack架构的工作原理是通过各个服务组件之间的协作和通信,实现用户对云计算资源的管理和调度。控制节点作为架构的中心,负责协调各个服务组件的工作,确保系统的稳定和高效运行。计算节点、存储节点和网络节点则分别提供计算、存储和网络资源,满足用户对云计算服务的需求。API服务则提供了用户与OpenStack架构之间的接口,方便用户管理和操作云计算资源。
Openstack主要组件的使用
OpenStack的主要组件
Compute (Nova):提供云环境下虚拟机的创建、运行、管理等功能。
Object Storage (Swift):提供可扩展的分布式文件系统,用于存储大量的小文件或者中等大小的大文件,比如图片、视频、容器镜像等。
Block Storage (Cinder):提供块存储服务,允许用户创建持久化存储卷。
Networking (Neutron):提供网络虚拟化服务,允许用户创建私有和公共的网络。
Dashboard (Horizon):提供了一个基于web的用户界面,让用户可以管理他们的OpenStack资源。
Identity (Keystone):提供身份认证和授权服务,为其他组件提供认证信息。
Image Service (Glance):提供虚拟机镜像的存储、查询、检索服务。
Telemetry (Ceilometer):提供度量、监控和报告服务。
Orchestration (Heat):提供云应用模板服务,可以用于自动化应用部署。
Compute (Nova)
nova这一组件包含了许多的小组件,其中有API Server (nova-api)、Message Queue (rabbit-mq server)、Compute Workers (nova-compute)、Network Controller (nova-network)、Scheduler (nova-scheduler)、Conductor(nova-conductor)。
nova-api是一个交互接口,管理者可以通过这个接口来管理内部基础设施,也可以通过这个接口向用户提供服务。当然基于web的管理也是通过这个接口,然后向消息队列发送消息,达到资源调度的功能。
Rabbit-mq server是计算资源中的一个消息队列,为各个组件传达消息实现资源调度。
nova-compute是用于处理管理实例生命周期。通过消息队列接收请求,并承担操作工作。
nova-network相当于云计算系统内部的一个路由器,他承担了IP地址的划分以及配置VLAN和安全组的划分。
nova-scheduler是一个拥有把nova-API调用映射为Open Stack功能的组件,会根据诸如CPU构架、可用域的物理距离、内存、负载等作出调度决定。
nova-conductor负责数据库的访问权限控制,避免nova-compute直接访问数据库。
Block Storage (Cinder)
Cinder是一个可扩展、可靠和可用的块存储服务,它的主要功能包括:
-
1.卷管理:Cinder可以创建、删除、扩容和缩小卷。管理员可以通过API或者命令行接口创建卷,指定卷的大小、类型、名称和描述等信息。当需要扩容或缩小卷时,管理员可以通过API或命令行接口进行操作。
-
2.卷快照:Cinder支持卷的快照,即对现有卷的某个时刻的状态进行备份,可以用于数据的保护和还原。管理员可以通过API或命令行接口创建、删除和还原卷快照。
-
3.卷的迁移和复制:Cinder支持卷的迁移和复制,可以将卷从一个存储后端迁移到另一个存储后端,或者在同一个存储后端中复制卷。管理员可以通过API或命令行接口进行操作。
-
4.备份和还原:Cinder支持卷的备份和还原,可以将卷的数据备份到其他地方进行保护。管理员可以通过API或命令行接口创建、删除和还原卷的备份。
-
5.存储后端支持:Cinder支持多种存储后端,包括本地存储、iSCSI、NFS、Ceph、GlusterFS等,管理员可以根据需求选择和配置不同的存储后端。
-
6.多租户支持:Cinder支持多租户,可以为不同的租户提供独立的块存储服务,并且可以限制不同租户的配额和权限。
-
7.高可用性和容错性:Cinder具有高可用性和容错性,可以保证存储服务的可用性和数据的安全性。Cinder支持多副本和数据冗余,同时还支持故障转移和自动恢复。
-
8.网络互通性:Cinder可以与其他OpenStack组件进行交互,如Nova、Glance等,同时还支持API和命令行接口,可以方便地与其他系统进行集成。
实验案例:安装openstack各组件
需求描述
用脚本安装openstack网络组件
实现思路
编辑openstack 环境变量脚本/etc/xiandian/openrc.sh
正确设置外网和管理网的网卡和IP地址,配置必须的组件的帐户和登录密码,以及虚拟网络。
执行必须的组件对应的安装脚本。
练习
一、卸载前面的安装的Openstack组件
#controller节点
执行在/usr/local/bin中iaas-uninstall-all.sh进行卸载
# compute节点
执行在/usr/local/bin中的iaas-uninstall-all.sh进行卸载
二、设置主机名和网卡参数
#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 退出 重新登陆
二、设置主机名和网卡参数
#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 退出 重新登陆
四、重新设置环境变量
# 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
五、重新安装基本配置
# Controller节点和Compute节点
执行脚本iaas-pre-host.sh进行安装
# 安装完成后同时重启
[root@controller ~]# reboot
六、重新安装基础服务
# Controller节点
执行脚本iaas-install-mysql.sh进行安装
#compute节点
yum -y install MySQL-python
七、重新安装Keystone认证服务
# Controller节点
执行脚本iaas-install-keystone.sh进行安装
八、重新安装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
九、重新安装Nova计算服务
# Controller节点
执行脚本iaas-install-nova-controller.sh进行安装
# Compute节点
执行脚本iaas-install-nova-compute.sh进行安装(controller 安装完成再做)
验证服务时输入控制节点root的密码,如Aa123456789。
十、安装Neutron网络服务
#Controller节点
执行脚本iaas-install-neutron-controller.sh进行安装
#Compute节点
执行脚本iaas-install-neutron-compute.sh进行安装
十一、设置Neutron网络为vlan模式
#Controller节点
#openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vlan
#systemctl restart neutron-server (Compute节点安装完后执行)
#openstack-config --set /etc/neutron/l3_agent.ini DEFAULT external_network_bridge br-ex
#systemctl restart neutron-l3-agent
十二、创建Neutron网络的vlan
#Controller节点
#neutron net-create demo-net --tenant-id `openstack project list |grep -w admin |awk '{print $2}'` --provider:network_type vlan
十三、重新安装Dashboard服务
#Controller
执行脚本iaas-install-dashboard.sh进行安装Controller节点
打开物理机网络设置,启用网络vmnet1,并设置其IP为20.0.0.1/24,确认可以ping 20.0.0.10后用浏览器访问dashboard,以admin/000000访问管理平台。
十四、使用管理平台进行云子网设置
#在dashboard网页中
管理员 → 网络 → (demo-net) → 创建子网(外网填服务器的外网网段)→设置dhcp
相关参数如下页
十五、安装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进行安装
十六、安装Swift对象存储服务
#controller节点
执行在/usr/local/bin中的
iaas-install-swift-controller.sh进行安装
# compute节点
执行在/usr/local/bin中的
iaas-install-swift-compute.sh进行安装
需联机时,输入密码controller登录密码:Aa123456789