从今年年初到现在,经过测试验证,项目确立,设备选型,采购,到最后设备到货,安装与调试,正式环境下的Horizon View终于搭建完成了。真是千辛万苦,尽在不言中。
硬件准备
这套Horizon View环境内集成了一套AnyShare云文档,用于用户资料的存储,相较于传统Windows使用的共享文件夹的方式,AnyShare无疑要灵活实用的多。由于AnyShare的存在,而我们又没有足够的预算去采购一套可靠的存储系统,所以只能利用服务器本身的存储资源,我们采购了两台Lenovo M3650 M5服务器,具体配置如下:
因为担心一块RAID卡无法支持SSD卡的读写性能要求,所以特意配了两块RAID卡,M1215连接两块SSD硬盘,并配置成RAID1,用于加速Horizon View桌面的克隆,M5210则连接8快HDD硬盘,配置成RAID5,提供冗余性。
环境搭建
由于AnyShare未来会存储全行用户的数据,所以对可靠性有一定要求,但我们又很穷,没钱买三节点的硬件版AnyShare,只能买虚拟机版本的AnyShare,然后自己用Veeam B&R的Replication来实现AnyShare的快速恢复。所以我们在ESXi_1上安装了AnyShare,在ESXi_2上安装了Veeam B&R,同时在ESXi_2上对AnyShare进行了Replication。
Horizon View的环境就很清晰了,由于目前只有两台ESXi,不满足vCenter HA的最低要求,所以目前vCenter还是只有一台,一台AD&DNS,一台SQLServer 2012,一台Storage&Printer服务器,提供用户配置文件漫游和打印机发布;一台DHCP服务器,一台Composer,两台View Connect,并配置NLB功能。
具体列表如下:
云桌面的架构其实非常简单,结合下图可以非常直观的理解各个组件的作用。
用户使用客户端登陆云桌面,Connection Server接受客户请求,通过AD判断用户权限,获得许可后,Connection Server连接vCenter Server和View Composer,共同在ESXi主机内为用户克隆相应的虚拟主机,提供云桌面服务。
NLB与View客户端
考虑到未来云桌面用户数量较大,为了避免View Connection服务器负载过高,目前采用两台View Connection服务器,并通过Windows自身的Network Load Balance功能实现负载均衡与冗余功能。
正常情况下,两台服务器的状态均为绿色,普通的服务器重启与其他操作不会影响NLB功能,基本不用对它进行维护,但有两点需要注意。
1)NLB功能虚拟了一个共用对外服务器地址(118.118.31.6),该地址需要在网关设备进行ARP绑定,否则该地址无法被访问。
2)View Connection服务器在NLB环境下,需要修改View Connection服务里的一处配置,具体位置为“C:Program FilesVMwareVMware ViewServersslgatewayconf”的locked.properties文件,在“balancedHost”内增加虚拟服务地址即可。
关于打印机
在View环境中部署打印机有5种方式:使用ThinPrint连接本地打印机,使用USB重定向部署本地USB打印机,在模板内安装网络打印机驱动,使用组策略部署网络打印机,使用基于物理位置的方式部署网络打印机。
先排除掉在模板内安装网络打印机,对于小型的只有一两个模板的环境而言,这种部署方式由于初始配置简单,还算适合,但是对于我们这种地理位置分隔,打印机数量较多的环境,这种部署模式下要么就是所有人可以使用所有打印机,要么就是不同部门/地址位置对应不同的模板,模板维护的工作量将相当巨大。
其次,ThinPrint和USB重定向的方式都各有优缺点,ThinPrint部署简单方便,用户使用体验也很好,但是对于中文字体的支持存在问题,部分字体打印出来是一片空白。USB重定向的方式兼容性较好,但是安装较复杂,用户使用时需要切换,体验一般。
所以最建议的方式还是使用组策略部署网络打印机,至于物理位置的打印机,我还没研究,但部署思路和组策略的方式是一致的。
1. ThinPrint打印机的部署
1.使用本地用户登陆云桌面模板机,进入“设备和打印机”,点击“添加打印机”,选择“添加本地打印机”。
2.端口选择“TPVM”。
3.在打印机驱动程序中,厂商选择“ThinPrint”,打印机选择“TP Output Gateway”。
4.点击下一步,选择“使用当前已安装的驱动程序”,打印机名称为“打印到本地默认打印机”。
5.设置完成后,在设备和打印机页面,会出现一台新的打印机。
6. 用户登陆后,ThinPrint会自动将用户本地的所有打印机自动带入到View环境中,用户可以同时在本地桌面和View桌面使用打印机,用户体验非常好。
2. 打印机重定向和USB重定向
首先确认用户侧安装的Horizon Client安装的USB重定向功能,其次在域策略管理内配置相应的GPO并应用到相应的OU,最后需要在模板内安装该打印机驱动程序。以下对GPO和打印机驱动的安装做下说明。
1.GPO策略:
通过VMware官网下载ADM模板文件,名称是“VMware-Horizon-Extras-Bundle-4.6.0_6605044.zip”,打开后里面的内容如下:
将相应的admx文件和zh-CN文件夹复制到域控服务器的WindwosPolicyDefinitions文件夹内。然后打开组策略管理,新建一个策略,依次展开“计算机配置–管理模板”,就可以看到新的VMware组策略了。
配置USB重定向很简单,里面只有5个配置项,如下图所示。
如果某个设备不能识别到设备类型,则可以通过VID/PID来进行允许,如下图中的设备为富士通5120c扫描仪,因为属于image设备,有可能与手机一类,所以只能通过单独的VID/PID来进行允许。
2.打印机驱动安装:
由于模板机为虚拟机,无法直接带入USB打印机,而HP的很多打印机驱动都需要连接上打印机后才能安装,所以无法直接简单的安装。需要使用一个“USB Over Network”的软件,将本地的USB打印机通过网络连接虚拟机模板内。具体方法如下:
在自己的电脑上安装USB Over Network(Server),并将要安装USB驱动的设备连接到自己的电脑上,可以不用安装驱动。程序打开后如下图。
选中设备,点击”Share Device“即可。
进入模板机,安装USB Over Network(Client),添加服务器后,就可以看到服务端共享的USB设备了,点击连接,系统则会识别到一个正常的USB设备。
然后正常安装驱动即可,目前通过这种方式进行安装且通过测试的打印机型号有HP 1010,HP1020未通过测试。
补充一点,之前提到的VID和PID,也可以通过这款软件进行查询,在服务端,选中设备后点击”Device Properties“即可。
3. 使用组策略部署打印机
相比较与模板内打印机,域环境打印机的便利性大大提高,打印机变更后,只需要在服务器端重新配置后发布,用户更新一次组策略或者注销后重登陆,就可以直接使用,降低了云桌面管理员的工作量,也能避免云桌面重构,并能减少虚拟机模板的数量。
域环境内打印机的部署方法如下:
1. 在域环境内部署打印服务器,通过服务器管理器登陆打印管理。
2. 在“打印管理”窗口中可以看到目前所有的打印机。
3. 按照正常步骤完成打印机驱动的安装。
4. 待打印机安装完成后,回到“打印机管理”,右键选中新增的打印机,然后点击“使用组策略部署”。
5. 建议为每个部门建立一个独立的打印机专用GPO,避免所有人看到所有打印机。
6. 最终结果如下图,然后点击确定即可。
7. 待组策略生效后,就可以在客户端看到这台打印机了。
在虚拟桌面内不显示“安全移除设备”
在虚拟桌面右下角默认会显示一个“安全移除设备”的图标,由于ESXi的关系,这里会列出网卡和SATA控制器,如果用户错误点击会导致网络中断或者磁盘故障。所以需要将这个图标隐藏掉,具体方法如下:
使用WinSCP登陆ESXi主机,找到这台模板机的文件夹,编辑vmx文件,在最后添加如下内容:
Devices.hotplug = “FALSE”
然后重新生成快照,并在View里面重新发布即可。
其他的配置方法可以参考这个连接:
扫描仪的使用
在View环境下,扫描仪的使用类似与打印机,可以通过打印机重定向连接到View桌面,具体使用方法如下:
首先确认扫描仪在本地电脑上工作正常。
在View桌面上打开扫描仪重定向配置栏,选择想要重定向到View桌面的扫描仪。目前通过测试的扫描仪包括HP1216一体机,Kodak i2400和富士通 5120c。
待扫描仪选择完毕后,在ScanALL21内选择源。
然后选择“VMware Virtual TWAIN Scanner”扫描仪。
关于vswp的困扰
vswp是每个虚拟机开机后都会默认生成的一个文件,类似与windows的虚拟内存和linux 的swap分区,但是ESXi自身也有内存ballon机制,再加上虚拟的操作系统也有虚拟内存的机制,vswp的作用实在是微乎其微,但它占据的空间可不小,一开机就会占据与虚拟机内存一样大的磁盘空间。对于传统的HDD磁盘整列来说,几十个G不算是什么问题,但是对于我这个240G SSD*Raid1来说,1G都是命啊。怎么办,这个vswp空间也没有thin模式,VMware官方的建议是上VSAN,然后开启sparse vswp,这个功能与thin模式非常类似,但一定要VSAN才可以。还有一种方法是买全闪存整列,然后开启数据去重机制(总行大大教的办法,都是不缺钱的主),MD,我要是买的起全闪存,还在乎这几个G?最后的办法就是在虚拟机里,设置内存预留。假设2G的虚拟机,在不设置内存预留的情况下,开机即占用2G的磁盘空间用于swap;如果配置了1G的内存预留,则只会生成1G的swap文件。
配置的方法很简单,在虚拟机模板关机的情况下,编辑虚拟机硬件,然后在内存那里输入预留值即可。
完成之后记得在view控制台里recomposer一次,否则那个replica虚拟机的配置不会变。
都OK之后,再看下虚拟机文件,可以看到vswp真的只有1G啦。
这样一来,240G的ssd,真的够120个用户了。