首页 > 技术文章 > 私有云技术

tanbo 2020-07-07 23:34 原文

私有云技术

理论知识扩充

云计算 基本概念

云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。

Openstack基本概念

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

常见组件:

Dashboard(web项目)

Dashboard 介绍

OpenStack Web UI
用户自助服务界面,类似于AWS

Dashboard使用详解

1.系统管理面板

1)系统管理
2)认证管理

2.项目管理面板

1)计算管理
2)网络管理
3)块管理
4)对象管理
...

系统管理面板,提供系统的一些设置 (通常只有超级管理员能够查看)
认证管理:管理一些用户,控制用户啊,租户等。

项目管理:也可以叫租户管理。每个用户,或者租户进入之后,自己有自己的一个面板,这个面板就可以管理这个资源,或者叫云的服务。
计算管理:instance,快照,等。
网络管理:管理网络,创建路由,子网等。
块管理:磁盘,挂载虚拟机什么的。
对象管理:swift,文件。

来源:简书


Keystone(权限管理)

Keystone基本概念介绍

 

1. User

User即用户,他们代表可以通过keystone进行访问的人或程序。Users通过认证信息(credentials,如密码、APIKeys等)进行验证。

2. Tenant

Tenant即租户,它是各个服务中的一些可以访问的资源集合。例如,在Nova中一个tenant可以是一些机器,在SwiftGlance中一个tenant可以是一些镜像存储,在Quantum中一个tenant可以是一些网络资源。Users默认的总是绑定到某些tenant上。

3. Role

Role即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的或租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。

4. Service

Service即服务,如NovaGlanceSwift。根据前三个概念(UserTenantRole)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。在上文中谈到的Role,实际上也是可以绑定到某个service的。例如,当swift需要一个管理员权限的访问进行对象创建时,对于相同的role我们并不一定也需要对nova进行管理员权限的访问。为了实现这个目标,我们应该创建两个独立的管理员role,一个绑定到swift,另一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其他服务。

5. Endpoint

Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板(endpointtemplate,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息。一个endpointtemplate包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有publicprivateadmin这三种权限。publicurl可以被全局访问(如http://compute.example.com),privateurl只能被局域网访问(如http://compute.example.local),adminurl被从常规的访问中分离。

Nova(管理虚拟机)

NovaOpenStack Compute Service)是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源,同时管理虚拟机生命周期。OpenStack 很多组件都为 Nova 提供支持:Glance VM 提供镜像;Cinder Swift 分别为 VM 提供块存储和对象存储;
Neutron VM 提供网络连接。

1.API

nova-api

接收和响应客户的 API 调用。

2.Compute Core

nova-scheduler

虚机调度服务,负责决定在哪个计算节点上运行虚机。

nova-compute

管理虚机的核心服务,通过调用 Hypervisor API 实现虚机生命周期管理。

Hypervisor

计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。不同虚拟化技术提供自己的 Hypervisor。 常用的 Hypervisor KVMXenVMWare 等。

nova-conductor

nova-compute 经常需要更新数据库,比如更新虚机的状态。 出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor

3.Console Interface

nova-console

用户可以通过多种方式访问虚机的控制台:

nova-novncproxy,基于 Web 浏览器的 VNC 访问。

nova-spicehtml5proxy,基于 HTML5 浏览器的 SPICE 访问。

nova-xvpnvncproxy,基于 Java 客户端的 VNC 访问。

4.Database

Nova 会有一些数据需要存放到数据库中,一般使用 MariaDB

Nova 使用命名为 “nova” 的数据库。

5.Message Queue

在架构图上我们看到 Nova 组件之间的连线,它们都通过 Message Queue 联系。

OpenStack 默认是用 RabbitMQ 作为 Message Queue

Nova-network(管理网络流量和ip)

目前,我们在部署nova-network时采用的是multi-host的部署方式,会在每台计算节点上nova-network。这样做的好处是可扩展性比较好。当我们计算资源不足时,仅需要直接扩展即可。如果将nova-network部署在controller节点上,当我们扩展计算节点时,会增加对controller节点的网络负载。可能会引起controller节点也需要扩展。从这个方面考虑,nova-network部署在计算节点上是比较好的,可以起到网络负载分流的作用。但也有不足之处,比如计算节点其实应该尽可能的单纯,上面跑的服务越单纯越少,对于虚拟机的稳定性肯定越好。 另外, nova-conductor已经将数据库访问操作从nova-compute中抽离,如果nova-network节点部署在计算节点上,那计算节点上任然会有数据库访问操作。

Glance(镜像管理项目)

GlanceOpenstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找、注册和检索等。 Glance提供Restful API可以查询虚拟机镜像的metadata及获取镜像。 Glance可以将镜像保存到多种后端存储上,比如简单的文件存储或者对象存储。

glance-api

glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。

glance-api 不会真正处理请求。 如果操作是与 image metadata(元数据)相关,glance-api 会把请求转发给 glance-registry; 如果操作是与 image 自身存取相关,glance-api 会把请求转发给该 image store backend。在控制节点上可以查看 glance-api 进程

 glance-regis

glance-registry 是系统后台运行的服务进程。 负责处理和存取 image metadata,例如 image 的大小和类型。在控制节点上可以查看 glance-registry 进程

 Glance 支持多种格式的 image,包括DatabaseImage etadata 会保持到 database 中,

默认是 MySQL 在控制节点上可以查看 glance database 信息 

Store backend

Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 Glance 支持多种 backend

Cinder(磁盘管理)

OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。块存储服务通常包含下列组件:

cinder-api:接受API请求,并将其路由到cinder-volume执行。

cinder-volume:与块存储服务和cinder-scheduler的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。cinder-volume服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。

cinder-scheduler守护进程:选择最优存储提供节点来创建卷。其与nova-scheduler组件类似。

cinder-backup守护进程:cinder-backup服务提供任何种类备份卷到一个备份存储提供者。就像cinder-volume服务,它与多种存储提供者在驱动架构下进行交互。

Swift(网盘,对象)

OpenStack Object StorageSwift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、冗余和持久性。本文将从架构、原理和实践等几方面讲述SwiftSwift并不是文件系统或者实时的数据存储系统,它称为对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索、调整,必要时进行更新

 

Swift特性

OpenStack官网中,列举了Swift20多个特性,其中最引人关注的是以下几点。

 

极高的数据持久性

一些朋友经常将数据持久性(Durability)与系统可用性(Availability)两个概念混淆,前者也理解为数据的可靠性,是指数据存储到系统中后,到某一天数据丢失的可能性。例如Amazon S3的数据持久性是119,即如果存储1万(40)个文件到S3中,1千万(70)年之后,可能会丢失其中1个文件。那么Swift能提供多少个9SLA呢?下文会给出答案。针对Swift在新浪测试环境中的部署,我们从理论上测算过,Swift5Zone

5×10个存储节点的环境下,数据复制份是为3,数据持久性的SLA能达到109

 

完全对称的系统架构

对称意味着Swift中各节点可以完全对等,能极大地降低系统维护成本。

 

无限的可扩展性

这里的扩展性分两方面,一是数据存储容量无限可扩展;二是Swift性能(如QPS、吞吐量等)可线性提升。因为Swift是完全对称的架构,扩容只需简单地新增机器,系统会自动完成数据迁移等工作,使各存储节点重新达到平衡状态。

 

无单点故障

在互联网业务大规模应用的场景中,存储的单点一直是个难题。例如数据库,一般的HA方法只能做主从,并且一般只有一个;还有一些其他开源存储系统的实现中,元数据信息的存储一直以来是个头痛的地方,一般只能单点存储,而这个单点很容易成为瓶颈,并且一旦这个点出现差异,往往能影响到整个集群,典型的如HDFS。而Swift的元数据存储是完全均匀随机分布的,并且与对象文件存储一样,元数据也会存储多份。整个Swift集群中,也没有一个角色是单点的,并且在架构和设计上保证无单点业务是有效的。

 

简单、可依赖

简单体现在架构优美、代码整洁、实现易懂,没有用到一些高深的分布式存储理论,而是很简单的原则。可依赖是指Swift经测试、分析之后,可以放心大胆地将Swift用于最核心的存储业务上,而不用担心Swift捅篓子,因为不管出现任何问题,都能通过日志、阅读代码迅速解决。

 

应用场景

Swift提供的服务与Amazon S3相同,适用于许多应用场景。最典型的应用是作为网盘类产品的存储引擎,比如Dropbox背后就是使用Amazon S3作为支撑的。在OpenStack中还可以与镜像服务Glance结合,为其存储镜像文件。另外,由于Swift的无限扩展能力,也非常适合用于存储日志文件和数据备份仓库。

 

Swift架构概述

Swift主要有三个组成部分:Proxy ServerStorage ServerConsistency Server。其架构如图1所示,其中StorageConsistency服务均允许在Storage Node上。Auth认证服务目前已从Swift中剥离出来,使用OpenStack的认证服务Keystone,目的在于实现统一OpenStack各个项目间的认证管理。

 

实操如下

部署逻辑图

 

节点规划:

Ip 主机名 节点

192.168.200.10 controller 控制节点

192.168.200.20 compute 计算机节点

 

部署OpenStack平台

1. 基础环境配置

1IP地址配置

控制节点和计算节点,安装最小化CentOS 7.2操作系统,配置每个节点IP地址。并使用secureCRT进行连接。

controller节点修改部分

cat /etc/sysconfig/network-scripts/ifcfg-eno16777736

BOOTPROTO=static

IPADDR=192.168.10.10

NETMASK=255.255.255.0

compute节点修改部分同上就ip不同

 

 

 

修改查看


2)上传基础镜像

上传XianDian-IaaS-v2.2.isoCentOS-7-x86_64-DVD-1511.iso两个镜像包至controller节点/root目录中,并将ISO文件挂载至/opt/目录中

 

[root@localhost ~]# mkdir /opt/centos7.2

[root@localhost ~]# mkdir /opt/iaas

[root@localhost ~]# mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos7.2/

[root@localhost ~]# mount /root/XianDian-IaaS-v2.2.iso /opt/iaas/

 

3)配置YUM源文件

controller节点

[root@localhost ~]# rm -rf /etc/yum.repos.d/CentOS-*

[root@localhost ~]# cat > /etc/yum.repos.d/local.repo <<EOF

 

 

 

4)控制节点安装ftp服务

控制节点安装vsftpd服务,提供计算节点ftp访问方式。

[root@localhost ~]# yum install vsftpd -y

/etc/vsftpd/vsftpd.conf配置中添加一行代码

anon_root=/opt

 

重启vsftpd服务:

[root@localhost ~]# systemctl restart vsftpd

5)配置防火墙策略

在控制节点和计算节点中关闭防火墙

 

6)安装iaas-xiandian服务

在控制节点和计算节点安装iaas-xiandian软件包。

yum install iaas-xiandian -y

7)配置环境变量

控制节点和计算节点配置环境变量的配置文件/etc/xiandian/openrc.sh,配置参数说明如下

HOST_IP=192.168.10.10

HOST_NAME=controller

HOST_IP_NODE=192.168.10.20

HOST_NAME_NODE=compute

RABBIT_USER=openstack

RABBIT_PASS=000000

DB_PASS=000000

DOMAIN_NAME=demo

ADMIN_PASS=000000

DEMO_PASS=000000

KEYSTONE_DBPASS=000000

GLANCE_DBPASS=000000

GLANCE_PASS=000000

NOVA_DBPASS=000000

NOVA_PASS=000000

NEUTRON_DBPASS=000000

NEUTRON_PASS=000000

METADATA_SECRET=000000

INTERFACE_NAME=eno33554960

##节点第二块网卡名称

CINDER_DBPASS=000000

CINDER_PASS=000000

BLOCK_DISK=sda3

##计算节点cinder服务使用空分区

SWIFT_PASS=000000

OBJECT_DISK=sda4

##计算节点swift服务使用空分区

STORAGE_LOCAL_NET_IP=192.168.10.20

##计算节点地址

2. 使用脚本安装OpenStack平台

1)安装基础服务

控制节点和计算节点通过脚本安装基础服务

[root@localhost ~]# iaas-pre-host.sh

控制节点安装完成后,按Ctrl+D键退出并重新登录,使主机名生效

 

 

2)安装MySQL数据库服务

控制节点通过脚本安装MySQL数据库服务

[root@controller~]# iaas-install-mysql.sh

3)安装Keystone认证服务

控制节点通过脚本安装Keystone认证服务

[root@controller ~]# iaas-install-keystone.sh

4)安装Glance镜像服务

控制节点通过脚本安装Glance镜像服务

[root@controller ~]# iaas-install-glance.sh

5)安装Nova计算服务

controller节点通过脚本安装计算服务:

[root@controller ~]# iaas-install-nova-controller.sh

compute节点通过脚本安装计算服务:

[root@compute~]# iaas-install-nova-compute.sh

6)安装Neutron网络服务

controller节点通过脚本安装网络服务:

[root@controller ~]# iaas-install-neutron-controller.sh

[root@controller ~]# iaas-install-neutron-controller-gre.sh

compute节点通过脚本安装网络服务:

[root@compute~]# iaas-install-neutron-compute.sh

[root@compute~]# iaas-install-neutron-compute-gre.sh

7)安装Dashboard服务

controller节点通过脚本安装Dashboard服务

[root@controller ~]# iaas-install-dashboard.sh

8)安装Cinder块存储服务

controller节点通过脚本安装块存储服务:

[root@controller ~]# iaas-install-cinder-controller.sh

compute节点通过脚本安装块存储服务:

[root@compute~]# iaas-install-cinder-compute.sh

9)安装Swift对象存储服务

controller节点通过脚本安装对象存储服务

[root@controller ~]# iaas-install-swift-controller.sh

compute节点通过脚本安装对象存储服务

[root@compute ~]# iaas-install-swift-compute.sh

10)访问Dashboard服务

打开浏览器访问http://192.168.10.10/dashboard地址,输入环境变量文件中填写的密码,域为demo、用户名为admin、密码为000000,

 

 

 

 

OpenStack平台使用

1. 创建镜像

1)复制镜像至控制节点

在OpenStack控制节点找到qcow2镜像

[root@controller iaas]# cd  /opt/iaas/images/

[root@controller images]# ls

CentOS_6.5_x86_64_XD.qcow2  CentOS_7.2_x86_64_XD.qcow2  MySQL_5.6_XD.qcow2

2)上传镜像至Glance服务

controller节点中通过glance命令qcow2镜像上传至平台中

[root@controller images]# source /etc/keystone/admin-openrc.sh

[root@controller images]# glance image-create --name "centos7.2" --disk-format qcow2 --container-format bare --progress < CentOS_7.2_x86_64_XD.qcow2

2. 创建外部网络

1)创建网络

选择菜单项目”→“网络”→“网络”命令,单击右侧“创建网络”按钮,创建虚拟机网络,如图

 

5-3-1创建虚拟机网络

2)设置网络

在弹出的窗口中,输入网络名称为net-gre,管理状态为up。单击“前进”按钮,如图

 

3)创建子网

在弹出的对话框中填写子网信息,最后单击“前进”按钮,如图5-3-3所示(网关为VMwareNAT模式对应网关)。

 

4)设置DHCP地址池

配置DHCP地址池勾选“激活DHCP”复选框,添加“114.114.114.114”的NDS服务器,单击“已创建”按钮创建网络,如图

 

5)选择外部网络

选择菜单栏管理员”→“系统”→“ 网络”命令,在已创建的外部网络中,选择“操作”下拉菜单中“编辑网络”菜单命令,如图

 

3.创建内部网络

1)创建网络

选择菜单栏项目”→“网络”→“网络”命令,右侧单击“创建网络”按钮,创建虚拟机网络,如图

 

2)设置网络

在弹出的对话框中设置网络名称,然后单“前进”按钮

 

(3)设置子网

设置子网名称int-subnet”,网络地址为“10.10.0.0/24”,网关IP地址为“10.10.0.1”,单击“前进”按钮

 

4)设置DHCP

弹出的对话框勾选“激活DHCP”复选框,并点击“已创建”按钮

 

4.创建路由器

1)创建路由

选择菜单栏项目”→“网络”→“路由”命令,右侧单击“新建路由”按钮,创建路由

 

2)设置路由

在弹出的对话框中设置路由名称为route”,在外部网络下拉菜单中,选择外部网络“net-gre”,单击“新建路由”按钮

 

3)添加内部网络端口

击新创建的路由名称进入路由编辑页面

 

选择“接口”标签,单击“增加接口”按钮

 

弹出的对话框选择int-gre”内部网络,然后单击“提交”按钮

 

5. 管理安全组

1)管理default默认安全组

管理访问策略安全组,选择菜单栏项目”→“计算”→“访问&安全”命令,管理default默认规则

 

2)添加放行策略

击右侧“管理规则”按钮,放行通信策略

 

放行所有ICMP协议,单“添加”按钮

 

放行所有TCP协议,单“添加”按钮,

 

放行所有UDP协议,单击“添加”按钮

 

6. 创建云主机

1)创建云主机

创建云主机,选择菜单栏项目”→“计算”→“云主机”命令,单击右侧“创建云主机”按钮

 

 

2)设置云主机名称

在弹出的对话框中输入创建的云主机名称以及数量,然后单“下一步”按钮

 

3)选择云主机镜像

“源”中选择所要使用的镜像文件,单击对应镜像后的+”按钮

 

4)选择云主机资源类型

flavor”中选择所需云主机的资源类型选择m1.small”资源类型,单击对应的“+”按

测试ping 云主机ip

 

Keystone服务运维

 

1. Keystone运维命令

1)创建用户

创建一个名称为alice”账户,密码为“mypassword123”,邮箱为“alice@example.com”。命令如下。

[root@controller ~]# source /etc/keystone/admin-openrc.sh

[root@controller ~]# openstack user create --password mypassword123 --email alice@example.com --domain demo alice  

 

 

从上面的操作可以看出,创建用户需要用户名称、密码和邮件等信息。具体格式如下:

其中,参数<name>代表新建用户名。

2)创建项目

一个Project就是一个项目、团队或组织,当请求OpenStack服务时,必须定义一个项目。例如,查询计算服务正在运行的云主机实例列表。

创建一个名为acme”项目。

[root@controller ~]# openstack project create --domain demo acme  

 

从上面操作可以看出,创建项目需要项目名等相关信息。具体操作格式如下:

其中,参数<project-name>代表新建项目名,参数 <description>代表项目描述名。

3)创建角色

角色限定了用户的操作权限。例如,创建一个角色compute-user”。

从上面操作可以看出,创建角色需要角色名称信息。具体命令格式如下。

[root@controller ~]# openstack role create compute-user

其中参<name>代表角色名称。

 

4)绑定用户和项目权限

添加的用户需要分配一定的权限,这就需要把用户关联绑定到对应的项目和角色。例如,给用户alice”分配“acme”项目下的“compute-user”角色,命令如下。

[root@controller ~]# openstack role add --user alice  --project acme  compute-user

从上面操作可以看出,绑定用户权限需要用户名称、角色名称和项目名称等信息。具体命令格式如下。

$ openstack role add --user <user> --project <project> <role>

其中,参数 <user>代表需要绑定的用户名称,参数<role>代表用户绑定的角色名称,参数<project>代表用户绑定的项目名称。

2. Keystone基础查询命令

1)用户列表查询

OpenStack平台所使用的用户可以通过Keystone组件进行查询。查询当前所有用户列表信息,命令如下:

[root@controller ~]# openstack user list

+-------

可以通过命令查询到具体用户的详细信息,可以查看到用户当前的状态,命令如下:

[root@controller ~]# openstack user show alice

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | 5cf2b1fbdc9e4f799187625e743a8be2 |

| email     | alice@example.com                |

| enabled   | True                             |

| id        | a49a222f8e194342a5a113193897d915 |

| name      | alice                            |

+-----------+----------------------------------+

2)项目列表查询

通过命令,可以查询所创建的项目acme”,也可以查询当前OpenStack平台中所有存在项目列表命令如下

[root@controller ~]# openstack project list

通过命令可以查询acme”项目的详细信息内容,命令如下。

[root@controller ~]# openstack project show acme

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description |                                  |

| domain_id   | 5cf2b1fbdc9e4f799187625e743a8be2 |

| enabled     | True                             |

| id          | c6ddd5dfbd4b42ee8b2591681898faa1 |

| is_domain   | False                            |

| name        | acme                             |

| parent_id   | 5cf2b1fbdc9e4f799187625e743a8be2 |

+-------------+----------------------------------+

3)角色列表查询

通过命令查询创建的角色compute-user”,通过Keystone组件查询角色列表信息,命令如下:

[root@controller ~]# openstack role list

通过命令查询compute-user”角色的详细信息,命令如下:

[root@controller ~]# openstack role show compute-user

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | a1f46d3cbe0d49c1bf619839bdb432e9 |

| name      | compute-user                     |

+-----------+----------------------------------+

4)端点地址查询

Keystone组件管理OpenStack平台中所有服务端点信息通过命令可以查询平台中所有服务所使用的端点地址信息命令如下

[root@controller ~]# openstack endpoint list

 

Glance服务运维

1创建镜像

创建一个名称为cirros”镜像,镜像文件使用提供的“cirros-0.3.4-x86_64-disk.img”。命令如下:

[root@controller ~]# glance image-create --name "cirros" --disk-format qcow2 --container-format bare --progress < cirros-0.3.4-x86_64-disk.img

 

 

2.查看镜像列表

查询镜像列表命令及结果如下所示。

[root@controller ~]# glance image-list

 

3.Glance镜像运维

1)查看镜像详情

通过glance image-show命令查看镜像的详细信息(id参数可以是对应镜像id或者镜像名称),如下所示:

# glance image-show bdd8d652-7d10-4a77-8a9b-b8563df42d5a

 

(2)更改镜像

可以使用glance image-update更新镜像信息,使用glance image-delete删除镜像信息。如果需要改变镜像启动硬盘最低要求值(min-disk)时,min-disk默认单位为G。使用glance image-update命令更新镜像信息操作如下。

# glance image-update --min-disk=1  bdd8d652-7d10-4a77-8a9b-b8563df42d5a

查询结果如下所示。

 

3)删除镜像

通过命令删除镜像cirros操作和执行结果如下所示。

[root@controller ~]# glance image-delete bdd8d652-7d10-4a77-8a9b-b8563df42d5a

[root@controller ~]# glance image-list

 

 

Nova服务运维

1. Nova运维命令

1Nova管理安全组规则

创建一个名为test的安全组,描述为'test the nova command about the rules',命令及执行结果如下所示:

[root@controller ~]# nova secgroup-create test 'test the noca command about the rules'

+--------------------------------------+------+---------------------------------------+

| Id                                   | Name | Description                           |

+--------------------------------------+------+---------------------------------------+

| a73e04ca-608f-4937-ac52-4ad80b996b80 | test | test the noca command about the rules |

+--------------------------------------+------+---------------------------------------+

2Nova管理虚拟机类型

使用命令创建一个名为testID6,内存为2048 MB,磁盘为20 GBvCPU数量为2的云主机类型。具体命令及执行结果如下所示。

[root@controller ~]# nova flavor-create test 6 2048 20 2

+----+------+-----------+------+-----------+------+-------+-------------+-----------+

| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |

+----+------+-----------+------+-----------+------+-------+-------------+-----------+

| 6  | test | 2048      | 20   | 0         |      | 2     | 1.0         | True      |

+----+------+-----------+------+-----------+------+-------+-------------+-----------+

查看test云主机类型的详细信息如下所示:

[root@controller ~]# nova flavor-show test

+----------------------------+-------+

| Property                   | Value |

+----------------------------+-------+

| OS-FLV-DISABLED:disabled   | False |

| OS-FLV-EXT-DATA:ephemeral  | 0     |

| disk                       | 20    |

| extra_specs                | {}    |

| id                         | 6     |

| name                       | test  |

| os-flavor-access:is_public | True  |

| ram                        | 2048  |

| rxtx_factor                | 1.0   |

| swap                       |       |

| vcpus                      | 2     |

+----------------------------+-------+

Neutron服务运维

1.Neutron查询

使用Neutron相关命令查询网络服务的列表信息中的“binary”一列,代码如下所示。

[root@xiandian ~]#  neutron agent-list -c binary

 

 

2.查询网络详情

查询网络详细信息的命令和执行结果如下。

[root@xiandian ~]# neutron net-list

 

 

3.查询Neutron相关组件服务

使用Neutron相关命令查询网络服务DHCP agent的详细信息(id为查询到DHCP agent服务对应id),代码如下所示。

[root@xiandian ~]# neutron agent-list

 

 [root@xiandian ~]# neutron agent-show a3504292-e108-4ad1-ae86-42ca9ccfde78

 

Cinder服务运维

1.创建云硬盘

创建一个2 GB的云硬盘extend-demo,命令如下。

# cinder create --name cinder-volume-demo 2

 

 

通过cinder-list命令查看云硬盘信息。

# cinder list

执行结果如下。

 

2.创建云硬盘卷类型

创建type标识的卷类型。

可以通过cinder type-create命令来创建卷类型,创建了一个名为“lvm”的卷类型。

# cinder type-create lvm

 

可以通过cinder type-list命令来查看现有的卷类型。

# cinder type-list

 

3.创建带标识云硬盘

下面以type标识为例,创建一块带“lvm”标识的云硬盘,命令如下。

# cinder create --name type_test_demo --volume-type lvm 1

 

创建成功后可以通过命令查看结果,可以看到该卷的volume_type字段已修改为“lvm”,查询命令如下。

# cinder show type_test_demo

 

删除指定的Cinder卷,删除Cinder卷的方法比较简单,用户可以通过命令“cinder delete <volume> [<volume> ...]”来删除一个或多个Cinder卷,删除命令如下所示。

# cinder delete cinder-volume-demo

 

Swift服务运维

服务简介:

Swift构筑在比较便宜的标准硬件存储基础设施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术提高数据冗余性、高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。在OpenStack中,Swift主要用于存储虚拟机镜像,用于Glance的后端存储。在实际运用中,Swift的典型运用是网盘系统,代表是“Dropbox”,存储类型大多为图片、邮件、视频和存储备份等静态资源。

1. Swift查询命令

1)创建容器

通过命令行实现对Swift上数据的操作,首先需要创建一个名称为“test”的容器,命令如下。

# swift post test

2)查询容器

查看test”容器里面的内容,命令如下。

# swift list test

通过显示结果可以看出目前test”容器里面的内容是空的,这时用户希望将本地的file目录内容递归上传到“test”容器内。首先创建file目录,并同时新建3个文件one.txttwo.docthree.png。具体命令如下:

# mkdir file

# touch one.txt

# touch two.doc

# touch three.png

2.Swift上传和下载

1)上传文件至容器

上传时首先需要上传一个空白的file”目录,命令如下。

# swift upload test file/

one.txt文件上传到“test”容器内file目录内,命令和执行结果如下:

# swift upload test/file one.txt

换一种方式将剩下的two.docthree.png递归上传到“test”容器下的file目录内,命令和执行结果如下:

# mv two.doc three.png file/

# swift upload test file/

file/three.png

file/two.doc

 

2)从容器中下载文件

数据在Swift集群内保存,随时供用户下载使用,现在下载three.png文件,命令和执行结果如下:

# swift download test file/three.png

 

3)从容器中删除文件

目前磁盘容量有限,需要删除一些相对价值低的数据,空出更多的空间。这时已经将three.png下载到本地,所以暂时将three.png从对象存储服务器中删除,命令和执行结果如下:

# swift delete test file/three.png

 

4)查看容器服务状态

用户还可以通过swift stat命令来查看整个Account账户下Swift状态,命令和执行结果如下:

# swift stat

 

 

构建LNMP+WordPress

1.安装LNMP环境

登录 虚拟机,首先修改主机名

 

将提供的lnmp1.6-full.tar.gz软件包,上传到虚拟机的/root目录下,并解压,

[root@lnmp ~]# tar -zxvf lnmp1.6-full.tar.gz

 

解压完毕后,进入lnmp1.6-full目录,执行安装脚本,(在执行脚本前,需配置DNS)命令如下:

[root@lnmp ~]# cd lnmp1.6-full

[root@lnmp lnmp1.6-full]# ./install.sh

根据虚拟机配置的不同,安装时间会有差异,在执行脚本完毕后,会有成功的提示,如图3-6-1所示。(根据提示,选择默认的软件安装版本,设置数据库密码,安装成功后按Ctrl+C键退出)

 

使用浏览器,输入虚拟机Ip,查看界面

 

2.部署WordPress应用

在部署WordPress之前,还需要做几个基础的配置,首先是数据库,需要登录数据库,创建WordPress数据库并赋予远程权限

 

将提供的wordpress-4.7.3-zh_CN.zip压缩包上传至虚拟机的/root目录并解压,命令如下:

[root@lnmp ~]# unzip wordpress-4.7.3-zh_CN.zip

进入/home/wwwroot/default目录,将index.html删除,命令如下:(该目录为Nginx的项目目录,删除原本存在的默认页面)

[root@lnmp default]# rm -rf index.html

回到/root/wordpress目录,将该目录下的所有文件,复制到/home/wwwroot/default目录下,并赋予777的权限,命令如下:

[root@lnmp wordpress]# cp -rvf * /home/wwwroot/default

[root@lnmp wordpress]# cd /home/wwwroot/default/

[root@lnmp default]# chmod 777 *

 

在/home/wwwroot/default/目录下,可以看见一个wp-config-sample.php配置文件,该文件是WordPress应用提供了一个模板配置文件,将该模板复制一份并改名为wp-config.php,然后编辑该文件,命令如下:

 

 

修改完毕后,保存退出,在浏览器中输入地址192.168.200.20,刷新页面,进入WordPress安装界面,填写必要信息,然后单击左下角“安装WordPress”按钮,

 

 

 

3.验证登陆

登录后,进入WordPress应用的后台仪表盘界面

 

单击左上角myblog”图标,进入博客首页,可以在这里发表文章,记录事迹等

 

 

 

 

推荐阅读