• OpenStack实践系列①openstack简介及基础环境部署


    OpenStack实践系列①openstack简介及基础环境部署


    一、OpenStack初探
    1.1 OpenStack简介

     OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立、运行自己的云计算和存储设施。Rackspace与NASA是最初重要的两个贡献者,前者提供了“云文件”平台代码,该平台增强了OpenStack对象存储部分的功能,而后者带来了“Nebula”平台形成了OpenStack其余的部分。而今,OpenStack基金会已经有150多个会员,包括很多知名公司如“Canonical、DELL、Citrix”等。

    1.2 OpenStack的几大组件

    1.2.1 图解各大组件之间关系

    1.2.2 谈谈openstack的组件

    OpenStack 认证(keystone)

      Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定
      Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)。除此之外,Keystone提供以下三种服务:
    a.令牌服务:含有授权用户的授权信息
    b.目录服务:含有用户合法操作的可用服务列表
    c.策略服务:利用Keystone具体指定用户或群组某些访问权限

    认证服务组件

    1)通过宾馆对比keystone
    User 住宾馆的人
    Credentials 身份证
    Authentication 认证你的身份证
    Token 房卡
    project 组间
    Service 宾馆可以提供的服务类别,比如,饮食类,娱乐类
    Endpoint 具体的一种服务,比如吃烧烤,打羽毛球
    Role VIP 等级,VIP越高,享有越高的权限

    2)keystone组件详细说明
    a.服务入口endpoint:如Nova、Swift和Glance一样每个OpenStack服务都拥有一个指定的端口和专属的URL,我们称其为入口(endpoints)。
    b.用户user:Keystone授权使用者
    注:代表一个个体,OpenStack以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。
    c.服务service:总体而言,任何通过Keystone进行连接或管理的组件都被称为服务。举个例子,我们可以称Glance为Keystone的服务。
    d.角色role:为了维护安全限定,就内特定用户可执行的操作而言,该用户关联的角色是非常重要的。注:一个角色是应是某个租户的使用权限集合,以允许某个指定用户访问或使用特定操作。角色是使用权限的逻辑分组,它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户。
    e.租间project:租间指的是具有全部服务入口并配有特定成员角色的一个项目。注:一个租间映射到一个Nova的“project-id”,在对象存储中,一个租间可以有多个容器。根据不同的安装方式,一个租间可以代表一个客户、帐号、组织或项目。

    OpenStack Dashboard界面 (horizon)

      Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。总之,Horizon具有如下一些特点:
    a.实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
    b.访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
    c.偏好设定:对虚拟硬件模板可以进行不同偏好设定
    d.镜像管理:编辑或删除镜像
    e.查看服务目录
    f.管理用户、配额及项目用途
    g.用户管理:创建用户等
    h.卷管理:创建卷和快照
    i.对象存储处理:创建、删除容器和对象
    j.为项目下载环境变量

    OpenStack nova

    图解nova

    API:负责接收和响应外部请求,支持OpenStackAPI,EC2API

    nova-api 组件实现了RESTfulAPI功能,是外部访问Nova的唯一途径,接收外部的请求并通过Message Queue将请求发送给其他服务组件,同时也兼容EC2API,所以可以用EC2的管理工具对nova进行日常管理

    Cert:负责身份认证

    Scheduler:用于云主机调度

    Nova Scheduler模块在openstack中的作用是决策虚拟机创建在哪个主机(计算节点),一般会根据过滤计算节点或者通过加权的方法调度计算节点来创建虚拟机。
    1)过滤
    首先得到未经过过滤的主机列表,然后根据过滤属性,选择服务条件的计算节点主机

    2)调度
    经过过滤后,需要对主机进行权值的计算,根据策略选择相应的某一台主机(对于每一个要创建的虚拟机而言)


    注:Openstack默认不支持指定的计算节点创建虚拟机

    Conductor:计算节点访问,数据的中间件

    Consloeauth:用于控制台的授权认证

    Novncproxy:VNC代理

    OpenStack 对象存储 (swift)

      Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。

    swift功能及特点

    海量对象存储
    大文件(对象)存储
    数据冗余管理
    归档能力—–处理大数据集
    为虚拟机和云应用提供数据容器
    处理流媒体
    对象安全存储
    备份与归档
    良好的可伸缩性
    Swift的组件

    Swift账户
    Swift容器
    Swift对象
    Swift代理
    Swift RING
    Swift代理服务器

      用户都是通过Swift-API与代理服务器进行交互,代理服务器正是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。
    此外,代理服务器也同时处理实体失效而转移时,故障切换的实体重复路由请求。

    Swift对象服务器

      对象服务器是一种二进制存储,它负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具有扩展文件属性的元数据(xattr)。注:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,但是并没有有效测试证明在XFS,JFS,ReiserFS,Reiser4和ZFS下也同样能运行良好。不过,XFS被认为是当前最好的选择。

    Swift容器服务器

      容器服务器将列出一个容器中的所有对象,默认对象列表将存储为SQLite文件(译者注:也可以修改为MySQL,安装中就是以MySQL为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。

    Swift账户服务器

      账户服务器与容器服务器类似,将列出容器中的对象。

    Ring(索引环)

      Ring容器记录着Swift中物理存储对象的位置信息,它是真实物理存储位置的实体名的虚拟映射,类似于查找及定位不同集群的实体真实物理位置的索引服务。这里所谓的实体指账户、容器、对象,它们都拥有属于自己的不同的Rings。

    OpenStack 块存储(cinder)

      API service:负责接受和处理Rest请求,并将请求放入RabbitMQ队列。Cinder提供Volume API V2
      Scheduler service:响应请求,读取或写向块存储数据库为维护状态,通过消息队列机制与其他进程交互,或直接与上层块存储提供的硬件或软件交互,通过driver结构,他可以与中队的存储
    提供者进行交互
      Volume service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储

    OpenStack Image service (glance)

      glance 主要有三个部分构成:glance-api,glance-registry以及image store
    glance-api:接受云系统镜像的创建,删除,读取请求
    glance-registry:云系统的镜像注册服务

    OpenStack 网络 (neutron)

    这里就不详细介绍了,后面会有详细的讲解

    二、环境准备
    2.1 准备机器

      本次实验使用的是VMvare虚拟机。详情如下

    控制节点
    hostname:node1.chinasoft.com
    ip地址:192.168.3.199 网卡桥接 eth0
    系统及硬件:CentOS 7.3 内存2G,硬盘50G

    计算算节点:
    hostname:node2.chinasoft.com
    ip地址:192.168.3.200 网卡桥接 ens37
    系统及硬件:CentOS 7.2 内存2G,硬盘50G

    修改主机名:
    hostnamectl set-hostname node1.chinasoft.com
    hostnamectl set-hostname node2.chinasoft.com

    域名解析:
    cat /etc/hosts
    192.168.3.199 node1.chinasoft.com node1
    192.168.3.200 node2.chinasoft.com node2

    关闭selinux和防火墙
    # getenforce
    Disabled
    # systemctl stop firewalld
    [root@node1 ~]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
    Docs: man:firewalld(1)

    系统安装的时候指定网卡名称为eth0(标准化方便后面管理)

    安装系统时增加内核参数: net.ifnames=0 biosdevname=0,如下图:

    2.2 OpenStack版本介绍

    本文使用的是L(Liberty)版,其他版本如下图

    2.3 安装组件服务

    2.3.1 控制节点安装

    Base

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum install centos-release-openstack-liberty -y
    yum install python-openstackclient -y

    MySQL

    yum install mariadb mariadb-server MySQL-python -y

    RabbitMQ

    yum install rabbitmq-server -y

    Keystone

    yum install openstack-keystone httpd mod_wsgi memcached python-memcached -y

    Glance

    yum install openstack-glance python-glance python-glanceclient -y

    Nova

    yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient -y

    Neutron

    yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset -y

    Dashboard

    yum install openstack-dashboard -y

    2.3.2 计算节点安装

    Base

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum install centos-release-openstack-liberty -y
    yum install python-openstackclient -y

    Nova node2.chinasoft.com

    yum install openstack-nova-compute sysfsutils -y

    Neutron

    yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset -y
  • 相关阅读:
    如何限制Dedecms文章或产品描述的字数
    Python 进阶 之 yield
    Python 进阶 之 contextlib模块
    JavaScript 之 定时器 延迟器
    Python 进阶 之 函数对象
    CSS入门之定义和应用格式
    Python 进阶 之 socket模块
    Python 进阶 之 闭包变量
    Python 进阶 之 else块 巧(慎)用
    Python 进阶 之 zip() izip() zip_longest函数
  • 原文地址:https://www.cnblogs.com/reblue520/p/6907621.html
Copyright © 2020-2023  润新知