应用程序负载均衡器_在虚拟应用程序模式工作负载中管理产品二进制文件

当您开发要安装在IBM PureApplication System,IBM SmartCloud Orchestrator或IBM Workload Deployer上的虚拟应用程序模式工作负载时,您会遇到插件需要管理产品二进制文件的情况。 产品二进制文件可能是您自己的,也可能来自第三方供应商,例如IBM,SAP®或Oracle®。 在本文中,您将看到可以用来管理产品二进制文件以及插件如何访问和安装二进制文件的不同策略。 您还将了解这些不同策略的相对优缺点。

管理产品二进制文件的策略

管理产品二进制文件的策略分为以下几类:

  • 使用仓库存储库
  • 使用共享服务存储库服务器

使用仓库存储库

仓库是一个包含系统工件,虚拟应用程序模式工作负载工件,虚拟应用程序模式部署运行时工件和虚拟应用程序模式故障排除工件的存储库。 您可以使用仓库浏览器查看存储在仓库中的工件。

在IBM Workload Deployer和IBM PureApplication System中,您可以通过导航到Workload控制台>系统>仓库浏览器进入仓库浏览器 。 在IBM SmartCloud Orchestrator中,您可以通过导航到SmartCloud Orchestrator控制台>管理>仓库浏览器进入仓库浏览器 。 只有有权查看系统菜单(或管理菜单)的用户才能查看仓库浏览器。 图1说明了仓库浏览器的典型内容。

图1.仓库浏览器
仓库浏览器

您可以使用“仓库”存储库来存储产品二进制文件。 在工作负载部署期间,您的虚拟应用程序模式可以从仓库下载二进制文件,然后在虚拟机上安装和配置它们。 为了将您的产品二进制文件上载到仓库,您可以遵循以下技术之一:

  • 使用cURL上传二进制文件。
  • 使用您的模式类型上传二进制文件。
  • 使用单独的二进制上传模式类型上传二进制文件。

上述每种技术都有其优点和局限性。 在以下各节中,您将学习如何使用以上三种技术。 我们将通过将二进制文件rhel_rpm.tgz上传到以下Storehouse存储库位置来说明上述技术: /admin/files/Sample/Common/

使用cURL上传二进制文件

在这种技术中,您将使用cURL实用程序将二进制文件上传到Storehouse存储库,如清单1所示。清单1中的代码将文件上传到如图2所示的位置。

图2.仓库浏览器中的文件位置
仓库浏览器中的文件位置

此技术的优点是:

  • 与其他两种技术相比,它相对简单。
  • 它不需要任何其他工件或代码即可上传二进制文件。

此技术的局限性是:

  • 某些类型的cURL对上传文件的大小有限制。
  • 此方法可能不适用于PureApplication System。

此外,您需要管理员权限才能将文件上传到存储库。

使用cURL上传产品二进制文件
#Upload file to storehouse under /admin/files/Sample/Common.
curl -v -u <user>:<password> -k -X PUT --data-binary @rhel_rpm.tar.tgz -H "Content-Type:
application/octet-stream" https://<server_name>/storehouse/admin/files/Sample/Common/ rhel_rpm.tgz

#Give full access to the current user and group Everyone to download the file.
curl -v -i -u <user>:<password> -k -X POST -H "Content-Type: application/json" 
-X POST -d "{\"AccessRights\":{\"$USER\":\"F\",\"_group_:Everyone\":\"
F\"}}" https://<server_name>/storehouse/admin/files/Sample/Common/rhel_rpm.tgz?meta

如果在PureApplication System上使用此技术,则文件将被上载到仓库,但由于无法设置组访问控制(如上面的第二个curl命令所示),您可能无法以虚拟应用程序模式下载它。到“每个人”。

使用您的模式类型上传二进制文件

在这种技术中,您将使用包含虚拟应用程序模式插件的模式类型打包二进制文件。 如果使用任何档案提取工具打开构建的模式类型,则其外观如图3所示。档案由一个patterntypes文件夹和一个plugins文件夹组成,其中patterntypes文件夹包含档案格式的模式类型项目,而plugins文件夹包含一个插件。在项目中以存档格式。 当您将此模式类型安装到Workload Deployer,PureApplication System或SmartCloud Orchestrator中时,patterntypes文件夹的内容存储在Storehouse存储库中的“ / admin / patterntypes”下,而plugins文件夹的内容存储在Storehouse存储库中在“ / admin / plugins”下。

图3.扩展的构建模式类型归档文件
扩展的构建模式类型归档文件

现在您已经知道了仓库存储库的工作方式,为了rhel_rpm.tgz under /admin/files/Sample/Common有一个二进制文件rhel_rpm.tgz under /admin/files/Sample/Common ,您需要在文件中有一个名为files/Sample/Common的附加文件夹,其中的文件为rhel_rpm.tgz生成的模式类型档案,如图4所示。安装此修改的模式类型时,二进制文件将存储在Storehouse存储库中的/admin/files/Sample/Common如图2所示。

图4.具有二进制文件的扩展的修改后的模式类型归档文件
具有二进制的扩展的修改后的模式类型归档文件

为了帮助您打包二进制文件,如图4所示,我们在本文的“下载”部分中提供了一个名为addStorehouseFiles.xml的Ant构建文件。 您可以在IBM Workload Deployer Eclipse PDK环境中运行该实用程序。 要使用此实用程序,请打开您的IBM Workload Deployer Eclipse PDK环境,然后将此Ant文件放置在您的模式类型项目下,如图5所示。您还应该创建一个名为storehouse / files的文件夹,如图5所示。子文件夹文件映射到图4中显示的文件文件夹。

使用IBM Pattern toolkit>构建构建模式类型之后,右键单击addStorehouseFiles.xml并选择Run As> Ant Build 。 Ant脚本解压缩存档文件/patterntype_project/export/built_pattern_type_version.tgz ,该文件是在模式构建步骤中创建的。 它使用/patterntype_project/storehouse下的文件夹重新/patterntype_project/storehouse 。 在使用示例Ant脚本之前,请编辑addStorehouseFiles.xml并更改patternTypeFile属性的值以反映您的模式类型名称和版本。

图5.使用addStorehouseFiles.xml实用程序的模式类型PDK项目
使用addStorehouseFiles.xml实用程序的模式类型PDK项目

使用此技术的优点是:

  • 您可以上传所需大小的文件。 如果使用工作负载控制台用户界面安装模式,则限制为2GB。 对于大于2 GB的大小,请使用工作负载CLI环境。
  • 您可以将二进制文件和相关插件打包并交付为单个实体。

如果使用此技术,则当从系统中删除模式类型时,二进制文件将从Storehouse存储库中删除。 这导致以下限制:

  • 如果二进制文件很大,那么每次更新模式类型的功能元素时,您都将花费大量时间和网络资源。
  • 如果要在模式类型之间共享相同的二进制文件,则必须保留用于在系统中上载二进制文件的模式类型,即使不是必需的。

您需要管理员权限才能上传模式类型。 要使用此技术,您必须属于管理员组。

使用单独的二进制上传模式类型上传二进制文件

为了解决上述限制,可以将二进制文件与包含虚拟应用程序模式功能构件的模式类型分离。 在这种技术中,您将拥有两种模式类型,而不是同时使用二进制和虚拟应用程序模式插件的一种模式类型。 第一种模式类型仅包含二进制文件,第二种模式类型包含虚拟应用程序模式插件。 您将以与上一部分中创建模式类型相同的方式创建模式类型。 唯一的区别是此模式类型没有任何虚拟应用程序模式插件。 图6说明了一个仅二进制模式的样本类型。 将二进制文件与虚拟应用程序模式插件解耦后,即可独立于功能工件来管理二进制文件。

图6.扩展的仅二进制模式类型
扩展的仅二进制模式类型

使用此技术的优点是:

  • 您可以跨模式类型共享二进制文件。
  • 您可以彼此独立地更新和管理二进制文件和模式的功能方面。

您仍然需要管理员权限才能上传模式类型。 要使用此技术,您必须属于管理员组。

从仓库存储库下载二进制文件

现在,您已经将二进制文件上传到了仓库信息库,让我们看看如何将这些文件下载到虚拟应用程序模式实例创建的VM。 您可以使用零件生命周期脚本中的虚拟应用程序模式maestro框架从Storehouse存储库中下载文件。 有关虚拟应用程序模式maestro框架和部件生命周期脚本的详细信息,请参阅本文的“ 相关主题”部分。

清单2展示了如何从Storehouse存储库下载二进制文件。 对maestro.filesurl的调用以HTTP URL格式返回/admin/files的位置。 然后,您可以将文件位置附加到此URL,并使用maestro.downloadx方法下载文件并将其提取到所需位置。 下载到虚拟应用程序模式虚拟机后,您可以安装和配置二进制文件。

清单2.从仓库存储库下载文件
def downloadBinaries():
	logger.debug("enter downloadBinaries")
	fileName = 'Sample/Common/rhel_rpm.tgz'
	installerUrl = urlparse.urljoin(maestro.filesurl, fileName)   
	downloadPath = '/home/virtuser'    
	logger.debug('download ' + installerUrl)
	maestro.downloadx(installerUrl, downloadPath)
	logger.debug("exit downloadBinaries")

在本文中,我们提供了示例代码来展示如何创建仅二进制的模式类型(patterntype.binaryonly)以及具有二进制和功能性插件的模式类型(patterntype.storehouseupload和plugin.storehouseupload)。

使用共享服务存储库服务器

共享服务是预定义的虚拟应用程序模式,可以由同一云组中的多个工作负载部署共享,包括虚拟应用程序,虚拟系统和虚拟设备。 每个云组仅允许一个共享服务实例。 有关共享服务以及如何开发共享服务的更多详细信息,请参阅“ 相关主题”部分。

您可以创建一个共享服务存储库服务器,该服务器可以承载您的工作负载所需的二进制文件。 共享服务存储库服务器可以公开必要的接口,以便需要二进制文件的虚拟应用程序模式工作负载可以使用公开的接口连接到存储库服务器并下载适当的文件。

通过本文,我们提供了充当NFS服务器的示例共享服务存储库服务器 ,以及使用NFS挂载下载二进制文件的虚拟应用程序模式工作负载客户端。 在部署时,将为共享服务存储库服务器配置存储二进制文件所需的磁盘大小。 共享服务存储库服务器还提供了部署后操作,您可以使用该操作从使用HTTP协议的外部系统上载必要的二进制文件。 图7展示了此部署后的操作视图。

图7.共享服务器操作视图
共享服务器操作视图

Workload Deployer,PureApplication System和SmartCloud Orchestrator共享服务基础结构提供了一个注册表,其中包含有关已部署共享服务的信息。 客户端可以查询此注册表以获取有关其要使用的共享服务的信息。 在该示例中,存储库服务器通过此注册表向客户端公开其主机名和NFS安装端点。 清单3说明了如何使用RegistryProvider接口将信息提供给共享服务注册表。 然后,对共享服务存储库服务器感兴趣的存储库客户端可以在其生命周期脚本中使用maesro.registry框架来获取共享服务服务器主机名和NFS端点,并从注册表中复制所需的二进制文件。 NFS端点。 清单4展示了存储库客户端如何从服务器公开的注册表中获取详细信息。

清单3.将共享服务存储库服务器信息提供给注册表的代码
public class SampleSharedServiceRegistryProvider implements RegistryProvider {
  private static final String CLASS_NAME =
   SampleSharedServiceRegistryProvider.class.getCanonicalName();
  private static Logger logger = Logger.getLogger(CLASS_NAME);
  public final String LOCAL_BINARIES_REPOS_PATH="/shared_repository";

  public JSONArtifact getRegistry(String clientVersion,
    Map<String, JSONObject> deploymentInfo) throws HttpException {
    String METHOD = "getRegistry";
    JSONObject registry = new JSONObject();
    JSONObject deploymentDoc = deploymentInfo.get
        (RegistryProviderConstants.DEPLOYMENT_DOC);
    logger.logp(Level.FINE, CLASS_NAME, METHOD, "enter getRegistry ");
    //get instance ip addresses and return in the registry
    if(deploymentDoc != null){
      JSONObject instances = (JSONObject) deploymentDoc.get("instances");
      if (null != instances) {
	for (Object key : instances.keySet()) {
	 String keystr = (String)key;
	 if(keystr.startsWith("SampleSharedService")){
           Object ipAddr = ((JSONObject) instances.get(key)).get("public-ip");
                       String ip = (String)ipAddr;
                       registry.put("serviceHost", ip);
	 }
        }
      }
     }
     registry.put("mountPoint", LOCAL_BINARIES_REPOS_PATH);
     logger.logp(Level.FINE, CLASS_NAME, METHOD,
         "getRegistry exit. Registry return="+registry);
     return registry;
  }
}
清单4.用于从注册表中检索共享服务存储库服务器信息的客户端代码
# Retrieve info on SharedService (IP) so we know where to go
regInfo = maestro.registry.getRegistry("sampleMediaService", "1.0")
serviceHost = regInfo['serviceHost']
mountPoint = regInfo['mountPoint']

这种方法的优点是,如果您不想通过仓库共享二进制文件,则可以拥有自己的二进制存储库服务器。 由于我们将共享服务注册表用作查找目录,因此需要二进制文件的客户端与提供二进制文件的存储库服务器之间的交互是松散耦合的。

使用共享服务存储库服务器的主要限制是每个云组只能有一种类型的共享服务。 因此,云组中的所有部署都必须共享同一存储库服务器。 此外,共享服务服务器的开发和维护还有额外的开销。 为了安装和部署共享服务服务器,您将需要管理员权限。

处理样品

本文提供了以下样本模式类型 (带有源):

  • patterntype.binaryonly-1.0.0.0.tgz
  • patterntype.storehouseupload-1.0.0.0.tgz
  • ptype.installsharedservice-1.0.0.0.tgz

处理仓库存储库样本

当您安装patterntype.binaryonly-1.0.0.0.tgzpatterntype.storehouseupload-1.0.0.0.tgz时 ,您会看到一个名为“ / admin / files / Sample / Common / rhel_rpm.tgz”的文件添加到仓库中, 如图所示2

除此之外您还可以使用patterntype.storehouseupload-1.0.0.0.tgz创建一个示例虚拟应用程序模式,如图8所示。部署该虚拟应用程序模式时,它将下载并提取上载到Storehouse中的文件。到虚拟机上的/ home / virtuser / binaries 。 虚拟应用程序模式使用清单2所示的代码下载文件。

上载大型二进制文件的提示

如果使用Workload控制台或SmartCloud Orchestrator控制台用户界面来安装模式类型,则不能安装大于2 GB的模式类型。 您不能使用控制台浏览器界面将大型二进制文件导入到仓库。 要克服此限制,您必须使用CLI API来安装模式类型。 您可以按照以下步骤从命令行安装模式类型:

  1. 打开命令提示符,然后切换到模式类型归档文件所在的目录。
  2. 从IBM Workload Deployer,IBM PureApplication System或IBM SmartCloud Orchestrator系统下载CLI zip 。 然后将其解压缩到/ pathToCli下

在命令行中,根据您的IBM云解决方案运行以下命令:

/pathToCli/pure.cli/bin/pure -h IPAS_IP -u <user> -p <pwd>

要么

/pathToCli/deployer.cli/bin/deployer -h IPAS_IP -u <user> -p <pwd>

返回CLI提示符后,运行以下命令:

deployer.patterntypes.create('YourPatternType-1.0.0.0.tgz')
图8.使用patterntype.storehouseupload创建的虚拟应用程序
使用patterntype.storehouseupload创建的虚拟应用程序

使用共享服务存储库模式类型样本

在安装并启用模式类型ptype.installsharedservice-1.0.0.0.tgz之后 ,部署共享服务Sample Shared Service,并将要为其二进制存储库配置的磁盘大小作为输入。 部署共享服务后,必须使用虚拟应用程序控制台中提供的部署后操作用二进制文件填充共享服务存储库。 为此,一旦共享服务运行,请选择正在运行的共享服务实例,然后单击“ 管理”按钮。 将打开“虚拟应用程序控制台”。 在虚拟应用程序控制台中,选择“ 操作”>“媒体服务” 。 您将看到两个可用的操作,如图7所示。使用第二个操作“ 通过HTTP导入文件”来填充二进制存储库。 如果您有多个文件,则可以多次运行此操作。

要测试共享服务存储库,请基于模式类型sample.installsharedservice 1.0创建和部署虚拟应用程序模式,如图9所示。如上一节所述,虚拟应用程序模式获取以下共享服务存储库详细信息,即共享服务存储库IP,以及来自注册表的NFS挂载点(请参见清单4中的代码)。 客户端可以使用此数据来挂载端点并下载二进制文件。

图9.使用sample.installsharedservice创建的虚拟应用程序
使用sample.installsharedservice创建的虚拟应用程序

结论

在本文中,您学习了各种技术来管理将在虚拟应用程序模式工作负载中使用的二进制文件。 您还了解了这些技术的相对优势和局限性。 根据优点和局限性,管理二进制文件的最佳选择是使用Storehouse存储库。 将二进制文件上载到仓库存储库的最佳技术是使用专用的仅二进制模式类型。

致谢

作者要感谢IBM的Jim Riordan帮助提供了共享服务存储库技术的概念。


翻译自: https://www.ibm.com/developerworks/cloud/library/cl-ps-aim1401-binariespureapp/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值