本博客是基于VMware vSphere6.7撰写的专栏,分享学习vSphere的经验与总结。
VMware vSphere是云计算领域的一种虚拟化平台,其功能与open stack相似,均实现对服务器资源的汇总与使用,但VMware vSphere有自己独特的优势。VMware vSphere可以通过虚拟化纵向扩展和横向扩展应用、重新定义可用性和简化虚拟数据中心,实现高可用、恢复能力强的基础架构。笔者认为,其在高可用性、安全性要优于open stack平台。如下图是VMware完整的架构图。

VMware vSphere用途主要分为一下几个方面:
虚拟化应用
提供增强的可扩展性、性能和可用性,使用户能够虚拟化应用。
简化虚拟数据中心的管理
凭借功能强大且简单直观的工具管理虚拟机的创建、共享、部署和迁移。
数据中心迁移和维护
执行工作负载实现迁移和数据中心维护,而无需中断应用。
为虚拟机实现存储转型
使您的外部存储阵列更多地以虚拟机为中心来运行,从而提高虚拟机运维和效率。
灵活选择云计算环境的构建和运维方式
使用VMware vSphere和VMware产品体系或开源框架(如open stack和VMware Integrated OpenStack附加模块),可以构建和运维适合生产环境需求的云计算环境。
对于VMware vSphere的优势,主要分为一下几个方面。
通过高利用率和实现自动化获得高效率
可实现15:1或更高的整合率,将硬件利用率从5%~15%提高到80%甚至更高,而且无需牺牲性能。
在整个云计算基础架构范围内最大限度地增加正常运行时间
减少计划外停机时间,并消除用于服务器和存储维护计划内停机时间。
大幅降低IT成本
使资金开销降幅高达70%,运营开销高达30%,从而为VMware vSphere上运行的每个应用降低20%~30%的IT基础架构成本。
兼具灵活性和可控性
快速响应不断变化的业务需求而又不牺牲安全性或控制力,并且为VMware vSphere.上运行的所有关键业务应用提供零接触式基础架构,以及内置的可用性、可扩展性和性能保证。
可自由选择
使用基于标准的通用平台,既可利用现有IT资产,又可利用新一代IT服务,并且通过开放API与来自全球领先技术提供商体系的解决方案集成,以增强VMwarevSphere。
##VMware vSphere核心组件介绍
对于初学者来说,如何理解VMware vSphere体系架构,要先从其组件的功能去学习。VMware vSphere架构模型主要分为两个核心,即ESX i主机,和vCenter Server服务器。也就是说,ESX i主机是对物理服务器上的所有资源进行了虚拟化并汇总成资源池,然后由一个名叫vCenter服务器的主机去管理所有的ESX i主机资源。
ESX i是用于创建和运行虚拟机及虚拟设备的虚拟化平台。一台ESXi主机是将该主机上的物理资源虚拟化,形成一台主机的资源池,实现创建和运行虚拟机及虚拟设备,但因其对虚拟机的管理较为简单,所以由vCenter组件对所有的ESX i主机进行管理与维护。
vCenter Server是管理平台,充当连接到网络的ESX i主机的中心管理员,vCenter Server可用于将多个ESX i主机加入资源池中并管理这些资源。vCenter Server包含了很多组件,可以实现云主机的迁移、备份、容错等诸多高可用功能。
VMware vSphere拓扑图如下:

| 服务器名称 | IP地址 | 说明 |
|---|---|---|
| vCenter主机 | 192.168.8.150 | window server2016服务器 |
| ESX i主机1 | 192.168.8.151 | ESXi6.7镜像 |
| ESX i主机2 | 192.168.8.152 | ESXi6.7镜像 |
在实际生产过程中,也可以使用linux系统作为vCenter服务器,但需要安装相关插件,使得其可图形化操作。这里不做介绍,感兴趣的可以去官网查阅相关开发文档。
百度网盘下载:https://pan.baidu.com/s/1zOkgfI4djhp4Yo6S5J-_4A提取码:6666
准备两台服务器,确保其CPU开启虚拟化。服务器CPU核数至少4核,内存至少4G,越大越好,后面服务跑不起来的,一定是硬件配置不足。
使用上述镜像,制作启动盘,也可以使用VMware workstation虚拟机,配置要高,但需要将硬盘格式改为IDE。
一切准备好后,启动虚拟机,如图,等待即可

继续等待至下图
直接按回车确认
按F11,确认协议

按回车,确认磁盘,(注,如果使用VMware workstation搭建的,需要将硬盘改为IDE格式,其他格式识别不了)

选择us default 回车
输入密码后按回车,需记住密码。
按回车确认
按F11正式开启安装
等待加载完成即可
按回车重启,等待重启完成,修改其IP地址,即安装成功。
按F2进入配置
输入上面设置的密码后回车
使用键盘上下,选择Confuigure Management Network选项,按回车进入
选择IPv4 Configure,按回车进入

使用键盘上下移动,黑色条目在在第三个括号上时,按空格,设置静态IP,然后上下移动至下面,输入IP地址和掩码网关。按回车确认,回到上一个页面后按esc退出,并确认保存配置。
按Y确认保存配置,即可通过本地浏览器,在地址栏里输入IP地址/ui就可以进入了

另外一台服务器配置过程与上文一致。
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or