常见面试题(1)

CF1560D - Make a Power of Two

  返回  

OpenStack基础知识及其部署(持续更新)!

2021/8/21 0:26:08 浏览:

OpenStack

  • OpenStack
    • OpenStack概述
    • 云计算服务类型
    • OpenStack服务
      • keystone
    • OpenStack优势
    • OpenStack架构
      • 设计基本原则
      • OpenStack逻辑架构
    • OpenStack组件通信关系
  • OpenStack部署
    • 部署OpenStack依赖环境
    • 控制节点配置MariaDB
    • 安装RabbitMQ
    • 安装memcached

OpenStack

OpenStack概述

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

云计算服务类型

  • LaaS(基础架构即服务): 提供底层IT基础基础设施服务,包括处理能力、存储空间、网络资源等,面向对象一般是IT管理人员
  • PaaS(平台即服务):把安装好开发环境的系统平台作为一种服务通过互联网提供给用户,面向对象一般是开发人员
  • SaaS(软件即服务):直接通过互联网为用户提供软件和应用程序等服务,面向对象一般是普通用户

OpenStack服务

服务项目名称概述
compute(计算)Nova负责实例生命周期的管理,计算资源的单位
network(网络)Neutron负责虚拟网络的管理,为实例创建网络的拓扑结构
idenity(认证)Keystone对用户、租户和角色、服务进行认证和授权
Dashboard(控制面板)Horizon提供一个Web管理界面,和OpenStack底层服务进行交互
Image Service(镜像)Glance提供虚拟机镜像模板的注册与管理
Block Storage (快存储)Cinder负责为运行实例提供持久的块存储设备
Object Storage(对象存储)Swift为OpenStack提供基于云的弹性存储,支持群集无单点故障
Telemetry(计量)Ceilometer用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径

keystone

keystone(OpenStack Identity Service)时OpenStack中的一个独立的提供安全认证的模块,主要辅助openstack用户的身份认证、令牌管理、提供访问资源的服务目录、以及基于用户角色的访问控制

主要功能:

  • 身份认证:令牌的发放和校验
  • 用户授权:授予用户在一个服务中所拥有的权限
  • 用户管理:管理用户账户
  • 服务目录:提供可用服务的API端点

OpenStack优势

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

OpenStack架构

设计基本原则

  • 按照不同的功能和通用性划分不同的项目,拆分子系统
  • 按照逻辑计划、规范子系统之间的通信(mq)
  • 通过分层设计整个系统架构
  • 不同的功能子系统间提供同一的API接口

OpenStack逻辑架构

  • OpenStack包括若干个称为OpenStack服务的独立组件,所有服务都通过一个公共身份服务进行身份验证(keystone),除了那些需要关了权限的命令,每个服务之间都可通过公共API进行交互
  • 每个OpenStack服务由若干组件组成,包含多个进程,所有服务只是有一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其他组件,除了认证服务,实际工作都是由具体的进程完成的
  • 每个服务端进程之间的通信,是使用AMQP消息代理,服务的状态存储在数据库中

OpenStack组件通信关系

  • 基于AMQP协议地通信:用于每个项目内部各个组件之间地通信
  • 基于SQL地通信:用于各个项目内部地通信
  • 基于HTTP协议进行通信:通过各项目地API简历地通信关系
  • 通过Native API实现通信:OpenStack各组件和第三方软硬件之间的通信

OpenStack部署

设备准备:三台CentOS,内存8G,双网卡
控制节点ct:设置网卡

ens33(NAT网卡):
BOOTPROTO=static
IPV4_ROUTE_METRIC=90	#添加调由优先级,有2条默认,使NAT优先,
ONBOOT=yes
IPADDR=192.168.118.44
NETMASK=255.255.255.0
GATEWAY=192.168.118.2

ens36(内网)BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.140.10
NETMASK=255.255.255.0
#GATEWAY=192.168.140.2	#注释网卡

计算节点ct1:

ens33(NAT网卡):
BOOTPROTO=static
IPV4_ROUTE_METRIC=90	#添加调由优先级,有2条默认,使NAT优先,
ONBOOT=yes
IPADDR=192.168.118.55
NETMASK=255.255.255.0
GATEWAY=192.168.118.2

ens36(内网)BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.140.20
NETMASK=255.255.255.0
#GATEWAY=192.168.140.2	

计算节点ct2

ens33(NAT网卡):
BOOTPROTO=static
IPV4_ROUTE_METRIC=90	#添加调由优先级,有2条默认,使NAT优先,
ONBOOT=yes
IPADDR=192.168.118.66
NETMASK=255.255.255.0
GATEWAY=192.168.118.2

ens34(内网)BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.140.30
NETMASK=255.255.255.0
#GATEWAY=192.168.140.2	

部署OpenStack依赖环境

三个节点同时设置,这里只显示ct节点

[root@ct ~]# vi /etc/hosts
192.168.140.10  ct
192.168.140.20  ct1
192.168.140.30  ct2
[root@ct ~]# ssh-keygen -t rsa				#免交互
[root@ct ~]# ssh-copy-id ct
[root@ct ~]# ssh-copy-id ct1
[root@ct ~]# ssh-copy-id ct2
[root@ct ~]# vi /etc/yum.conf 				#配置YUM能保存下载的安装软件
keepcache=1

##下载安装依赖包
[root@ct ~]# yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 lrzsz


##EXPAT C语言发开库,这里最好多安装几次
[root@ct ~]# yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
  • 设置时间同步
[root@ct ~]# yum install chrony -y
[root@ct ~]#  vim /etc/chrony.conf 

ct节点:
在这里插入图片描述
ct1-2节点
在这里插入图片描述

在这里插入图片描述

[root@ct ~]#  systemctl enable chronyd.service
[root@ct ~]# systemctl restart chronyd.service			#三个节点都开启时间同步
[root@ct ~]# crontab -e									#配置计划任务,两分钟同步一次

控制节点配置MariaDB

  • 安装、配置mariadb
[root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL  
#python2-PyMySQL是OpenStack控制端连接MySQL的模块  
[root@ct ~]# yum -y install libibverbs			#添加MySQL子配置文件
[root@ct ~]# vim /etc/my.cnf.d/openstack.cnf		#设置配置文件,添加以下内容
[mysqld]
bind-address = 192.168.140.10						#设置控制节点局域网地址
default-storage-engine = innodb						#设置默认存储引擎
innodb_file_per_table = on							#每张表独立表空间文件
max_connections = 4096								#最大连接数
collation-server = utf8_general_ci					#最大字符集
character-set-server = utf8
[root@ct ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@ct ~]# systemctl start mariadb				#开启mariadb
[root@ct ~]# cd /etc/my.cnf.d/
[root@ct my.cnf.d]# mysql_secure_installation		#执行mariadb安全配置脚本
…………………………
Disallow root login remotely? [Y/n] N				#交互过程只有这一步选择n允许root登录
…………………………

安装RabbitMQ

[root@ct my.cnf.d]# yum -y install rabbitmq-server
[root@ct my.cnf.d]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@ct my.cnf.d]# systemctl start rabbitmq-server.service
[root@ct my.cnf.d]# rabbitmqctl add_user openstack RABBIT_PASS 	#创建消息队列用户openstack,给予密码为RABBIT_PASS
Creating user "openstack"
[root@ct my.cnf.d]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
##配置openstack用户的操作权限(正则,配置读写权限)
Setting permissions for user "openstack" in vhost "/"
[root@ct my.cnf.d]# netstat -antp | grep 5672		#查看rabbitmq默认端口		
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      40164/beam.smp      
tcp        0      0 127.0.0.1:33644         127.0.0.1:25672         TIME_WAIT   -                   
tcp6       0      0 :::5672                 :::*                    LISTEN      40164/beam.smp      
[root@ct my.cnf.d]# netstat -antp | grep 25672		#查看rabbit测试工具CLI的端口
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      40164/beam.smp 
[root@ct my.cnf.d]# rabbitmq-plugins list			#查看rabbitmq插件列表
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@localhost
 |/
[  ] amqp_client                       3.6.16
[  ] cowboy                            1.0.4
[  ] cowlib                            1.0.2
[  ] rabbitmq_amqp1_0                  3.6.16
[  ] rabbitmq_auth_backend_ldap        3.6.16
[  ] rabbitmq_auth_mechanism_ssl       3.6.16
[  ] rabbitmq_consistent_hash_exchange 3.6.16
[  ] rabbitmq_event_exchange           3.6.16
[  ] rabbitmq_federation               3.6.16
[  ] rabbitmq_federation_management    3.6.16
[  ] rabbitmq_jms_topic_exchange       3.6.16
……………………………………

[root@ct my.cnf.d]# rabbitmq-plugins enable rabbitmq_management		#开启rabbitmq的web管理界面的插件
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@localhost... started 6 plugins.

在这里插入图片描述

在这里插入图片描述

安装memcached

memcached用于存储session信息,服务身份验证机制(keystone)使用memcached来缓冲令牌在登陆openstack的dashboard时,会产生session信息,这些session信息会存放到memcached中

[root@ct my.cnf.d]#  yum install -y memcached python-memcached
[root@ct my.cnf.d]# vi /etc/sysconfig/memcached 		#修改memcached配置文件PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct"
[root@ct my.cnf.d]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@ct my.cnf.d]# systemctl start memcached
[root@ct my.cnf.d]# netstat -antp | grep 11211
tcp        0      0 192.168.140.10:11211    0.0.0.0:*               LISTEN      42358/memcached     
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      42358/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      42358/memcached 
  • 安装etcd(由go语言开发的开源,去中心化的数据库)
[root@ct my.cnf.d]# yum install -y etcd			
[root@ct my.cnf.d]# vi /etc/etcd/etcd.conf 		#修改配置文件

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

[root@ct my.cnf.d]# systemctl enable etcd.service
[root@ct my.cnf.d]# systemctl start etcd.service
[root@ct my.cnf.d]#  netstat -anutp |grep 2379
tcp        0      0 192.168.140.10:2379     0.0.0.0:*               LISTEN      45160/etcd          
tcp        0      0 192.168.140.10:2379     192.168.140.10:50826    ESTABLISHED 45160/etcd          
tcp        0      0 192.168.140.10:50826    192.168.140.10:2379     ESTABLISHED 45160/etcd          
[root@ct my.cnf.d]#  netstat -anutp |grep 2380
tcp        0      0 192.168.140.10:2380     0.0.0.0:*               LISTEN      45160/etcd 

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号