OpenStack基础环境部署(T版)

云计算

云计算概念

  • 狭义的云计算是指IT基础设施的交付和使用模式
  • 广义的云计算是指服务的交付和使用模式

云计算的定义

  • 云计算是一个模型,这个模型可以方便地按需访问一个可配置的计算资源(例如,网络、服务器、存储设备、应用程序以及服务)的公共集
  • 这些资源可以被迅速提供并发布,同时最小化管理成本或服务提供商的干涉
  • 云模型由五个基本特征、三个服务模型和四个发布模型组成,如此使以上成为可能

五种基本特征

  • 按需自助服务
    • 视客户需要,可以从每个服务提供商那里单方面地向客户提供计算能力,例如,服务器时间和网络存储,而这些是自动进行无需干涉的
  • 广泛的网络访问
    • 具有通过规范机制网络访问的能力,这种机制可以使用各种各样的瘦和胖客户端平台(例如,携带电话、笔记本电脑以及PDA)
  • 资源共享
    • 提供商提供的计算资源被集中起来通过一个多客户共享模型来为多个客户提供服务,并根据客户的需求,动态地分配或再分配不同的物理和虚拟资源。有一个区域独立的观念,就是客户通常不需要控制或者需要知道被提供的资源的确切的位置,但是可能会在更高一层的抽象(例如,国家、州或者数据中心)上指定资源的位置。资源的例子包括存储设备、数据加工、内存、网络带宽和虚拟机等
  • 快速的可伸缩性
    • 具有快速地可伸缩性地提供服务的能力。在一些场景中,所提供的服务可以自动地,快速地横向扩展,在某种条件下迅速释放、以及快速横向收缩。对于客户来讲,这种能力用于使所提供的服务看起来好象是无限的,并且可以在任何时间、购买任何数量
  • 可度量的服务
    • 云系统通过一种可计量的能力杠杆在某些抽象层上自动地控制并优化资源以达到某种服务类型(例如,存储、处理、带宽以及活动用户帐号)。资源的使用可以被监视和控制,通过向供应商和用户提供这些被使用服务报告以达到透明化

三种服务模型

  • SaaS 软件即服务
    • 客户所使用的服务商提供的这些应用程序运行在云基础设施上。这些应用程序可以通过各种各样的客户端设备所访问,通过客户端界面像WEB浏览器(例如,基于WEB的电子邮件)。客户不管理或者控制底层的云基础架构,包括网络、服务器、操作系统、存储设备,甚至独立的应用程序机能,在可能异常的情况下,限制用户可配置的应用程序设置
      • 直接通过互联网为用户提供软件和应用程序等服务
      • 面向对象一般是普通用户
  • PaaS 平台即服务
    • 客户使用云供应商支持的开发语言和工具,开发出应用程序,发布到云基础架构上。客户不管理或者控制底层的云基础架构,包括网络、服务器、操作系统或者存储设备,但是能控制发布应用程序和可能的应用程序运行环境配置
      • 把安装好开发环境的系统平台作为一种服务 通过互联网提供给用户
      • 面向对象一般是开发人员,软件工程师
  • IaaS 架构即服务
    • 向客户提供处理、存储、网络以及其他基础计算资源,客户可以在上运行任意软件,包括操作系统和应用程序。用户不管理或者控制底层的云基础架构,但是可以控制操作系统、存储、发布应用程序,以及可能限度的控制选择的网络组件(例如,防火墙)
      • 提供底层IT基础设施服务,包括处理能力,存储空间,网络资源等
      • 面向对象一般是IT管理人员

OpenStack

OpenStack简介

  • NASA(美国国家航空航天局)和Rackspace共同发起
  • 以Apache许可证授权的自由软件和开发源代码项目
  • 为公有云及私有云的建设与管理提供软件的开源项目
  • 覆盖了网络,虚拟化,操作系统,服务器等各个方面

OpenStack 是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构

OpenStack服务

服务项目名称描述
Compute(计算服务)Nova负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展
Network(网络服务)Neutron负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响
Identity(身份认证服务)Keystone类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制
Dashboard(控制面板服务)Horizon提供一个Web管理界面,与OpenStack底层服务进行交互
Image Service(镜像服务)Glance提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像
Block Storage(块存储服务)Cinder负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储
Object Storage(对象存储服务)Swift为OpenStack提供基于云的弹性存储,支持集群无单点故障
Telemetry(计量服务)Ceilometer用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径

OpenStack概念架构图

在这里插入图片描述
有全局组件,辅助组件,核心组件三部分组成

  • 全局组件提供认证,提供监控,可以在控制台上统一管理实例,OpenStack的各种功能。
  • 辅助/其他组件提供了一些必要的管理和资源服务,让我们更加便利的去管理 有裸金属,Trove数据库的一种服务,Heat Sahara涉及一些编排、数据处理。
  • 核心组件是维持虚拟机正常运行的组件,其核心是虚拟机,那么创建虚拟机就需要镜像资源、网络资源、存储资源这几个资源,nova组件向各个组件聚集资源过来,最后提供给虚拟机,以支持虚拟机的创建。

全局组件
keystone:为所有服务模块提供认证与授权
ceilometer:度量、监控所有数据资源
horizon :UI平台管理,提供一个web管理页面,与底层交互

外部辅助组件:
ironic 提供裸金属环境(没有操作系统的计算机硬件,简称裸机)
trove 提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara 提供对数据管理和编排

内部核心组件:
glance:提供镜像服务
neutron:提供网络服务
swift:提供对象存储资源
cinder:提供快存储资源
nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用

OpenStack逻辑架构图

在这里插入图片描述

组件

Horizon、keystone、ceilometer这几个是全局组件
Ironic、trove、heat、sahara这几个是辅助组件
Swif 、nova、cinder、galnce、neutron是核心组件

对接与通信

组件之间是依靠api来对接的,由消息代理rabbitmq来作为载体去承载中间消息和数据传输。

单个服务内部,有很多的子功能模块,子功能模块之间通讯

一般来说,对单个组件而言它的api不负责做具体的事,它所负责的是分发任务,接收请求,并且把返回结果返回的数据响应给客户端,它会把接收到的请求交由keystone去认证鉴权(预处理),认证鉴权成功后才会把请求分发给自己内部的各个组件进行处理

以nova为例,Nova是管理实例的生命周期,以nova-api作为统一的交互入口,而内部组件有很多内部组件去做具体的事务处理,具体的任务处理

Openstack环境部署

服务器准备

1、控制节点ct(controller)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:30G+300G(CEPH块存储)
双网卡:VM1-(局域网)192.168.100.11  NAT-20.0.0.11
操作系统:Centos 7.6(1810)-最小化安装
 
2、计算节点c1(compute01)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:30G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.100.12  NAT-20.0.0.12
操作系统:Centos 7.6(1810)-最小化安装
 
3、计算节点c2(compute02)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:30G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.100.13  NAT-20.0.0.13
操作系统:Centos 7.6(1810)-最小化安装
PS:最小内存6G

部署centos7.6操作系统
先开启VMnet1,后添加NAT网卡,开启虚拟化(注意顺序对应)
在这里插入图片描述

在安装过程中设置
选择Install CentOS 7
按tab键,输入命令net.ifnames=0 biosdevname=0 

以最小化安装
在这里插入图片描述
安装好后设置网卡 三台同样的步骤
eth0
在这里插入图片描述
eth1
在这里插入图片描述
查看网络联通性
在这里插入图片描述
三台服务器关闭防火墙

[root@ct ~]# systemctl stop firewalld
[root@ct ~]# setenforce 0
[root@ct ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@ct ~]# grep -v "#" /etc/selinux/config

SELINUX=disabled
SELINUXTYPE=targeted 

在这里插入图片描述

设置免交互

三台节点上都需要配置

[root@ct ~]# vi /etc/hosts

192.168.100.16  ct
192.168.100.17  c01
192.168.100.18  c02

在这里插入图片描述

[root@ct ~]# ssh-keygen -t rsa   #生成密钥
[root@ct ~]# ssh-copy-id ct  #公钥传递
[root@ct ~]# ssh-copy-id c01
[root@ct ~]# ssh-copy-id c02

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
身份验证

[root@ct ~]# ssh root@c01
Last login: Thu Jan 28 22:25:58 2021
[root@c01 ~]# exit
登出
Connection to c01 closed.
[root@ct ~]# ssh root@c02
Last login: Thu Jan 28 22:26:20 2021
[root@c02 ~]# exit
登出
Connection to c02 closed.

在这里插入图片描述
在c01上验证
在这里插入图片描述
在c02上验证
在这里插入图片描述

安装基础环境依赖包

[root@ct ~]# yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre pcre-devel expat-devel cmake bzip2 

net-tools   可以使用ifconfig命令
bash-completion 自动补全
pcre  正则 devel库
expat-devel:Apache依赖包,C语言开发,解析XML文档的开发库

[root@controller ~]# yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
#注意多装几遍此命令

centos-release-openstack-train 保证安装更新openstack版本为最新版本t版

python-openstackclient  openstack的python客户端
因为openstack中的API大多数是python编写的,并且连接数据库,也需要python

openstack-selinux openstack核心安全防护

openstack-utils    openstack其它util工具

设置时间同步

安装同步软件
三个节点上

[root@ct ~]# yum -y install chrony

在控制节点上设置为同步源

[root@ct ~]# vi /etc/chrony.conf
server ntp.aliyun.com iburst  #设置为时间同步源
allow 192.168.100.0/24        #为192.168.100网段提供时间同步

[root@ct ~]# systemctl restart chronyd
[root@ct ~]# systemctl enable chronyd
[root@ct ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    17    18  +2477us[+4815us] +/-   24ms

在这里插入图片描述
在这里插入图片描述
在计算节点c01、c02上

[root@c01 ~]# vi /etc/chrony.conf
server ct iburst #设置时间同步源为控制节点
allow 192.168.100.0/24         #为192.168.100网段提供时间同步


在这里插入图片描述
在这里插入图片描述

设置任务计划

三个节点上设置

[root@ct ~]# crontab -e
*/30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log
分钟小时日期月星期                      追加  日志文件

no crontab for root - using an empty one
crontab: installing new crontab
[root@ct ~]# date

在这里插入图片描述
在这里插入图片描述

配置系统环境

配置服务(控制节点ct上)
安装,配置MariaDB

[root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL
#此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端

[root@ct ~]# yum -y install libibverbs #底层库文件

[root@ct ~]# vi /etc/my.cnf.d/openstack.cnf       #设置mysql配置文件
[mysqld]
bind-address=192.168.100.16  #控制节点局域网地址(绑定内网地址)本地数据库节点ip
default-storage-engine=innodb  #默认存储引擎
innodb_file_per_table=on      #每张表独立表空间文件(文件存储空间)
max_connections=4096      # 最大连接数    
collation-server=utf8_general_ci   #默认字符集(不区分大小写)
character-set-server=utf8  #字符集utf8_bin区分大小写

[root@ct ~]# systemctl enable mariadb  #自启动数据库
[root@ct ~]# systemctl start mariadb   #开启数据库服务
[root@ct ~]# mysql_secure_installation   #数据库初始化设置
[root@ct ~]# mysql -uroot -p123123    #测试登录数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
安装RabbitMQ消息队列

[root@ct ~]# yum -y install rabbitmq-server
[root@ct ~]# systemctl enable rabbitmq-server
[root@ct ~]# systemctl start rabbitmq-server
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details. #出现这个错误
[root@ct ~]# systemctl status rabbitmq-server

在这里插入图片描述
解决
在配置openstack的基础环境时,安装完RabbitMQ,创建消息队列用户时,不可以创建

[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Error: unable to connect to node rabbit@ct: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@ct]

rabbit@ct:
  * unable to connect to epmd (port 4369) on ct: address (cannot connect to host/port)


current node details:
- node name: 'rabbitmq-cli-17@ct'
- home dir: /var/lib/rabbitmq
- cookie hash: IZ9HQVgFjAEBmt6GGzrx8g==

先杀死进程

ps -ef | grep rabbitmq       #查询进程号
ps -ef | grep rabbitmq | grep -v grep | awk '{print $2}' | xargs kill -9   #杀死进程
rabbitmq-server -detached    #启动
rabbitmqctl status           #查看状态         

再创建就可以了

创建消息队列用户,用于controler和node节点连接rabbitmq的认证

[root@ct ~]#  rabbitmqctl add_user openstack RABBIT_PASS
                                                                      用户名                密码
Creating user "openstack"

rabbitmq跑在openstack平台里,作为数据交互和传递的载体时,因为需要被keystone认证,有用户身份来进行管理,便于认证

配置openstack用户的操作权限(正则,配置读写权限)

[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

[root@ct ~]# netstat -anptu | grep 5672 #授予独立的用户身份,读写权限

可查看25672和5672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口)

查看rabbitmq插件列表

[root@ct ~]# rabbitmq-plugins list

开启rabbitmq的web管理界面的插件,端口为5672(可以通过网页访问,图形化页面)

[root@ct ~]# rabbitmq-plugins enable rabbitmq_management
[root@ct ~]# netstat -anptu | grep 5672   

安装memcached
作用:
安装memcached是用来存储session(会话)信息;服务身份验证机制(keystone)使用memched来缓存令牌,在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中

安装

[root@ct ~]# yum -y install memcached python-memcached

python模块在OpenStack中起到了连接数据库的作用

修改memcached配置文件

[root@ct ~]# vi /etc/sysconfig/memcached

PORT="11211"     默认端口号
USER="memcached"  默认账户名
MAXCONN="1024"    最大连接数
CACHESIZE="64"    缓存大小
OPTIONS="-l 127.0.0.1,::1,ct"  
选项                      添加主机名,控制节点所在

[root@ct ~]# vi /etc/sysconfig/memcached 
[root@ct ~]# systemctl enable memcached  #自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@ct ~]# systemctl start memcached  #开启服务
[root@ct ~]# netstat -anptu | grep 11211  #查看端口状态

在这里插入图片描述
在这里插入图片描述
安装etcd
etcd特点:

  • 简单: 基于HTTP+JSON的API让你可以用CURL命令就可以轻松使用。
  • 安全: 可以选择SSL客户认证机制。
  • 快速: 每个实例每秒支持一千次写操作。
  • 可信: 使用Ralf算法充分实现了分布式。

安装

[root@ct ~]# yum -y install etcd

编辑配置文件

[root@ct ~]# cd /etc/etcd/
[root@ct etcd]# ls -lh
[root@ct etcd]# vi etcd.conf 

修改
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"  数据目录位置

ETCD_LISTEN_PEER_URLS="http://192.168.100.16:2380" 
监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)

ETCD_LISTEN_CLIENT_URLS="http://192.168.100.16:2379"
对外提供服务的地址(2379端口,集群内部的通讯端口)

ETCD_NAME="ct"
集群中节点标识(名称)

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.16:2380"
该节点成员的URL地址,2380端口:用于集群之间通讯。

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.16:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.100.16:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"   集群唯一标识,群集名称

ETCD_INITIAL_CLUSTER_STATE="new"
初始集群状态,new为静态,表示单个节点

在这里插入图片描述

[root@ct etcd]# systemctl enable etcd  自启动
[root@ct etcd]# systemctl start etcd    开启服务
[root@ct etcd]# systemctl status etcd   服务状态
[root@ct etcd]# netstat -anptu | grep 2379  查看端口
[root@ct etcd]# netstat -anptu | grep 2380

在这里插入图片描述
在这里插入图片描述
以上,OpebStack基础配置完成

### OpenStack Y与T的主要差异 OpenStack作为一个持续发展的云计算平台,在不同本间引入了多种新特性和改进。对于Y(假设为最新稳定本之一)和T(可能指代较早的一个特定本),两者主要存在如下几个方面的区别: #### 功能增强与优化 - **网络服务Neutron**:在网络方面,Y相较于T进行了多项性能上的提升,并增加了对更多高级网络配置的支持[^1]。 - **计算服务Nova**:针对虚拟机生命周期管理和调度算法等方面做了进一步完善;同时提高了API稳定性并增强了安全性措施。 #### 用户体验改善 为了提供更好的用户体验,Y 本继续简化部署流程, 并通过Horizon仪表板提供了更直观的操作界面设计; 此外还加强了与其他第三方工具和服务集成的能力. #### 安全特性强化 安全始终是云环境中的重中之重.Y 本在此基础上新增了一些重要的防护机制, 如身份验证插件扩展性提高、密钥管理系统(Ceilometer)功能细化等, 使得整个架构更加健壮可靠[^2]. ```python # 示例代码展示如何连接到不同的OpenStack API本 from openstack import connection conn_y = connection.Connection( user='admin', password='password', project_name='service', auth_url='http://openstack-y.example.com:5000/v3' ) conn_t = connection.Connection( user='admin', password='password', project_name='service', auth_url='http://openstack-t.example.com:5000/v2.0' # 注意这里使用的可能是旧的身份认证URL路径 ) ``` #### 社区贡献与发展方向 随着时间推移, 开源社区围绕OpenStack构建起了庞大的生态系统. 新本往往反映了当前最活跃的研究成果和发展趋势, 而这些变化也会体现在从 T 到 Y 的演进过程中[^3].
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值