Introduction to CloudStack’s System VM Mice Xia mice_xia@tcloudcomputing.com
Outline Overview System VM role&function System VM template System VM internals Q&A
Overview CloudStack使用系统虚拟机完成系统自身的功能 占用用户的物理资源 精简高效 对最终用户透明 高可用性 无状态 可线性扩展
CPVM Web VNC console 后端 每zone至少一个 网络配置 Public Control Management 自动扩展
SSVM 实现二级存储相关功能 每zone至少一个 网络配置 Public Control Management storage 自动扩展
VR 实现网络相关功能 每network至少一个 网络配置 DHCP/DNS/防火墙 端口转发NAT 负载均衡 VPN VPC Public (adv.) Control Guest
System VM template Spec (CS 4.2) 所有的系统虚拟机使用同一个模板 Debian Linux 7.0 只装需要的工具, SSHd, Apache, iptables, ipsec, haproxy… SSH通过3922访问 预装JRE 所有的系统虚拟机使用同一个模板 不同hypervisor不同的模板VMware/Xenserver/KVM/HyperV 格式不同,但内容完全一样
How to build SyetemVM Template Build from scratch 4.2标准方式 http://jenkins.cloudstack.org/job/build-systemvm-master 使用VirtualBox & veewee 安装系统 下载debian 7 iso 根据预定义的参数安装 更新debian Copy 各类CS的shell脚本到系统内 后续工作,建账户,chkconfig等 转换为其他格式,ova, qcow2等
How to patch SyetemVM Template 单独升级某个工具、软件 模板作为卷挂载到VM Mount, chroot 升级所需的软件 卸载卷,创建为模板 替换系统虚拟机模板 更新数据库,删除template_spoof_ref表中的systemVM 删除所有系统虚拟机
System VM initialization CPVM/SSVM/VR创建时使用相同的模板 启动后挂载systemVM.iso或者patchdisk(KVM) 通过boot cmdline向VM传入参数, e.g. type=secstorage VM启动时检查参数,根据类型的不同 从systemvm.iso拷贝不同的文件 配置对应的网络 启动相应的服务
System VM initialization cont. Authorized_key , mgmt server访问systemVM的ssh key cloud-scripts.tgz, 各类shell脚本,主要是VR使用 systemvm.zip 包括CPVM和SSVM的agent jar包 CPVM和SSVM中的agent java进程启动后,会连接mgmt server 8250,创建成功后,agent state Up
CPVM work flow ① 用户发起请求到mgmt server,查看web console mgmt server选择合适的CPVM,返回public ip ② 用户浏览器访问CPVM ③ CPVM向mgmt server 发请求进行验证 ④ 验证通过,CPVM访问VM所在的hypervisor对应的端口,获取console信息 经CPVM转换成浏览器可接受的格式,返回用户浏览器图像数据
SSVM workflow (upload template) ① 用户发起上传模板请求到mgmt server ② mgmt srv选择合适的SSVM,发送命令进行下载 ③ SSVM通过外网NIC下载指定的模板 ④ SSVM 通过storage network mount上二级存储,写入模板。 SSVM 下载的同时会向mgmt srv报告下载的进度(百分比)
SSVM workflow (vmware snapshot) ① 用户发起卷快照请求到mgmt server, Mgmt server发送请求到对应的ESXI,对虚拟机进行快照 ② mgmt srv选择合适的SSVM,发送命令备份快照 ③ SSVM调用ESXI (VC) API导出虚拟机快照的卷为OVF ④ SSVM 通过storage network mount上二级存储,写入快照。
VR workflow ① 用户发起卷快照请求到mgmt server,例如添加端口转发规则 ② mgmt srv选择合适的VR,通过control network发送命令,执行VR上的sh脚本,更新iptables,端口转发规则生效
System VM auto scaling Ssvm和cpvm根据负载情况自动scale up consoleproxy.capacity.standby 待机session数量 consoleproxy.session.max 一个CPVM可服务的session数量 consoleproxy.session.timeout session超时时间 E.g. standby = 30 , max = 50 , 当用户session超过20后,CS会自动创建第二个CPVM
Redundant VR Active-standby的VR,高可用性场景使用,通过VRRP协议同步TCP session
QuickCloud Cpvm和ssvm作为单独运行的程序,可运行在其他机器上,例如mgmt-srv Debug & production (since 4.2) https://cwiki.apache.org/confluence/display/CLOUDSTACK/QuickCloud
Q&A