1.1 云计算概述
1.行业比较
- 传统行业
- 传统的应用正在变得越来越复杂,需要支持更多的用户,需要更强的计算能力,需要更加稳定安全等等,而为了支撑这些不断增长的需求,企业不得不去购买各类硬件设备(服务器,存储,带宽等等)和软件(数据库,中间件等等),另外还需要组建一个完整的运维团队来支持这些设备或软件的正常运作,这些维护工作就包括安装、配置、测试、运行、升级以及保证系统的安全等。便会发现支持这些应用的开销变得非常巨大,而且它们的费用会随着你应用的数量或规模的增加而不断提高。这也是为什么即使是在那些拥有很出色IT部门的大企业中,那些用户仍在不断抱怨他们所使用的系统难以满足他们的需求。而对于那些中小规模的企业,甚至个人创业者来说,创造软件产品的运维成本就更加难以承受了
- 新行业
- 所以,云计算,应运而生,更大、更快、更强,针对上述问题解决方案便是”云计算”!将应用部署到云端后,可以不必再关注那些令人头疼的硬件和软件问题,它们会由云服务提供商的专业团队去解决。使用的是共享的硬件,这意味着像使用一个工具一样去利用云服务(就像插上插座,你就能使用电一样简单),只需要按照你的需要来支付相应的费用,而关于软件的更新,资源的按需扩展都能自动完成
2.形象比喻
- 水龙头观点论
- 当需要的时候,扭开水龙头,水就来了,只需要操心交水费就是了
- 当你需要用一个软件时,你不用跑去电脑城,打开应用商店,它就下载下来了,你只需要交钱就是了
- 当你想看报纸的时候,你不用跑去报刊亭,只要打开头条新闻,新闻唾手可得
- 当你想看书的时候,你不用跑去书城,只需要打开阅读软件,找到这样的一本书,在手机上阅读
- 当你想听音乐的时候,你不用再跑去音像店苦苦找寻CD光碟,打开音乐软件,就能聆听音乐
- 云计算,像在每个不同地区开设不同的自来水公司,没有地域限制,优秀的云软件服务商,向世界每个角落提供软件服务,就像天空上的云一样,不论你身处何方,只要你抬头,就能看见!
- 共享单车-滴滴出行论
- 出行需要用车,云计算或者云服务好比乘坐出租车或专车快车共享单车,随时需要随时用,按用量(路程)付费即可
- 自己买车开车是混合云,车是自己的,出去付费停车或加油相当于部分使用公有云,而亚马逊或微软云在国内跟黑车差不多被政策限制
- 一日三餐吃货论
- 饿了要吃饭,在家里自己做饭属于自建私有云,需要建造厨房购买锅碗瓢盆柴米油盐等,吃完饭还需要自己刷锅洗碗等运维工作,费时费力;外面餐馆提供的就相当于公有云服务,按需胡吃海塞吃完结账抹嘴走人,餐馆后厨如何安排做菜顺序并加快出菜速度就是负载均衡和虚拟化概念;请厨师到家里上门做饭则属于典型的混合云,在资产安全的情况下有限使用公有云
3.”云计算”五大特点
1)大规模、分布式
“云”一般具有相当的规模,一些知名的云供应商如Google云计算、Amazon、IBM、微软、阿里等也都拥能拥有上百万级的服务器规模。而依靠这些分布式的服务器所构建起来的“云”能够为使用者提供前所未有的计算能力
2)虚拟化
云计算都会采用虚拟化技术,用户并不需要关注具体的硬件实体,只需要选择一家云服务提供商,注册一个账号,登陆到它们的云控制台,去购买和配置你需要的服务(比如 云服务器,云存储,CDN等等),再为你的应用做一些简单的配置之后,你就可以让你的应用对外服务了,这比传统的在企业的数据中心去部署一套应用要简单方便得多。而且你可以随时随地通过你的PC或移动设备来控制你的资源,这就好像是云服务商为每一个用户都提供了一个IDC(Internet Data Center)一样
3)高可用性和扩展性
知名的云计算供应商一般都会采用数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性。基于云服务的应用可以持续对外提供服务(7*24小时),另外“云”的规模可以动态伸缩,来满足应用和用户规模增长的需要
4)按需服务更加经济
用户可以根据自己的需要来购买服务,甚至可以按使用量来进行精确计费。这能大大节省IT成本,而资源的整体利用率也将得到明显的改善
5)安全
网络安全已经成为所有企业或个人创业者必须面对的问题,企业的IT团队或个人很难应对那些来自网络的恶意攻击,而使用云服务则可以借助更专业的安全团队来有效降低安全风险
结束语:关于"云计算"已经深深植入到我们生活中的点点滴滴,平时常用的那些APP或网站,基本都已经离不开"云计算"作为背后的强大服务支持,如剁手党爱恨交加的淘宝、京东,社交痴迷党的微信、微博等等。 越来越多的企业开始使用基于云的企业服务,生活因"云计算"正在发生着革命性的变革和改变!
4.云计算服务层次
IaaS(Infrastructure as a Service)基础设施即服务
消费者通过Internet可以从完善的计算机基础设施获得服务,如”硬件服务器租用”,有了IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用,节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用 一些大的IaaS公司包括Amazon、Microsoft、VMWare、Rackspace和Red Hat
PaaS(Platform as a Service)平台即服务
指将软件研发的平台作为一种服务,提交给用户,如”Java软件工程师的Tomcat”,某些时候也叫做中间件,你公司所有的开发都可以在这一层进行,节省了时间和资源;PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统,这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易,网页应用管理、应用设计、应用虚拟主机、存储、安全以及应用开发协作工具等 一些大的PaaS提供者有Google App Engine、Microsoft Azure、Force.com、Heroku、Engine Yard,最近兴起的公司有AppFog、Mendix和Standing Cloud
SaaS(Software as a Service)软件即服务
通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,如”Gmail”,生活每天接触的一层,大多是通过网页浏览器来接入,任何一个远程服务器上的应用都可以通过网络来运行,就是SaaS,消费的服务完全是从网页如Netflix、MOG、Google Apps、Box.net、Dropbox或者苹果的iCloud那里进入这些分类,尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分 一些用作商务的SaaS应用包括Citrix的Go To Meeting、Cisco的WebEx、Salesforce的CRM、ADP、Workday和SuccessFactors
- 如何理解IaaS、PaaS、SaaS?
我们把企业信息服务比做盖房子,传统还需自行购买,材料搭建房子,而laaS是根据建造的需要,向大家提供各种各样的砖头;接下来我们发现,一块砖一块砖的盖房子,效率太低了,这时候我们发明了预制件,在工厂里面,把墙面、楼板、立柱等等都预制好,到了现场直接组装,就可以完成建造,而这个提供预制件的服务就是PaaS,PaaS是资源提供方和最终使用方直接的过渡;SaaS做得更干脆,直接为我们提供一个完整的房子
回头再看SaaS为我们提供的房子,有可能是毛坯也有可能是精装,更有可能是能够根据我们的需要,自助变换户型、自助选择各种各样的装饰模块来装潢的产品三种房子代表三种不同的SaaS服务,你想要毛坯还是精装,或者是第三种自助服务? 现在可以忘掉房子的比喻,看下IaaS、PaaS、SaaS之间的区别
-
私有云(公司自行部署云环境)、公有云(云服务提供商购买)、混合云(私有云+公有云)
网上很流行的一种比喻:男人找个女友或老婆是自建私有云,单身约炮或者到娱乐场所消费是公有云服务,按需使用并可弹性扩容,已婚男人找二奶小蜜则属于混合云
1.2 OpenStack
1.OpenStack概述
OpenStack由美国国家航空航天局(NASA)和Rackspace合作研发,2010年7月以Apache 2.0许可证授权开源,OpenStack可以控制整个数据中心计算、存储和网络资源的大型资源池,OpenStack通过各种组件提供了基础设施即服务(IaaS)的解决方案 OpenStack项目是一个开源的云计算平台,旨在实现很简单、大规模可伸缩、功能丰富,来自世界各地云计算开发人员和技术人员共同创建OpenStack项目,OpenStack通过一组相关的服务提供一个基础设施即服务(IaaS)解决方案,每个服务提供了一个应用程序编程接口(API),促进了这种集成,根据需要可以安装部分或全部服务oss 500G
-
下图描述了构成OpenStack架构的OpenStack服务
-
下面的图显示了OpenStack服务之间的关系
在制定好的云系统平台上,用户在经 KeyStone 模块授权后(Provide Auth),通过 Horizon 或 RestAPI 模式创建虚拟机服务,创建过程包括了利用 Nova 模块创建虚拟机实例(VM Provision),该 VM 采用了 Glance 模块提供的镜像服务(Provide Image),然后用 Neutron 模块为新建的 VM 分配 IP 地址,把其纳入到虚拟网络中(Provide network connectivity),之后再通过 Cinder 模块创建的 Volume 为 VM 挂载存储块。整个过程都在 Cellometer 模块的资源监控下(Monitors),Cinder 产生的 Volume 和 Glance 提供的 Image 可以通过 Swift 的对象存储机制进行保存
通过以上解析我们可以看到 OpenStack 云平台服务的提供主要是依靠 Nova、Glance、Cinder 、和 Neutron 四个核心模块完成的,相对四个辅助模块 Horizon、Cellometer、Keystone、Swift 提供的访问、监控、权限和对象存储功能
正如OpenStack概念架构图显示,OpenStack包含一些独立的部分,称作OpenStack服务,所有服务授权认证都是通过Identity服务,单个服务通过公共APIs与其他服务进行交互,特权管理员用户命令除外;在内部OpenStack服务是由几个进程组成,所有服务至少有一个API进程,用来监听API请求,预处理它们并传递它们到其他服务;除了Identity服务外,其他服务实际工作是由不同的进程完成 对于一个服务之间的进程通信,使用AMQP消息块,这些服务状态存储在一个数据库中,当部署和配置OpenStack云,可以选择不同的消息队列服务和数据库服务,如RabbitMQ、MySQL、MariaDB和SQLite 下面的图显示了大多数通用OpenStack云结构
2.OpenStack层
- Keystone:认证管理
- Nova:计算服务
- Glance:虚拟镜像的注册与存储管理
- Cinder:块存储
- Swift:对象存储
- Neutron:网络服务
- Designate:DNS域名解析
- Ironic:裸机部署
- Ceilometer:计费服务
- Horizon:Django开发的Web管理界面
- Barbican:主机密钥管理
- Heat:提供orchestration(对传统中间件高度自动化管理)服务
- Magnum:提供容器服务
- Sahara:提供大数据服务,可部署Hadoop、Spark群集
- Solum:提供应用开发服务
- Muarno:提供应用目录服务,类似App Store,将常用应用发布
- Kolla:容器化所有OpenStack服务,便于OpenStack安装部署和升级
3.OpenStack最简单物理构架
1.3 OpenStack基础服务部署
主机 | 系统 | ip | 网卡 |
---|---|---|---|
controller | Centos 7 1611 64Bit | 192.168.1.10 | vmnet1(桥接) |
compute | Centos 7 1611 64Bit | 192.168.1.20 | vmnet1(桥接) |
注:控制节点内存可设置小点,但计算节点内存越大越好(需建立实例)
1.环境准备(Controller)
[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
//网卡类型为以太网
BOOTPROTO=static
//网卡设置为静态方式
DEVICE=ens32
//网卡名称
ONBOOT=yes
//开机自启该网卡
IPADDR=192.168.1.10
//IP地址配置
NETMASK=255.255.255.0
//子网掩码配置
[root@controller ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens35
[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens35
TYPE=Ethernet
//网卡类型为以太网
BOOTPROTO=dhcp
//网卡设置为自动获取方式
DEVICE=ens35
//网卡名称
ONBOOT=yes
//开机自启该网卡
BOOTPROTO=dhcp
//网卡设置为自动获取方式
[root@controller ~]# systemctl stop firewalld.service
//停止防火墙服务
[root@controller ~]# systemctl disable firewalld.service
//将防火墙服务设置为开机禁用
[root@controller ~]# vi /etc/hostname
//编辑主机名
controller
//指定主机名
[root@controller ~]# vi /etc/hosts
192.168.1.10 controller
//指定控制节点对应信息
192.168.1.20 compute
//指定计算节点对应信息
[root@controller ~]# reboot
//重启
2.环境准备(Compute)
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
//网卡类型为以太网
BOOTPROTO=static
//网卡设置为静态方式
DEVICE=ens32
//网卡名称
ONBOOT=yes
//开机自启该网卡
IPADDR=192.168.1.20
//IP地址配置
NETMASK=255.255.255.0
//子网掩码配置
[root@compute ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens35
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens35
TYPE=Ethernet
//网卡类型为以太网
BOOTPROTO=dhcp
//网卡设置为自动获取方式
DEVICE=ens35
//网卡名称
ONBOOT=yes
//开机自启该网卡
[root@compute ~]# systemctl stop firewalld.service
//停止防火墙服务
[root@compute ~]# systemctl disable firewalld.service
//将防火墙服务设置为开机禁用
[root@compute ~]# vi /etc/hostname
//编辑主机名
compute
//指定主机名
[root@compute ~]# vi /etc/hosts
192.168.1.10 controller
//指定控制节点对应信息
192.168.1.20 compute
//指定计算节点对应信息
[root@compute ~]# reboot
//重启
3.安装配置NTP服务
Controller节点配置chrony
[root@controller ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux
[root@controller ~]# setenforce 0
//临时允许所有SElinux操作
[root@controller ~]# rm -rf /etc/yum.repos.d/*
//删除默认自带YUM源
[root@controller ~]# vi /etc/yum.repos.d/local.repo
//自行新建本地YUM
[local]
//仓库名称定义
name=local
//标识名
baseurl=file:///mnt
//指定源文件所在位置(该处为光盘挂载点)
enabled=1
//启用该仓库
gpgcheck=0
//不验证软件包密钥
[root@controller ~]# mount /dev/cdrom /mnt/
//挂载光盘到/mnt/目录
[root@controller ~]# yum clean all && yum repolist
//清除YUM缓存并重新生成
[root@controller ~]# yum -y install vim wget
//下载必要工具
[root@controller ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
//下载官方在线源
[root@controller ~]# yum -y install chrony
//安装时间同步服务
[root@controller ~]# vim /etc/chrony.conf
7 server controller iburst
//将本地作为时间同步基准(默认网络时间)(数字代表行数)
[root@controller ~]# systemctl enable chronyd.service
//开机自启chronyd服务
[root@controller ~]# systemctl restart chronyd.service
//重启chronyd服务
[root@controller ~]# chronyc sources
//查看chrony服务状态
Compute节点配置chrony
[root@compute ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux
[root@compute ~]# setenforce 0
//临时允许所有SElinux操作
[root@compute ~]# rm -rf /etc/yum.repos.d/*
//删除默认自带YUM源
[root@compute ~]# scp root@192.168.1.10:/etc/yum.repos.d/* /etc/yum.repos.d/
[root@compute ~]# mount /dev/cdrom /mnt/
//挂载光盘