vSphere 部署及硬件选型指南

才疏学浅,若有纰漏敬请斧正。转载请保留原地址。

基本功能简介

同一台服务器中运行多个虚拟机。纯内部的高速安全网络(仅供服务器内部虚拟机通讯)与混合式内外网络(服务器内部通讯与对外通讯)支持。虚拟机保存于外置存储中。硬盘与内存快照支持。远程维护与管理支持。远程查看并控制虚拟机,无需虚拟机软件支持。

附加功能简介(需要VC及其可能的扩展包):

更新管理器:提供统一的管理界面和存储结构,更新每台服务器的ESX系统与每台虚拟机的系统补丁。

高可用性:允许将群集打开高可用性功能,当某台服务器主机发生故障时,自动于群集的其他服务器中启动受影响的虚拟机。对应的虚拟机必须使用共享式存储,例如磁盘柜系统。

vMotion(内存部分):将运行中的虚拟机动态的从一台服务器移动至另一台服务器,而在执行过程中虚拟机保持正常运行不受影响。对应的虚拟机必须使用共享式存储,例如磁盘柜系统。

vMotion(存储部分):将运行的虚拟机动态的从一个存储子系统移动至另一个存储子系统(例如更换一套硬盘),而在执行过程中虚拟机保持正常运行不受影响。

虚拟机硬件热增加:在不重启虚拟机的情况下,动态的向虚拟机增加内存或CPU。此功能需要虚拟机操作系统支持。Windows Server 2003企业版及以上版本支持动态内存增加功能。Windows Server 2008及以上版本(仅限64位版)支持动态CPU增加功能。

容错:支持将同一个虚拟机同时运行于两台服务器中,当其中任何一台服务器故障时,虚拟机自动切换并保持正常运行。切换过程用户无需干预且虚拟机用户无法察觉。虚拟机系统在切换时保持稳定执行不报错、不重启、不断线。对应的虚拟机必须使用共享式存储,例如磁盘柜系统。

分布式资源管理、分布式电源管理:根据当前启动的服务器负载,动态的规划服务器资源的使用,自动关闭暂时不需使用的服务器并在需要时自动重启,以实现低资源运行。

存储及网络负载控制:分别设置每台虚拟机的存储和网络访问优先性,以符合每个特定的虚拟机优先级要求。

分布式交换机:统一控制所有群集服务器的网络,以方便每台服务器的安装和维护。

主机概述文件:对每台或每组服务器建立主机概述文件,可迅速的应用于服务器,以应对服务器系统重新安装或群集新服务器安装后的快速部署。

单机部署

范围排除:部署不包括电力、空调、网络部分。

限制:每台服务器之间无群集,无互相协作通讯,不支持虚拟机群集功能。每台服务器最多支持256GB内存,32个CPU核心。不支持附加功能。

必选:ESX基础包、ESX扩展包1、ESX扩展包2、ESX扩展包9、软件1、环境需求1(仅需一个IP地址)

可选:

  1. 如需要增加备份硬盘,请选择ESX扩展包3。如采用外置磁盘柜存储,则此选项意义不大。
  2. 如计算负载较大,则配置ESX扩展包10。
  3. 如需要增加供电冗余,则选择ESX扩展包8。对于运行关键应用的群集,推荐采用。
  4. 当运行的虚拟机需要同时连接超过一个网络时,应对服务器增加ESX扩展包6或ESX扩展包7。
  5. 如使用外置磁盘柜启动服务器,则ESX基础包可以不包含硬盘,但必须选择一款ESX扩展包4或ESX扩展包5并支持SAN启动技术。
  6. 如需要改用光纤磁盘柜存储,则可以取消ESX扩展包2,换以ESX扩展包4。如无对应磁盘柜,则需选用群集扩展包6。
  7. 如需要改用ISCSI存储,则可以取消ESX扩展包2,换以ESX扩展包5以及环境需求2。如无对应磁盘柜,则需要选用群集扩展包4。如考虑经济效益,也可以将ESX扩展包5更换为ESX扩展包6,但性能下降明显,且不支持SAN启动技术。

群集部署

范围排除:部署不包括电力、空调、外联网络部分。

服务器功能介绍:群集部署时,ESX服务器负责运行用户的虚拟机,并可自行在群集中实现高可用性与容错功能。ESX不提供任何用户界面。VC主机提供用户管理界面,提供用户操作及服务器的高级功能,以及vMotion等跨服务器的维护功能。当VC发生故障时,用户管理受限,但运行的虚拟机不受影响。

限制:每台服务器最多可以支持320个虚拟机,每个群集最多支持32台服务器,每个群集支持最多3000个虚拟机,所有群集最多支持1000台服务器(同一个VC中),所有群集最多支持15000个虚拟机(同一个VC中),且同时最多只能有10000个处于运行状态。群集连接的管理客户端并发最多120个。在分布式交换机管理模式下,每个服务器最多可以管理32块网卡。

必选:

每台ESX服务器:ESX基础包、ESX扩展包1、ESX扩展包4或ESX扩展包5或ESX扩展包6(用于存储、强烈不推荐采用ESX扩展包6)、软件2或软件3或软件4或软件5(以实际需求考虑)、环境需求1、环境需求4(亦可安装于VC主机中,但用户管理访问不便)。

VC主机:VC基础包

机柜其他:群集基础包、群集扩展包1、群集扩展包3与群集扩展包4(当选用ESX扩展包5时)、群集扩展包5与群集扩展包6(当选用ESX扩展包4时)、群集扩展包4(当选用ESX扩展包6用于存储时)

可选:

  1. 如需要增加ESX服务器系统备份,可对所需的ESX服务器增加ESX扩展包3。由于用户虚拟机保存于外置存储中,ESX服务器并不存放任何用户数据,本可选必要性不明显。
  2. 如计算负载较大,则配置ESX扩展包10。
  3. 如需要增加供电冗余,则对每台ESX服务器选择ESX扩展包8。对于运行关键应用的群集,推荐采用。
  4. 当运行的虚拟机需要同时连接超过一个网络时,应对每台ESX服务器增加ESX扩展包6,并对群集增加群集扩展包1;或应对每台ESX服务器增加ESX扩展包7,并对群集增加群集扩展包2。
  5. 如需要增加虚拟机业务网络备份,应对每台ESX服务器增加ESX扩展包6,并对群集增加群集扩展包1;或应对每台ESX服务器增加ESX扩展包7,并对群集增加群集扩展包2。系统会在交换机或网卡发生故障时自动切换。对于运行关键应用的网络,推荐采用。
  6. 如使用外置磁盘柜启动服务器,则ESX基础包可以不包含硬盘,但必须选择一款ESX扩展包4或ESX扩展包5并支持SAN启动技术。
  7. 如需要增加服务器系统高可用性群集,首先建议将所有的ESX服务器的配置统一化,以达到效率与性能的最佳状态。并根据高可用性的备份数量,增加同种ESX服务器。即原有所有虚拟机可以在x台ESX服务器中运行,现希望当其中n台故障时,系统可以恢复受影响的服务,则需要增加n台同种的ESX服务器。软件2不支持此特性,请选择软件3或软件4或软件5。对于运行关键应用的群集,推荐采用。
  8. 如需要服务器之间移动虚拟机(vMotion),则需要对每台ESX服务器增加ESX扩展包6,并对群集增加群集扩展包1、环境需求2;或应对每台ESX服务器增加ESX扩展包7,并对群集增加群集扩展包2、环境需求2。此功能在系统维护时具有很高实用性,推荐采用。如需要提高vMotion的并发数量,则可以对每台ESX服务器再多增加ESX扩展包6,并对群集增加群集扩展包1、环境需求2;或应对每台ESX服务器再多增加ESX扩展包7,并对群集增加群集扩展包2、环境需求2。
  9. 如需要增加容错虚拟机,首先应满足高可用性群集要求(功能7),并根据需要容错的虚拟机的需求(CPU与内存),继续按需增加同种ESX服务器。并对每台服务器增加ESX扩展包7,对群集增加群集扩展包2、环境需求2。此负载对网络压力很高,必须使用独立网络设备,而不能使用现有交换机的独立VLAN应对。当容错虚拟机较多时或负载压力较大时,可以考虑倍增ESX扩展包7与群集扩展包2、环境需求2。软件2不支持此特性,请选择软件3或软件4或软件5。对于运行关键应用的虚拟机,推荐采用。
  10. 当需要增加备用存储网络时,应对每台ESX服务器增加相同型号的ESX扩展包4或ESX扩展包5(按现有型号搭配),并对应增加群集扩展包3或群集扩展包5,使用的磁盘柜亦需要增加群集扩展包7并于对应的存储交换机连接。如选型为ISCSI网络,则需要增加环境需求2。软件2与软件3不支持此特性,请选择软件4或软件5。对于运行关键应用的群集,推荐采用。
  11. 当VC管理范围超过5台ESX主机或50台虚拟机时,请选择VC扩展包1中的一款数据库,推荐SqlServer系列。当VC管理范围未达到此范围时,仅需使用免费的Sql Server Express即可。
  12. 如需要加强VC的数据保护时,则增加VC扩展包2。
  13. 如VC运行在Windows Server 2008 R2服务器系统时,可采用VC扩展包3以方便更新时的备份与回滚。
  14. 如需要将VC服务器进行热备时,可以增加一台VC服务器。如使用此功能,则需要将数据库安装此共享存储中(需要对VC主机增加HBA卡并连接至磁盘柜),且需要选择适合的数据库,以及相应网络。由于此功能用途不大且投入较高,不推荐采用。
  15. 如需要采用域账户权限管理,则需要环境需求3。

ESX功能包

ESX基础包:服务器一台,不含操作系统。CPU为64位,支持虚拟化VT-x,推荐多核;内存2G为系统内部使用;至少8G可用空间的SATA / SAS硬盘;电源系统;配套主板需要支持VT-x;DVDROM(或统一采用USB接口光驱);两块千兆双绞线或光纤网卡(或更高),必须为ESX所支持之型号。

ESX扩展包1:内存空间。根据实际使用的虚拟机内存而决定容量,每台虚拟机分配的内存*1.1 + 32M即为此虚拟机运行所需,所有虚拟机所需相加即为总量(不包含ESX基础包内的内存)。不同时运行的虚拟机则无需重复计算,结果取同时运行的虚拟机的内存需求的最大值即可。

ESX扩展包2:硬盘空间。根据实际使用的虚拟机硬盘而决定容量,每台虚拟机分配的硬盘 + 32M即为此虚拟机存储所需,所有虚拟机所需相加即为总量(不包含基础包内的硬盘)。如使用系统快照,则根据实际数据变化量递增。

ESX扩展包3:备份硬盘。根据ESX基础包与ESX扩展包2计算得出的硬盘总需求,采用RAID1或RAID5增加必要备份硬盘。RAID接口卡必须为ESX所支持之型号。

ESX扩展包4:FC-HBA卡,必须为ESX所支持之型号。

ESX扩展包5:ISCSI-HBA卡,必须为ESX所支持之型号。

ESX扩展包6:千兆双绞线网卡(或更高),必须为ESX所支持之型号。

ESX扩展包7:千兆光纤网卡(或更高),必须为ESX所支持之型号。

ESX扩展包8:备份电源系统,必须可被对应的ESX基础包支持。

ESX扩展包9:键盘、显示器,必须与ESX基础包硬件兼容。

ESX扩展包10:CPU升级。CPU必须为64位并支持虚拟化VT-x。CPU需求计算为并发的每台虚拟机最大CPU需求量1.1 + 1G,以多核心并列计算(超线程不被计算时考虑),非同时并发的CPU需求则取其最高点计算。例如:本服务器运行有3台虚拟机,A为长期占用1GHz的2个CPU核心,B在工作时间占用最多2GHz的2个CPU核心并在晚上占用500MHz的2个CPU核心,C在夜晚占用最多2GHz的1个CPU核心并在白天基本空闲(100MHz)。计算出的CPU需流量分别为2GHz、4GHz(工作时间)或1GHz(非工作时间)、100MHz(工作时间)或2GHz(非工作时间),则需求的最大CPU需求量为(2+4+0.1)1.1+1 = 7.71(GHz),以4核CPU计算,则CPU需要的最小频率为1.93GHz。通常的,当同一台服务器上运行的虚拟机不多于5个,且运行的虚拟机非CPU高负载的业务,CPU采用4核2G的CPU通常可以满足需求。另,由于ESX的授权以CPU个数计算(非核心个数),推荐采用多核心的CPU,而应谨慎使用多CPU环境。

VC功能包

VC基础包:服务器一台,含64位Windows服务器版操作系统。CPU为64位,推荐多核;内存为6G以上;至少146G的SATA / SAS硬盘;电源系统;DVDROM(或统一采用USB接口光驱);两块千兆双绞线或光纤网卡。

VC扩展包1:存储数据库。支持的数据库有Microsoft SQL Server 2005 Standard edition (SP2, SP3) 64bit、Microsoft SQL Server 2005 Enterprise edition (SP2, SP3) 64bit、Microsoft SQL Server 2008 Standard Edition 64bit、Microsoft SQL Server 2008 Enterprise Edition 64bit、Oracle 10g Enterprise edition (Release 2 [10.2.0.1.0]) x64、Oracle 11g Standard edition x64、Oracle 11g Enterprise edition x64。

VC扩展包2:备份硬盘。根据VC基础包的硬盘需求,采用RAID1或RAID5增加必要备份硬盘。RAID接口卡必须为VC基础包内操作系统所支持之型号。

VC扩展包3:备份硬盘。当VC基础包采用Windows Server 2008 R2时,可以选用此包,使用Windows Backup保存历史系统快照。

群集功能包

群集基础包:机柜及相应的电力供应系统(包括电源插排、UPS系统)、KVM交换机及其配套的键盘鼠标显示器。

群集扩展包1:千兆双绞线交换机(或更高),及网线。

群集扩展包2:千兆光纤交换机(或更高),及光纤模块、网线。

群集扩展包3:ISCSI存储专用交换机,及光纤线。

群集扩展包4:ISCSI磁盘柜及磁盘。根据实际使用的虚拟机硬盘而决定容量,每台虚拟机分配的硬盘 + 32M即为此虚拟机存储所需,所有虚拟机所需相加即为总量。如使用系统快照,则根据实际数据变化量递增。所需总量与所选磁盘备份技术(Raid1、Raid5等)结合,确定最终磁盘选型。

群集扩展包5:光纤通道存储专用交换机,及光纤模块、光纤线。

群集扩展包6:光纤通道磁盘柜及磁盘。根据实际使用的虚拟机硬盘而决定容量,每台虚拟机分配的硬盘 + 32M即为此虚拟机存储所需,所有虚拟机所需相加即为总量。如使用系统快照,则根据实际数据变化量递增。所需总量与所选磁盘备份技术(Raid1、Raid5等)结合,确定最终磁盘选型。

群集扩展包7:附加的磁盘柜控制器,必须可以与选型的磁盘柜配合工作。

软件包

软件1:ESXi。免费,支持单机应用,不支持群集应用。如选择此功能,则所需的内存(包含于ESX基础包中)仅需512MB,硬盘(包含于ESX基础包中)仅需2G。

软件2:vSphere Standard。每台服务器支持最多256GB内存,每个CPU支持最多6个核心。附加更新管理器、高可用性、vMotion(仅内存部分,不包括存储vMotion)。

软件3:vSphere Advanced。每台服务器支持最多256GB内存,每个CPU支持最多12个核心。附加更新管理器、高可用性、vMotion(仅内存部分,不包括存储vMotion)、虚拟机硬件热增加、容错。

软件4:vSphere Enterprise。每台服务器支持最多256GB内存,每个CPU支持最多6个核心。附加更新管理器、高可用性、vMotion、虚拟机硬件热增加、容错、分布式资源管理、分布式电源管理。

软件5:vSphere Enterprise Plus。每台服务器支持的内存无限制,每个CPU支持最多12个核心。附加更新管理器、高可用性、vMotion、虚拟机硬件热增加、容错、分布式资源管理、分布式电源管理、存储及网络负载控制、分布式交换机、主机概述文件。

环境需求包

环境需求1:IP段,可供环境其他主机访问。用于群集管理而不是虚拟机的IP需求。

环境需求2:IP段,不供环境其他主机访问。但此IP段应不存在于环境中,以免影响其访问服务器资源。

环境需求3:活动目录,提供用户验证功能。

环境需求4:DNS,提供域名解析服务。

Remove vSphere snapshot automatically

From version 7 of VMware workstation, a new function named AutoProtect is added, which makes it easier to create and remove snapshots automatically. Unfortunately, vSphere doesn’t have some function like that.

In my situation, I need to protect some crucial services, like configuration management database, by creating snapshots, which can be done by daily scheduled tasks. But I still need to delete old snapshots manually which was created 5 days ago. In another word, I need to keep only about 5 latest snapshots for each specified VM.

After some research, I find a tool named PowerCLI. I made some PowerShell scripts to delete snapshots.

Connect-VIServer localhost
$i = new-object System.Int32
$a = Get-VM "CM Database" | get-snapshot -name: 'Daily Backup'
$i = 0
while ($a.Count-$i -gt 5) {$a[$i] | remove-snapshot -confirm: $false; $i++;}
$a = Get-VM "SVN" | get-snapshot -name: 'Daily Backup'
$i = 0
while ($a.Count-$i -gt 5) {$a[$i] | remove-snapshot -confirm: $false; $i++;}
Disconnect-VIServer -confirm: $false

By running this script in PowerCLI environment, the snapshots of vm “CM Database” and “SVN” with a name “Daily Backup” will be deleted from older to newer, until only 5 left — to keep the 5 latest snapshots. All snapshots with other names will not be affected.

I saved this script to file C:\RemoveDailySnapshot.ps1. Create a batch file to run this script:

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-VIToolkitEnvironment.ps1\";C:\RemoveDailySnapshot.ps1"

Update: code above is for vSphere 4.x; below is for vSphere 5.0.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\";C:\RemoveDailySnapshot.ps1"

(You may need to change the path string in this code above.)
Finally, by adding this batch file as a Windows schedule task, the AutoProtect for vSphere has been reached.

I still wonder that why this useful function is not included in vSphere?