链接克隆和完整复制、专有和池化、用户登陆虚拟机时FusionAccess各组件流程
一、链接克隆和完整复制
选择虚拟机模板类型时,我们一般会用到完整复制和连接克隆两种类型,那么这两种类型有什么区别呢?
下图是华为官方文档给出的解释:
下面我们来详细的解释一下:
1、完整复制
(1)制作模板,选择模板类型为完整复制模板
(2)通过模板在FA里面进行进行发放(实际上云桌面是在FC里面创建的,FA只是用来发放)
通过win10虚拟机模板发放四台win10虚拟机,如果模板中有qq,那么这4台win10都会有qq,这四台win10每一个都是一个独立的完整的虚拟机,即每台虚拟机都可以有自己的个性化数据和个性化应用,比如说一台可以安装游戏,另一台可以安装微信等。每台虚拟机互不影响,各用各的。这样的发放方式就是完成复制。
2、连接克隆
(1)制作模板,选择模板类型为连接克隆模板
(2)通过模板在FA里面进行进行发放(实际上云桌面是在FC里面创建的,FA只是用来发放)
假如通过win10虚拟机模板发放出来三台win10虚拟机,如果模板上有qq,这3台虚拟机上都有qq, 他和完整复制的区别在于这三台虚拟机都是完全引用的模板,模板有什么,这三台虚拟机就有什么,模板没有什么,就没有什么。也就是说发放出来的虚拟机只能是只读的,他们只能读取模板。默认情况下发放出来的虚拟机是不能有自己的个性化数据的,如果必须需要,那就只能给每个虚拟机外挂一块磁盘,把个性化数据都放在这个磁盘里边。
他们之间的区别是,通过完整复制发放出来的虚拟机,一旦发送出来,就和模板没有任何关系了,每台虚拟机都是独立的完整的计算机,可以自己装载应用和个性化数据,应用场景适合办公需要。
通过连接克隆发送虚拟机,可以秒级创建,下发速度非常快,因为它是完全依靠模板来创建的。下发之后,虚拟机和模板是有关联关系的,比如如果我们把模板删掉,那么通过这个模板发放出来的三个虚拟机就都不能用了。且不适用与需要个性化数据需求的场景。它的适用场景是需要使用公共电脑的场景。
连接克隆原理
如下图所示,我们通过连接克隆下发虚拟机时,如果我们的模板是30G,那么在下发的过程中,第一步会创建一个母卷出来,这个母卷其实就是虚拟机模板,因为创建出来的虚拟机只能读取母卷,所以当我们需要写入数据时,它会创建出来一个差分卷给到创建出来的虚拟机,所以本质上来说通过连接克隆创建出来的虚拟机其实就是这个差分卷。一个母卷可以有128个差分卷,如果达到128个,它会在自动创建出来一个新的母卷,以此类推。详细解释可以看下图。这就是连接克隆的原理。
二、桌面类型
桌面类型分为两种,专有和池化
1、专有
专有是一对一的,专有里边又分为单用户和静态多用户两种,专有默认给完整复制使用。
单用户:一个用户只能有一台虚拟机,用户和虚拟机是一一绑定关系。如下图所示,张三和vm1绑定,李四和vm2绑定。
静态多用户:一个用户可以有多台虚拟机,一台虚拟机可以属于多个用户。如下图所示,我们在分配虚拟机时,在选择域用户或组时,这里可以选择多个用户或者直接选择一个域组。如果aaa组里有张三和李四,那么张三和李四都可以登陆这个虚拟机。如果这时候又分了一个bbb组给第二台虚拟机,bbb组里有张三和王五,那么张三和王五都可以登陆第二台虚拟机。因为张三在两个组里都有,所以对于这两台虚拟机张三都可以登陆。这就是静态多用户。
下图是华为给出的官方解释:
2、池化
池化是多对多的,池化中又分为静态池和动态池,池化默认给连接克隆使用
静态池:桌面组在用户首次登录时,会随机分配给用户一台虚拟机于用户绑定,且一个用户只能绑定一台虚拟机。
如上图所示,张三第一次登陆的时候,在这个静态池中会随机分配给他一台虚拟机,假如分配给他的是vm2,那么张三和vm2之间就会有绑定关系,即使张三退出关机了,绑定关系依然存在,张三下次登陆依然只能登陆vm2。如果组中有4个用户,但是只有3台虚拟机,前三个都已经建立了绑定关系,那么如果张三李四王五这个时候都没有登陆,这个时候赵六登陆可以分配到池子中的虚拟机吗?答案是不会的。这就是静态多用户。
动态池:桌面组中用户于虚拟机没有固定的分配绑定关系,但一个用户只能一次使用其中一台虚拟机。
张三第一次登陆的时候,在这个动态池中会随机分配给他一台虚拟机,假如分配给他的是vm2,虽然分配了,但是张三和vm2之间是没有绑定关系的,如果张三关机退出了,那么它下次登陆的时候可能又会被分配给vm1。如果组中有4个用户,但是只有3台虚拟机,如果前三个都在登陆使用中,这个时候第四个用户登陆也不会被分配给虚拟机。但是如果前三个用户没有在使用,第四个用户登陆的时候就可以被分配到虚拟机。
下图是华为给出的官方解释:
三、用户登陆虚拟机FA各组件流程
1、访问WI页面
用户通过TC/SC访问vlb,vlb根据负载均衡策略选择负载较轻的WI访问,然后WI会提供一个登陆界面返回给用户。这时候用户需要输入账号密码,输完用户点击登陆,在登陆的这一瞬间,WI会拿着用户的账号密码到AD域控里边进行验证。
2、用户鉴权
当WI返回给用户登陆界面之后,这时候用户需要输入账号密码,输完之后用户点击登陆,在登陆的这一瞬间,WI会拿着用户的账号密码到AD域控里边进行验证。验证成功,用户就可以登陆成功。WI连接AD也是通过HDC连接的。
3、获取虚拟机列表
当用户登陆成功同时,客户端将获取虚拟机列表请求发送到WI,WI会连接到HDC请求查询该用户的虚拟机列表,然后HDC会在数据库中查询该用户的虚拟机列表信息,数据库查到后,会将该列表返回给HDC,HDC在返回给WI,WI在返回给用户。
4、预连接
当用户获取到虚拟机登陆列表之后,选择其中一台点击登陆,登陆请求通过vag发送到wi,wi获取到信息之后会在将请求转发给HDC,此时HDC会向DB数据库查询这台虚拟机的IP地址以及状态信息,查到之后DB会将IP和状态信息返回给HDC,此时HDC就拿到了这台虚拟机的IP地址,有了IP地址它就会向HDA发起预连接请求,HDA就是我们安装在每个虚拟机里的代理agent,所以HDC在拿到IP地址之后可以通过HDP协议直接访问到HDA,从而发起预连接请求。如果这时候HDA验证了账号密码、IP地址都是对,这个时候HDA会向HDC返回预连接成功。但是预连接成功之后还不能直接登陆,HDC此时会向license组件验证license是否充足,如果license充足,HDC会生成一个address ticket(包含IP和虚拟机信息)和login ticket(包含用户账号密码),之后会将这些信息以依次返回到客户端。
5、连接
预连接建立成功之后,客户端会拿到一个address ticket 和 login ticket,客户端这时候发起连接请求,此时VAG会将address ticket 转发到HDC,HDC验证之后根据address ticket 返回给VAG虚拟机的IP及端口号。VAG拿到IP地址之后会向HDA发送连接请求及login ticket,但是HDA不知道这个login ticket是否正确,所以此时HDA会在向HDC验证login ticket, HDC会向HDA返回它的域账号和密码,此时HDA还是不相信,它会在次向AD发起连接,请求验证账号密码的准确性,验证成功之后,HDA会告诉VAG连接成功,并在次链接到HDC更新虚拟机状态。