转载

通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

 

了解如何公开只能在防火墙后面访问的内部部署应用程序,并从在 IBM Bluemix® 中部署的应用程序访问它。建立这种集成的一个典型用例是混合应用程序开发和服务能力,其中,一些服务由内部部署的应用程序提供,另一些服务在 Bluemix 等云环境中提供。

本教程将讨论 IBM Secure Gateway for Bluemix 服务,说明该服务如何能够从在云中托管的应用程序安全地连接到内部提供的应用程序。

图 1. 应用程序的设计
通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

构建应用程序需要做的准备工作

 
  • 一个 Bluemix 帐户(注册您的 免费 Bluemix 试用版帐户)。
  • Java™。在安装 Java 后, 创建一个名称为 JAVA_HOME 的环境变量,该变量指向 Java 的主目录。另外,不要忘记将 %JAVA_HOME%/bin 添加到 PATH 环境变量。
  • Eclipse IDE for Java EE Developers
  • 面向 Eclipse 的 Bluemix 插件。该插件包含支持 Cloud Foundry 的工具、WebSphere Liberty 配置文件的连接器,等等。
  • Docker。您需要一个 Docker 客户端来连接到 Secure Gateway。
  • Cloud Foundry。一定要在 PATH 环境变量中包含 Cloud Foundry 二进制文件。
  • WebSphere Liberty
    1. 打开 Eclipse,导航到 Preference > Server > Run-time Environments
    2. 单击 Add 按钮,然后选择 WebSphere Application Server Liberty Profile,并单击 Next
    3. 指定一个合适的名称,比如 “WebSphere Liberty Profile-V8”,并将路径指向 WebSphere Liberty Profile 的安装目录。
    4. 单击 Finish

运行应用程序

第 1 步. 设置内部部署的应用程序

 

本节将告诉您如何在本地环境中设置内部部署的应用程序。以下是可用的内部部署应用程序(这些应用程序的源代码托管在 IBM Bluemix DevOps Services 上):

Airport-REST-Service 是一个用 Java 开发的,基于 REST 的应用程序,它提供了与机场信息检索相关的服务。为简便起见,保存机场详细信息相关数据的数据存储位于同一应用程序内。通过这个应用程序提供以下基于 REST 的服务:

  • 获取系统中可用的所有机场代码
  • 检索对应于指定机场代码的某个机场的详细信息

Airport-App-Local 提供了用户界面,并作为客户端连接到 Airport-REST-Service 应用程序。请注意,这两个都是可以在 WebSphere Liberty Profile 应用服务器中运行的 J2EE 应用程序。

要在本地环境中设置并运行应用程序,请执行以下操作:

  1. 从保存这些项目的源代码的位置分别下载这两个应用程序。
  2. 创建一个工作目录(例如,“SecureGateway-REST”)来包含项目工件。
  3. 解压缩两个项目文件夹,并将它们导入到 Eclipse 中。
  4. 这两个应用程序都是典型的 J2EE 应用程序,而且因为 Eclipse 已经配置了一个 Bluemix 插件和 WebSphere Liberty Profile,所以您可以使用 “Run As Server” 来运行这两个应用程序。
  5. 通过 URL http://<LocalHostName>:8080/Airport-App-Local/ 访问应用程序,其中 "<LocalHostName>" 指部署 Airport-App-Local 应用程序的主机名称。
  6. 确保通过主机名和 IP 地址都可以访问本地应用程序。这对于集成可以正常工作是至关重要的,因为您会从云环境连接到这台本地机器。为了确保可以通过主机名和 IP 地址访问应用程序,请执行下列步骤:

    1. 找到应用程序配置文件 (server.xml),它在 <WAS_INSTALLATION_DIRECTORY>/wlp/usr/servers/<server_profile_name> 位置上。在这里,"<WAS_INSTALLATION_DIRECTORY>" 指安装 WebSphere Liberty Profile 的目录。
    2. 编辑 server.xml file 并将 host="*" 添加到 httpEndpoint 元素。完成这一步后,该元素看起来将是这样的:
      <httpEndpoint httpPort="8080" httpsPort="9443" id="defaultHttpEndpoint" host="*"/>

图 2 显示了应用程序的主页,用户可以从页面的下拉菜单中选择一个机场代码。

图 2. 从下拉菜单中选择机场代码
通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

点击查看大图

图 2. 从下拉菜单中选择机场代码

通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

当选中一个机场代码时,单击 Show Airport Information 按钮,提供有关那个机场的信息:

图 3. Show Airport Information 按钮
通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

点击查看大图

图 3. Show Airport Information 按钮

通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

第 2 步. 配置 Secure Gateway 服务

 

Secure Gateway 服务能够从在云中托管的应用程序安全地连接到一个在内部部署的应用程序。要在 Bluemix 中配置 Secure Gateway 服务,执行以下操作:

  1. 转到 Bluemix 目录并导航到 Services > Integration 并选择 Secure Gateway
  2. 保留 "Space" 和 "Selected Plan" 的默认值。您还要创建使用 Secure Gateway 服务的应用程序,所以保留 "App" 的值为 "Leave unbound" ,然后单击 Create 按钮创建 Secure Gateway 服务。
    图 4. 创建 Secure Gateway 服务
    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

    点击查看大图

    图 4. 创建 Secure Gateway 服务

    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序
  3. 单击 Add Gateway 按钮,添加 Secure Gateway 服务的网关。
  4. 输入名称 "AirportGateway" 并单击 Connect It 按钮。
  5. 需要使用 Docker 来连接这个网关,所以请选中 "docker"。
    图 5. 连接到网关
    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

    点击查看大图

    图 5. 连接到网关

    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序
  6. 单击 COPY 按钮,复制要在 Docker 终端上运行的命令。将它保存为一个供参考的文本文件。
  7. 单击 ADD DESTINATIONS 按钮,添加目标,并选中 On-Premises destination
    图 6. 将目标添加到网关
    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

    点击查看大图

    图 6. 将目标添加到网关

    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序
  8. 为目标提供一个合适的名称,如 “AirportRESTAPI”。主机名指向部署 Airport-REST-Service 的服务器,而端口号表示运行应用程序的端口号。指定协议为 “HTTP”。以下是向网关服务添加安全的一些选项(参考屏幕截图,获得更多详细信息):

    1. IP Address Table。通过该选项,可以指定一系列可单独访问内部部署的目标的白名单 IP 地址。要配置这个 IP 地址列表,可以展开 "Advanced" 部分,并在 "Network Options" 部分中提供 IP 地址。
    2. TLS Mutual Authentication。您可以通过选择 "Protocol" 为 "TLS : Mutual Auth" 来指定此选项。这会弹出其他配置信息,使得它可以通过此服务上传服务器证书。(有关安全配置的具体细节,请参阅 Secure Gateway 入门)。
      图 7. 添加目标 - 详细信息
      通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

      点击查看大图

      图 7. 添加目标 - 详细信息

      通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序
  9. 请参考包含目标的值的屏幕截图。单击 Add Destination 完成整个过程。
  10. 复制云主机和端口信息,该信息对于连接到内部部署的系统是必要信息。为此,单击 Information 图标来获得目标信息,然后单击 COPY 按钮,复制云主机和端口号的详细信息。
    图 8. 复制云主机和端口的详细信息
    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

    点击查看大图

    图 8. 复制云主机和端口的详细信息

    通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

第 3 步. 准备与内部部署应用程序进行交互的应用程序

 

Airport-App-Cloud 应用程序提供了与内部部署应用程序进行交互的接口。该应用程序利用 REST 客户端与内部部署应用程序进行交互,在 trsp.bluemix.airport.app.web.AirportAppService 类的 fetchAirportCodesfetchAirportInformation 方法中提供了这个客户端。请注意,Airport-App-Cloud 将会部署到 Bluemix 中并利用 Secure Gateway 服务来启用该集成。准备好应用程序,执行以下操作:

  1. 下载 应用程序的副本
  2. 解压缩文件夹。这是一个 J2EE 应用程序,可用作一个 Eclipse 项目。
  3. 导航到 "/Airport-App-Cloud/src/trsp/bluemix/airport/app/web/AirportURLs.java" 并更新在第 2 步中获得的主机名和端口名称。完成更新后,您的代码将类似于此:

    点击查看代码清单

    String LIST_AIRPORT_CODES = "http:// cap-sg-prd-3.integration.ibmcloud.com:15699 /Airport-REST-Service/airport-app/airports/airportcodes";
    String SHOW_AIRPORT_INFO = "http:// cap-sg-prd-3.integration.ibmcloud.com:15699/Airport-REST-Service/airport-app/airports/#airportCode#";
  4. 进入命令提示符,然后通过运行 ant 命令触发 ant 构建。这将生成可以在 Bluemix 中部署的必要的 WAR 和项目文件。
  5. 为了将应用程序推送到 Bluemix,执行以下操作:
    1. 通过 cf login 登录到 Bluemix。
    2. 通过 cf api https://api.ng.bluemix.net 确保设置了正确的 API 端点。
    3. 通过 cf push -p Airport-App-Cloud.zip 将应用程序推送到 Bluemix。

第 4 步. 启动 Docker

 

为了启动 Docker,执行以下操作:

  1. 单击桌面上的 Docker Quickstart Terminal 图标。
  2. 在 Docker 完成初始化后,运行之前复制并保存的命令(在第 2 步中连接到网关时获得)。
  3. 用主机名和端口号的详细信息更新本地访问控制列表,以启用集成。为此,在用适当的值替换 <LocalHost><LocalPortNo> 后,运行以下命令(请注意,按下 Enter 命令将打开适合在终端输入命令的 cli> shell):
    acl allow <LocalHost>:<LocalHostPortNo>

第 5 步. 访问应用程序

 

现在,我们到了最后一步。在您访问应用程序之前,一定要检查以下项目:

  • Airport-REST-Service 应用程序已启动并运行。
  • Airport-App-Local 应用程序已启动并运行。
  • 通过主机名/ IP 地址可以访问本地应用程序(更新 server.xml 文件,使之包括 host="*")。
  • 本地机器上的 Docker 服务已启动并运行。
  • 访问控制列表已更新,包括本地主机名和端口号的详细信息。

现在,您可以访问应用程序。主机名和应用程序名称是从 manifest.yml 文件获得的。这个应用程序的用户界面与内部部署的应用程序的用户界面几乎相同,不同之处在于它将通过 Secure Gateway 服务连接到内部部署的应用程序。

图 9. 应用程序用户界面
通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

点击查看大图

图 9. 应用程序用户界面

通过 Secure Gateway 服务从 Bluemix 连接内部部署的应用程序

结束语

 

现在,您已经了解如何通过 Bluemix 访问内部部署的应用程序。虽然将内部部署的应用程序迁移到云中会带来很多商业利益,但从成本和工作难度方面考虑,也会带来多种迁移挑战。所以,您可能需要进行分阶段迁移。然而,您可以将使用混合环境策略作为起点,其中一部分应用服务在内部提供,而另一部分可在云环境(如 Bluemix)中提供。


BLUEMIX SERVICE USED IN THIS TUTORIAL:IBM Secure Gateway for Bluemix 服务 将向您的 Bluemix 环境提供混合集成功能。它提供了从 Bluemix 到在内部部署或其他云中运行的其他应用程序的安全连接

相关主题:Secure Gateway 服务入门

相关主题:使用 Bluemix Secure Gateway 服务连接到您的数据中心

相关主题:developerWorks 上的 Bluemix 资源

相关主题:developerWorks 上的安全资源


    
正文到此结束
Loading...