在去年的博客文章中,我们探讨了“A10虚拟化技术在云计算中的应用”,其中有一部分描述谈到了与类似VMware这样的虚拟化平台结合,提供VM资源的按需分配和应用系统资源的调度。随着虚拟化技术在不同行业的逐步推广和应用,最近遇到了一个项目正好就是测试这部分的功能,主要就是验证当VMware的vCenter动态增减VM(虚拟机)数量的时候,如何在AX设备上实现即时的VM资源同步。如果做到了这一步,那么当应用系统需要增减一定数量的VM时,对应的AX设备上提供该应用系统访问服务的虚拟服务器(VIP)就可以随之完成VM资源的动态调度和负载分担。下面我们结合这次的测试,阐述一下具体的配置步骤。下图为通用的部署示意图:

p_w_picpath

Step 1、在VMware上创建一定数量的VM,并在这些VM上开启Web Service

        如何在VMware上创建VM,在这里就不阐述了,如果想了解相关的配置步骤,可以参考VMware网站提供的相关资料。在这里需要提醒一下,这些VM需要使用不同的IP地址,并能够被上游的AX设备访问,这个要求与传统的服务器负载均衡部署完全一致。

Step 2、配置vCenter和ESX的HTTP代理

        缺省情况下,“VMware VirtualCenter Management Webservices”是不会自动启动的,因此,需要首先开启这个服务,具体步骤是在VMware主机【控制面板】-》【管理工具】-》【服务】中找到这个服务进程,并开启它。我们可以利用vSphere Client登录到vCenter来验证该服务已经开启。

注意:缺省情况下,只能通过HTTPS方式接入vCenter Webservice,所以通常还需要按照以下步骤修改配置文件,来开启HTTP方式的接入:

  • 以root用户身份登录到ESX的服务控制界面;
  • 进入到/etc/vmware/hostd目录,用文本编辑器打开proxy.xml文件;
  • 找到类似如下的字段,将接入方式改为HTTP和HTTPS:

          ...
         <e id=”1”>
         <_type>vim.ProxyService.NamedPipeServiceSpec</_type>
         <accessMode>httpAndHttps</accessMode>
         <pipeName>/var/run/vmware/proxy-sdk</pipeName>
         <serverNamespace>/sdk</serverNamespace>
         </e>
          ...

  • 重启网络管理进程,使修改生效。

Step 3、AX设备上的相关配置

        除了基本的服务器(Real Server)和虚拟服务器(VIP)配置外,与VMware互动最多的部分就是服务组(Service Group)了,例如在服务组中增减服务器(组员)这些动作,因此一定要在配置API时,提供准确的服务组名和服务端口号;

Step 4、将AX API应用导入到vCenter中

        在与VMware结合的应用中,aXAPI是一个独立的文件(VMPowerOps.cs),我们称之为VM触发批处理程序,将其导入到vCenter中,从而可以通过vCenter在AX设备上完成一些诸如增减服务器、创建服务组和虚拟服务器等动作。在这个VMPowerOps批处理文件中,一共需要配置13个参数,通过调整这些参数/变量,来配合我们在不同应用环境中的部署。下面我们用一个示例分别来看看这些参数/变量的含义是什么:

       VmPowerOps.exe --url http://192.168.32.150/sdk --username TestUser --password mypasswd --hostName 192.168.1.240 --threshold 5 --DatacenterName DC --vmPath dc/vm/vm10 --AXIP 192.168.1.215.--AXUsrName admin --AXPasswd a10 --AXServiceGroup vm_group_01 --AXPort 80 --multipleAllow VmPowerOps

          表示登录vCenter的URL路径,无论是登录哪台vCenter设备,后面都需要跟着“/sdk”的后缀;

  • username <TestUser>

          表示登录该vCenter的用户名;

  • password <mypasswd>

          表示登录该vCenter用户的口令;

  • hostName <192.168.1.240>

          表示该vCenter中开启了相关VM的主机,通常是该主机的物理网卡IP地址;

  • threshold <5>

          表示克隆VM(虚拟机)的门限值,即最大克隆的个数;

  • DatacenterName <DC>

          表示该vCenter的名字;

  • vmPath <dc/vm/vm10>

          表示克隆模板的路径,通过该模板可以克隆出与此VM模板完全一样的VM,这样就可以保证VM所提供的服务内容完全一致;

  • AXIP <192.168.215>

          表示被管理AX设备的IP地址;

  • AXUsrName <admin>

          表示登录该AX设备的用户名;

  • AXPasswd <a10>

          表示登录该AX设备用户的密码;

  • AXServiceGroup <vm_group_01>

          表示该AX设备上的相关服务组名;

  • AXPort <80>

          表示服务器上的应用服务端口号;

  • multipleAllow

          表示是否允许多个进程,1表示允许,2表示拒绝,缺省为1;

      为了将此触发程序应用到vCenter对应的触发器(Trigger),通常我们都会把这些应用参数通过文本编辑器,存为一个后缀名为“.bat”的批处理文件,例如Power.bat。

Step 5、使用vSphere Client配置aXAPI触发器(Trigger)

        通过vSphere Client配置告警触发器,将此前创建的“Power.bat”文件绑定到对应的主机,使aXAPI的应用生效。

  • 选择对应的主机(Host),通过鼠标右键在列表中选择”告警“-》”添加告警“,如下图所示,配置告警阀值:

clip_p_w_picpath002

  • 在【操作】选择中,选择”运行命令“,并在【配置】中输入Power.bat文件所在路径,如下图所示:

clip_p_w_picpath002[6]

        当主机触发器被命中时,vCenter系统将执行VMPowerOps这个应用程序,进行如下操作:

  • 在ESX主机中寻找一个关闭的VM,并启动它;
  • 将此启动的VM服务器同步到AX设备对应的服务组中,使之能够即可承载业务的访问;
  • 如果没有在ESX主机中找到一个关闭的VM,另外VM虚拟机总数没有超过阀值(Threshold)的上限,那么应用程序会根据克隆模板克隆一个新的VM,并开启它;如果虚拟机总数达到阀值上限,则应用程序不会做任何操作和动作。

        以上就是AX负载均衡设备和VMware虚拟化平台的一个互通过程和配置步骤,可以达到对VM资源的动态调配和同步,这是AX设备的一个最主要的虚拟化应用场景。此外,根据业务的需要,在AX设备开启必要的应用加速功能,例如连接复用、缓存功能、SSL卸载、抵御DDoS功能等,也可以大大的降低VM系统的压力,提高单个VM的业务承载能力,更好的节省云系统资源,这也是AX负载均衡设备在虚拟化应用中的一个重要价值!

 

S.G