云计算与虚拟化

云计算与虚拟化这个概念是什么时候出现在我们脑海里的?一开始的亚马逊云服务再到阿里巴巴推出的阿里云,紧接着各大厂商争先恐后的推出自己的公共云平台,腾讯云,华为云,微软云等等,那么究竟什么是云服务和虚拟化?

首先解释什么是云计算,云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。 现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。

再来说说什么是虚拟化,虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

OK,那么我们现在就能总结一下,首先云计算是一种模式而且是通过网络访问按需使用,但是云计算并不等于虚拟化,而虚拟化分为硬件虚拟化和软件虚拟化,全虚拟化和半虚拟化

  传统数据中心所面临的的问题

为什么云计算与虚拟化这么火,原因很简单,按照我们之前传统的模式,首先和数据中心机房签订合同然后自己购买服务器,安装系统,部署对应的环境,然后出了问题可能还要联系机房授权进行维护这是要多麻烦就有多麻烦,其次普片的服务器存在资源利用率低,资源分配不合理的情况,许多公司的架构都遵循一个非常守旧的观念,那就是一台服务器就只搭建一个服务,这让使其CPU的使用资源都是非常的低,这可不是说不好,但是我觉得非常浪费,我们运维人员和架构师就是为公司省钱并且提高性能的,传统的模式还有一个自动化能力差的问题,迁移、部署都是非常繁琐,同时硬件升级的时候还可能需要停机,以上的种种都是成就了云计算与虚拟化的大功臣啊

  云计算的分类

云计算可以概括性的分为三类:公有云、私有云、混合云

公有云:使用第三方的云服务商的产品,如:阿里云、腾讯云等

私有云:在自己的机房搭建云平台,比如接下来介绍的OpenStack,私有云主要提供了私密的性质,毕竟公有云的数据都是存在别人的地方

混合云:公有云+私有云=混合云,为什么会有这种模式,举个简单的例子,双十一,偶尔的自己平台撑不住,这时候依靠别人平台按需按时去使用

  云计算的分层

  • Packaged Software

  • Infrastructure as a Service

  • Platfrom as a Service

  • Software as a Service

  OpenStack

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目,这也是为什么OpenStack在这么火的原因,哪怕你只改了其中的一个字母拿去售卖都是合法的,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作,以Python编程语言编写,整合Tornado网页服务器、Nebula运算平台,使用Twisted软件框架,遵循Open Virtualization Format、AMQP、SQLAlchemy等标准,而虚拟机器软件支持包括:KVM、Xen、VirtualBox、QEMU、 LXC 等,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。OpenStack云计算平台,帮助服务商和企业内部实现类似于Amazon EC2和S3的云基础架构服务(Infrastructure as a Service,IaaS)。OpenStack包含两个主要模块:Nova 和 Swift,前者是NASA开发的虚拟服务器部署和业务计算模块;后者是Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有Rackspace和NASA 的大力支持外,还有包括Dell、Citrix、Cisco、Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台Eucalyptus的态势。

  OpenStack核心项目模块

  • 计算服务模块:Nova,一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。

  • 存储服务模块:Cinder,为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。

  • 镜像服务模块:Glance,一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。

  • 身份验证模块:Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。

  • 网络服务模块:Neutron,提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。

  • 界面服务模块:Horizon,OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。

[题外话:Openstack不管是版本的命名还是说插件模块的命名都是非常有趣的,随缘起名字,就是那么佛性]

  OpenStack架构

OpenStack因Open而开放,因组件而灵活,因包容而博大。有计算、网络、对象存储、块存储、身份、镜像服务、门户、测量、部署编排、数据库服务等等组件,有的组件可以根据需要选择安装,组网结构也很灵活、多样。实现了支持接入多种主流虚拟机软件:KVM、LXC、QEMU、Hyper-V、VMware、XenServer,也可以自行开发插件接入其他的虚拟化软件。
OpenStack Compute(Nova)是一套控制器,用于为单个用户或使用群组启动虚拟机实例。它同样能够用于为包含着多个实例的特定项目设置网络。OpenStack Compute在公共云处理方面堪与Amazon EC2相提并论;而在私有云方面也毫不逊色于VMware的产品。在公共云中,这套管理机制将提供预制的镜像或是为用户创建的镜像提供存储机制,这样用户就能够将镜像以虚拟机的形式启动。
OpenStack 对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制实现对象存储的系统。这些对象能够通过一个REST API或是像Cyberduck这样可以对接对象存储API的客户端加以恢复。
OpenStack镜像服务 (Glance)是一套虚拟机镜像查找及检索系统。它能够以三种形式加以配置:利用OpenStack对象存储机制来存储镜像;利用Amazon的简单存储解决方案(简称S3)直接存储信息;或者将S3存储与对象存储结合起来,作为S3访问的连接器。OpenStack镜像服务支持多种虚拟机镜像格式,包括VMware(VMDK)、Amazon镜像(AKI、ARI、AMI)以及VirtualBox所支持的各种磁盘格式。镜像元数据的容器格式包括Amazon的AKI、ARI以及AMI信息,标准OVF格式以及二进制大型数据。
OpenStack的开发周期是每年固定发布两个新版本,并且每一个新版软件发布时,开发者与项目技术领导者已经在规划下一个版本的细节。这些开发者来自全球70多个组织,超过1600人。他们采用高级的工具与开发方式,进行代码查看、持续的集成、测试与开发架构,让版本在快速成长的同时也能确保稳定性。

  OpenStack环境

OpenStack虽然说是非常的有趣,部署起来也比较简单,就修改配置文件即可,但是必须规范理解每个的用意,不然就会非常的混乱,下面给大家简单说明一下环境的规范

域名的解析配置

#配置主机名称
vim /etc/hostname
controller.kemin-cloud.com

#配置hosts解析
vim /etc/hosts
192.168.137.51  controller.kemin-cloud.com
192.168.137.52  compute.kemin-cloud.com

网络时间配置

echo "* * * * * ntpdate  -u ntp1.aliyun.com" >> /etc/crontab

OpenStack的Yum仓库

#直接安装用于启用OpenStack仓库的包
yum install -y centos-release-openstack-ocata
#升级更新内核
yum upgrade
#安装 OpenStack 客户端
yum install python-openstackclient
#RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理
yum install openstack-selinux

SQL数据库

#安装SQL数据库
yum install mariadb mariadb-server python2-PyMySQL

#创建并编辑/etc/my.cnf.d/openstack.cnf
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

#启动数据库服务,并将其配置为开机自启
systemctl enable mariadb.service
systemctl start mariadb.service

#初始化数据库
mysql_secure_installation

消息队列

#安装消息队列服务
yum install rabbitmq-server

#启动消息队列服务并将其配置为随系统启动:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

#添加openstack用户:
rabbitmqctl add_user openstack 123

#给openstack用户配置写和读权限:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

#启动rabbitmq的web管理界面
rabbitmq-plugins enable rabbitmq_management

这样子我们就可以通过浏览器访问服务器的15672端口访问了,不过这里需要注意的是前面创建的openstack并不能登录,需要使用guest登录,密码也是geust,建议登陆进去后进行密码修改哟

Memcached缓存服务

#安装Memcached服务
yum install memcached python-memcached

#编辑/etc/sysconfig/memcached文件修改监听端口
vim /etc/sysconfig/memcached
OPTIONS="-l 0.0.0.0,::1,controller"

#启动Memcached服务,并且配置它随机启动
systemctl enable memcached.service
systemctl start memcached.service