初步了解OpenStack(T版)
目录
一、概述
一、云计算服务类型
laaS(基础架构即服务):
1、提供底层IT基础设施服务,包括处理能力、存储空间、网络资源等。
2、面向对象一般是IT管理人员。
PaaS(平台即服务):
1、把安装好开发环境的系统平台作为一种服务通过互联网提供给用户。
2、面向对象—般是开发人员。
Saas (软件即服务):
1、直接通过互联网为用户提供软件和应用程序等服务。
2、面向对象一般是普通用户。
二、商业云分类
公有云:所有人都能用。
私有云:只为企业内部使用,服务器是托管给阿里云组织维护。
专有云::也是为企业内部所使用,使用的服务器是客户自己的服务器。
混合云:例如银行。
三、OpenStack服务
服务 | 项目名称 | 描述 |
---|---|---|
Compute(计算服务) | Nova | 负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展 |
Network(网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
ldentity(身份认证服务) | Keystone | 类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制 |
Dashboard(控制面板服务) | Horizon | 提供一个Web管理界面,与OpenStack底层服务进行交互 |
Image Service(镜像服务) | Glance | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储 |
Block Storage(块存储服务) | Cinder | 负责为运行实例提供持久的块存储设备(磁盘持久化),可进行方便的扩展,按需付费,支持多种后端存储 |
Object Storage(对象存储服务) | Swift | 为OpenStack提供基于云的弹性存储,支持集群无单点故障(镜像、快照) |
Telemetry(计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径 |
1、每个服务是一个项目
2、项目之间是隔离的,大多数通过API接口进行数据交互传输
3、OpenStack核心是实例(虚拟机),大部分核心功能围绕实例进行的
4、阿里云中核心是云主机(ECS)
四、OpenStack的优势
解耦
遵守同一接口约束
冗余
数据传输,会有持久化缓存,知道数据传输完,才会将任务删除,并取消持久化
兼容性
OpenStack兼容其他公有云(OpenStack的云),方便用户进行数据迁移
可扩展性
模块化设计,可以通过横向扩展,增加节点、添加资源
灵活性
根据自己的需要建立相应基础设施(iaas)、增加集群规模
顺序保证
消息队列,按特定的顺序来处理
缓冲
通过将数据转换为数据流,进行输出或输入
五、OpenStack分层思路
1、OpenStack分为多个独立的项目(按照功能)。
2、每个项目中,也划分了不同的子系统。
3、子系统之间是通过消息代理通讯(统一的规范)。
4、在不同项目之间通讯(统一),公共API。
以项目职能划分:全局、核心、辅助
六、OpenStack组件通信关系
基于AMQF协议的通信
用于每个项目内部各个组件之间的通信。
基于SQL的通信
用于各个项目内部的通信。(openstack 核心组件/服务很多都是由python开发的)
基于HTTP协议进行通信
通过各项目的API建立的通信关系,API都是RESTful Web APl。
1)项目之间通讯,比如nova和keystone之间通讯http,而http在openstack中是借助apache来实现的
2)restful :通讯协议的一种规范
3.1)项目之间点到点的通讯是借助不同项目暴露出来的公共api接口进行的
3.2)通讯的过程:借助了AMQP进行通讯
4)URL形式
通过Native API实现通信
OpenStack各组件和第三方软硬件之间的通信。
七、OpenStack物理架构
网络节点:网络节点通常需要3个网络端口,分别用于与控制节点进行通信、与除控制节点之外的计算和存储节点之间的通信、外部的虚拟机与相应网络之间的通信。
1、提供者网络:为内部网络提供插件、代理以及功能模块支持。
2、自服务网络:用于连接外部。
二、环境部署
主机名 | 内存 | 硬盘 | 处理器 | VM | NAT |
---|---|---|---|---|---|
ct | 8G | 300G | 4 | 192.168.211.10 | 192.168.238.140 |
c1 | 8G | 300G | 4 | 192.168.211.20 | 192.168.238.141 |
c2 | 8G | 300G | 4 | 192.168.211.30 | 192.168.238.142 |
一、基本配置
#ct、c1、c2
[root@localhost ~]# hostnamectl set-hostname ct
[root@localhost ~]# su
[root@ct ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
IPV4_ROUTE_METRIC=90 #添加优先级:nat网卡优先
[root@ct ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
#GATEWAY=192.168.211.1 #将网关注释
[root@ct ~]# systemctl restart network
[root@ct ~]# vi /etc/hosts
#免交互(三台)
[root@ct ~]# ssh-keygen -t rsa
[root@ct ~]# ssh-copy-id ct
[root@ct ~]# ssh-copy-id c1
[root@ct ~]# ssh-copy-id c2
#安装依赖包(三台)
[root@ct ~]# yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre pcre-devel expat-devel cmake bzip2 lrzsz
[root@ct ~]# yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils #安装OpenStack组件,执行两遍
#时间同步
ct 同步阿里时钟服务器
c1/c2 同步 ct
##ct
[root@ct ~]# yum -y install chrony
[root@ct ~]# vim /etc/chrony.conf
#配置阿里云时钟服务器源
第7行 server ntp6.aliyun.com iburst
#允许192.168.211.0/24网段的主机来同步时钟服务
第8行 allow 192.168.211.0/24
[root@ct ~]# chronyc sources #查询时间同步信息
##c1/c2
[root@c1 ~]# vim /etc/chrony.conf
#配置阿里云时钟服务器源
第7行 server ct iburst
[root@c1 ~]# systemctl restart chronyd.service #重启时间同步服务器
[root@c1 ~]# systemctl enable chronyd.service #设置开机自启
[root@c1 ~]# chronyc sources #查询时间同步信息
#设置查询时间同步信息并输出到日志
[root@c1 ~]# crontab -e
[root@c1 ~]# crontab -l
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log
二、配置服务(控制节点)
一、安装、配置MariaDB
#ct
[root@ct ~]# yum -y install mariadb \ #轻量级mysql
mariadb-server \ mysql服务端
python2-PyMySQL #对接数据库连接的条件
[root@ct ~]# yum -y install libibverbs #函数库
[root@ct ~]# vim /etc/my.cnf.d/openstack.cnf #创建并设置用于OpenStack连接的文件
[mysqld]
bind-address = 192.168.211.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 #设置开机自启
[root@ct ~]# systemctl start mariadb #开启服务
[root@ct ~]# mysql_secure_installation #执行安全配置脚本
二、安装rabbitmq
#所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq
[root@ct ~]# yum -y install rabbitmq-server #安装
[root@ct ~]# systemctl enable rabbitmq-server.service #开机自启
[root@ct ~]# systemctl start rabbitmq-server.service #开启服务
#创建消息队列用户,用于controler和 计算节点连接rabbitmq的认证(关联)
[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
#配置openstack用户的操作权限(正则,配置读写权限)
[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
[root@ct ~]# rabbitmq-plugins enable rabbitmq_management #开启rabbitmq的web管理界面的插件,端口为15672
[root@ct ~]# ss -natp | grep 5672 #检查端口(25672 5672 15672)
三、访问:192.168.238.140:15672
四、安装memcached
[root@ct ~]# yum install -y memcached python-memcached
ps:1、安装memcached是用于存储session信息;服务身份验证机制(keystone)使用Memcached来缓存令牌 在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中。
2、python-*模块在OpenStack中起到连接数据库的作用
[root@ct ~]# vim /etc/sysconfig/memcached #修改Memcached配置文件
[root@ct ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct" #添加ct
[root@ct ~]# systemctl enable memcached #开机自启
[root@ct ~]# systemctl start memcached #开启服务
五、安装etcd
[root@ct ~]# yum install -y etcd
[root@ct ~]# vim /etc/etcd/etcd.conf
[root@ct ~]# grep -v "^#" /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#默认数据目录
ETCD_LISTEN_PEER_URLS="http://192.168.211.10:2380"
#监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)
ETCD_LISTEN_CLIENT_URLS="http://192.168.211.10:2379"
#对外提供服务的地址(2379端口,集群内部的通讯端口)
ETCD_NAME="ct"
#集群中节点标识(名称)
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.211.10:2380"
#该节点成员的URL地址,2380端口:用于集群之间通讯。
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.211.10:2379"
#客户端的地址
ETCD_INITIAL_CLUSTER="ct=http://192.168.211.10:2380"
#etcd在集群中的定位
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
#集群唯一标识
ETCD_INITIAL_CLUSTER_STATE="new"
#初始集群状态,new为静态
#若为existing,则表示此ETCD服务将尝试加入已有的集群
#若为DNS,则表示此集群将作为被加入的对
[root@ct ~]# systemctl enable etcd
[root@ct ~]# systemctl start etcd