(一)OpenStack服务的初见⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄之架构和服务T版环境搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、云计算服务模型

  1. laaS(基础架构即服务)]
    提供底层IT基础设施服务,包括处理能力、存储空间、网络资源(比如迅雷)等
    面向对象一般是IT管理人员
  2. PaaS (平台即服务)
    把安装好开发环境的系统平台作为一-种服务通过互联网提供给用户
    面向对象一般是开发人员
  3. SaaS (软件即服务)
    直接通过互联网为用户提供软件和应用程序等服务
    面向对象一般是普通用戶
    比如LNMP架构,打包成SaaS服务,用户若是购买这个服务即拥有LNMP架构

二、OpenStack服务概述

1、OpenStack的概念

Open(开源)Stack(堆叠)以物理设备为基础,以虚拟化的技术奖资源分配给不同的用户(比如:电商、金融P2P)

  • NASA (美国国家航空航天局)和Rackspace共同发起
  • 以Apache许可证授权的自由软件和开放源代码项目
  • 为公有云及私有云的建设与管理提供软件的开源项目
    • 公有云:所有人都能用
    • 私有云:只为企业内部使用,服务器是托管给阿里云组织维护
    • 专有云:也是为企业内部所使用,使用的服务器是客户自己的服务器
    • 混合云:例如银行
  • 覆盖了网络、虚拟化、操作系统、服务器等各个方面

2、OpenStack核心组件

项目名称即核心服务,都是为实例服务的;实例就是虚拟机
项目与项目直接相互隔离的,借助于API对接的方式相互关联

服务项目名称描述
计算nova管理实例生命周期
镜像glance管理镜像、快照服务
认证keystone负责OpenStack内外交互,以及内部所有组件交互时的认证
块存储cinder为实例提供持久化功能
对象存储swift对象存储,存储镜像+快照
度量/监控celimitor计费、监控
网络neutron为实例提供网络支持( 拓扑结构)
控制台horizon用户登陆、使用的控制台界面

3、OpenStack优势

  • 控制性
    • 完全开源的平台,提供API接口,方便与第三方技术集成
  • 兼容性
    • OpenStack兼容其他公有云,方便用户进行数据迁移
  • 可扩展性
    • 模块化设计,可以通过横向扩展,增加节点、添加资源
  • 灵活性
    • 根据自己的需要建立相应基础设施、增加集群规模
  • 行业标准
    • 众多IT领军企业已经加入到OpenStack项目

三、OpenStack架构描述

1、OpenStack概念架构

在这里插入图片描述

  • 起点:用户登录OpenStack
  • 需求:创建实例
    • 云平台用户在经过Keystone服务认证授权后—>通过Horizon或者Reset API模式创建虚拟机服务
  • 创建过程中:
    • 利用Nova服务创建虚拟机实例—>虛拟机实例采用Glance提供镜像服务—>使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中—>通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume) 和Glance提供的镜像(Image) 可以通过
      Swift的对象存储机制进行保存。
  • 主要组件
    • 全局:Keyston(全局认证)、Ceilometer(监控、计费)、Horizon(控制台)
    • 核心:Nove(计算)、Glance(镜像)、Neutron(网络)、Swift(块存储)、Cinder(对象存储)
    • 支持/辅助:Ironic(裸金属)、Trove(数据库管理)、Hent(数据编排)

2、OpenStack逻辑架构

在这里插入图片描述

1、逻辑架构图介绍了OpenStack核心的八个组件、全局、支持;所有服务均可通过一个公共身份服务进行身份验证
2、设计的三个部分组件如何对接:通过一个公共的API进行交互
3、单个核心项目内部,分为多个子功能模块,子功能模块直接使用AMQP消息代理进行交互的

3、OpenStack组件通信关系

  • 基于AMQP协议的通信:用于每个项目内部各个组件之间的通信
    • 项目之间点到点的通讯是借助不同项目暴露出来的公共API接口进行的
    • 通讯的过程:借助了AMQP进行通讯
  • 基于SQL的通信:用于各个项目内部的通信
    • 项目和项目之间的通讯会使用http方式进行通讯,OpenStack是由apache服务提供http层面的交互
  • 基于HTTP协议进行通信:通过各项目的API建立的通信关系,API都是RESTful Web API
    • restful wdb:restful:通讯协议的一种规范;web:URL形式
  • 通过Native API实现通信:OpenStack各组件和第三方软硬件之间的通信

4、物理架构(4种节点类型)

在这里插入图片描述

  • 控制节点
    • 基础服务:全局模块和主要的组件
    • 扩展服务:块、对象数据库的管理和编排
    • 网络接口:负责与别的节点进行通信:比如:ens33、eth0
  • 计算节点
    • 基础服务
      • Nova Hypervisor:指挥调度中心,指挥compute,实例一般创建在计算节点
      • 网络插件代理:访问外部网络需要nova通过对应的代理插件操作
      • 扩展服务:负责收集计算节点的数据发送给主节点;计费代理
  • 存储节点
    • 块、对象存储:对应不同的网络接口连接到其他网络
  • 网络节点
    • 内部的通讯,及具有实例通讯的规则
    • 提供者网络:为内部网络提供插件、代理以及功能模块支持;包含ML2插件(即L2交换机)
    • 自服务网络:用于连接外部;包含三层代理L3 Agent(即三层交换机)

四、部署OpenStack平台基础服务

1、配置操作系统+OpenStack运行环境

主机名内存硬盘网卡系统
ct8300+300VM:192.168.10.100CentOS7.6
NAT:192.168.35.140CentOS7.6
c18300+300VM:192.168.10.101CentOS7.6
NAT:192.168.35.141CentOS7.6
C28300+300VM:192.168.10.102CentOS7.6
NAT:192.168.35.142CentOS7.6

1.1、基础环境配置

----->主机名<-----------------------------------------
hostnamectl set-hostname ct
hostnamectl set-hostname c1
hostnamectl set-hostname c2
su
----->防火墙、核心防护、DNS、配置映射<-----------------------------------------
systemctl stop firewalld		##关闭防火墙
systemctl disable firewalld
setenforce 0		##核心防护
vi /etc/resolv.conf		##配置DNS(所有节点)
nameserver 114.114.114.114
vi /etc/hosts		##配置内网地址
192.168.10.100 ct
192.168.10.101 c1
192.168.10.102 c2
----->免交互<-----------------------------------------
三台节点做免交互
ssh-keygen -t rsa		##非对称密钥
ssh-copy-id ct
ssh-copy-id c1
ssh-copy-id c2
----->基础环境依赖包<-----------------------------------------
yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 lrzsz
EXPAT C语言发开库
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils		##OpenStack 的 train 版本仓库源安装包,同时安装 OpenStack 客户端和 openstack-selinux 安装包;最好安装两次,提示已安装并且是最新版本即可

在这里插入图片描述

 ----->控制节点ct时间同步配置<-----------------------------------------
ct ->同步阿里云时钟服务器;c1、c2 -> 同步ct
yum -y install chrony 		##安装时钟同步服务
vi /etc/chrony.conf
	server 0.centos.pool.ntp.org iburst	 	##注释掉
	server 1.centos.pool.ntp.org iburst 		##注释掉
	server 2.centos.pool.ntp.org iburst 		##注释掉
	server 3.centos.pool.ntp.org iburst 		##注释掉
	server ntp1.aliyun.com iburst 		###配置阿里云时钟服务器源
	allow 192.168.10.0/24 		##允许192.168.10.0/24网段的主机来同步时钟服务
systemctl restart chronyd
systemctl enable chronyd
chronyc sources			##使用chronyc命令查询时间同步信息
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 120.25.115.20                 2   6    33     6   -341us[  -57us] +/-   23ms
 ----->控制节点c1、c2时间同步配置<-----------------------------------------
vim /etc/chrony.conf
	server 0.centos.pool.ntp.org iburst 		##注释掉
	server 1.centos.pool.ntp.org iburst 		##注释掉
	server 2.centos.pool.ntp.org iburst 		##注释掉
	server 3.centos.pool.ntp.org iburst 		##注释掉
	server ct iburst 		##配置阿里云时钟服务器源
systemctl restart chronyd 	##重启时间同步服务器
systemctl enable chronyd 	##永久开启时间同步服务器
chronyc sources

在这里插入图片描述

 ----->周期性计划任务<-----------------------------------------
crontab -e 		##配置计划任务,每隔2分钟同步一次
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log

2、系统环境配置

2.1、安装、配置MariaDB

yum -y install mariadb mariadb-server python2-PyMySQL	##此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
yum -y install libibverbs		##安装lib库
vim /etc/my.cnf.d/openstack.cnf		##添加MySQL子配置文件,增加如下内容
	[mysqld]
	bind-address = 192.168.10.100		##控制节点局域网地址,即本机
	default-storage-engine = innodb		##默认引擎
	innodb_file_per_table = on			##开启表空间
	max_connections = 4096			##最大连接4096
	collation-server = utf8_general_ci		##默认字符集
	character-set-server = utf8		
systemctl start mariadb			##开启服务
systemctl enable mariadb		##开机自启动
mysql_secure_installation		##执行MariaDB 安全配置脚本
Enter current password for root (enter for none): 	##回车
OK, successfully used password, moving on...
Set root password? [Y/n] 	Y		##是否需要创建密码

Remove anonymous users? [Y/n] 	Y		##是否需要移除其他用户
 ... Success!
Disallow root login remotely? [Y/n] N 		##是否不允许root用户远程登陆
 ... skipping.
Remove test database and access to it? [Y/n] Y 		##是否删除test测试库
Reload privilege tables now? [Y/n] Y		##是否现在就重载以上的配置

在这里插入图片描述

2.2、安装RabbitMQ

所有创建虚拟机的指令,控制端都会发送到rabbitmq,计算节点监听rabbitmq

yum -y install rabbitmq-server		##下载rabbitmq服务
systemctl start rabbitmq-server		##启动RabbitMQ服务
systemctl enable rabbitmq-server		##设置其开机启动
rabbitmqctl add_user openstack RABBIT_PASS		##创建消息队列用户,用于controler和 计算节点连接rabbitmq的认证(关联);用户:openstack,密码:RABBIT_PASS
rabbitmqctl set_permissions openstack ".*" ".*" ".*"	##配置openstack用户的操作权限(正则,配置读写权限);set:修改;permissions:权限
netstat -antp | grep 5672	##可查看25672和5672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口)

在这里插入图片描述
选择配置:

rabbitmq-plugins list		##查看rabbitmq插件列表;plugins:插件
rabbitmq-plugins enable rabbitmq_management	##开启rabbitmq的web管理界面的插件,端口为15672
netstat -natp | grep 5672	##检查端口(25672 5672 15672)
LISTEN     0      128          *:25672                    *:*                   users:(("beam.smp",pid=24596,fd=46))
LISTEN     0      128         :::5672                    :::*                   users:(("beam.smp",pid=24596,fd=55))

在这里插入图片描述
可访问192.168.35.140:15672;账号密码均默认为:guest
在这里插入图片描述

2.3、安装memcached

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

yum install -y memcached python-memcached		##安装Memcached
#python-*模块在OpenStack中起到连接数据库的作用
vim /etc/sysconfig/memcached		##修改Memcached配置文件
	PORT="11211"
	USER="memcached"
	MAXCONN="1024"
	CACHESIZE="64"
	OPTIONS="-l 127.0.0.1,::1,ct"		##添加ct
systemctl start memcached 
systemctl enable memcached
netstat -nautp | grep 11211

在这里插入图片描述

yum -y install etcd		##安装etcd
vim /etc/etcd/etcd.conf	##修改etcd配置文件;典型的去中心化的数据库
	ETCD_DATA_DIR="/var/lib/etcd/default.etcd"	##数据目录位置
	ETCD_LISTEN_PEER_URLS="http://192.168.10.100:2380"	  ##监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)#对外提供服务的地址(2379端口,集群内部的通讯端口)
	ETCD_LISTEN_CLIENT_URLS="http://192.168.10.100:2379"	##对外提供服务的地址(2379端口,集群内部的通讯端口)
	ETCD_NAME="ct"		##集群中节点标识(名称)
	ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.100:2380"	##该节点成员的URL地址,2380端口:用于集群之间通讯
	ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.100:2379"	
	ETCD_INITIAL_CLUSTER="ct=http://192.168.10.100:2380"
	ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" 		##集群唯一标识
	ETCD_INITIAL_CLUSTER_STATE="new"  	 ##初始集群状态,new为静态,若为existing,则表示此ETCD服务将尝试加入已有的集群;若为DNS,则表示此集群将作为被加入的对象
systemctl start etcd		##开启服务
systemctl enable etcd		##开机自启动
netstat -anutp |grep 2379	##检测端口
netstat -anutp |grep 2380

在这里插入图片描述

2.4、c1、c2安装OpenStack组件

yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils

在这里插入图片描述

五、总结

本章讲解了OpenStack的八大核心组件,概念架构和逻辑架构

  • 那么如何创建实例
    起点:用户登录OpenStack
    需求:创建实例:
    云平台用户在经过Keystone服务认证授权后—>通过Horizon或者Reset API模式创建虚拟机服务
    创建过程中:
    利用Nova服务创建虚拟机实例—>虛拟机实例采用Glance提供镜像服务—>使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中—>通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume) 和Glance提供的镜像(Image) 可以通过
    Swift的对象存储机制进行保存。
  • 环境部署的步骤
    ①安装环境软件包
    ②安装了openstack-T 软件包
    ③网卡vm内网nat外网(外网模式需要指定route,ipvs_ route_metric=90)
    ④时间同步、免交互
    ⑤安装mariadb
    ⑥安装rabbitmq
    ①安装memcached (缓存session和token)
    ⑧安装etcd (去中心化分布式存储,特点是自动发现版本V3)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值