【问题标题】:WSO2 API Manager with F5WSO2 API 管理器与 F5
【发布时间】:2014-12-20 04:37:29
【问题描述】:

我们正在尝试使用 F5 作为负载平衡器来设置 WSO2 API 管理器集群,但在混合使用 F5 时遇到了问题。使用 F5(manager.xyz.com 映射到 node1.xyz.com:9443)在服务器(服务器/管理端口:node1.xyz.com:9443)上设置一个管理器实例。

经过多次反复试验,我们发现问题出在工作程序实例中的 API 密钥管理器 URL 配置上。使用直接服务器/端口 URL(即 node1.xyz.com:9443)可以正常工作。但是,当我们使用 F5 url(即 manager.xyz.com)时,会导致以下异常。有什么想法可能不正确或遗漏吗?

最终我们希望运行两个管理器实例。因此,我们希望让这个 F5 设置正常工作,以便工作实例可以指向 F5 而不是单个管理器节点。

提前感谢您的帮助!

工作节点中的配置:

<APIKeyManager>
        <!--
            Server URL of the API key manager
        -->
<ServerURL>https://node1.xyz.com:9443${carbon.context}/services/</ServerURL>

Worker 节点中导致 F5 出错的配置:

<APIKeyManager>
        <!--
            Server URL of the API key manager
        -->
<ServerURL>https://manager.xyz.com${carbon.context}/services/</ServerURL>

使用 F5 时的异常:

TID: [0] [AM] [2014-12-11 16:03:37,697] ERROR {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler} -  API authentication failure {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler}
org.wso2.carbon.apimgt.gateway.handlers.security.APISecurityException: Error while accessing backend services for API key validation
        at org.wso2.carbon.apimgt.gateway.handlers.security.thrift.ThriftAPIDataStore.getAllURITemplates(ThriftAPIDataStore.java:99)
        at org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator.getAllURITemplates(APIKeyValidator.java:516)
        at org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator.doGetAPIInfo(APIKeyValidator.java:368)
        at org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator.findMatchingVerb(APIKeyValidator.java:343)
        at org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator.getResourceAuthenticationScheme(APIKeyValidator.java:172)
        at org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator.authenticate(OAuthAuthenticator.java:93)
        at org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler.handleRequest(APIAuthenticationHandler.java:92)

【问题讨论】:

    标签: wso2 load-balancing wso2-am f5


    【解决方案1】:

    您可以立即检查的几件事 -

    • 确保KeyManager_HOME/repository/conf/carbon.xml 中的&lt;HostName&gt;&lt;MgtHostName&gt; 元素设置为F5 的主机名。 IE。 “manager.xyz.com”
    • proxyPort=443 属性添加到KeyManager_HOME/repository/conf/tomcat/catalina-server.xml 中的https 连接器。如果需要,也可以配置 http 连接器。

    如果您没有设置以上两个设置,则 http 302 重定向失败,这可能会解释您的情况。并且,当使用 Apache HTTPD 作为反向代理时,我们要求用户在 ProxyPass 之外配置 ProxyPassReverse。我不确定 F5 的等效配置。


    如果上述方法没有帮助,我们需要了解您的部署情况,以便更好地帮助您。 IE。你如何集群节点。你有单独的 API 网关、keymanager 实例等吗?

    我认为值得您花时间阅读WSO2 cluster guide 以更好地了解集群逻辑。

    使用 APIM,您可以拥有单独的 Keymanager、API 网关(以及 API 存储、API 发布者)节点。 worker-manager 分离只适用于 API Gateway。 而且,keymanager 不需要worker-manager 分离。 所以,你可能认为所有的API keymanager节点是提供管理器和工作器功能的混合节点。

    如果您没有单独的密钥管理器,我们可以进一步了解。

    【讨论】:

    • 谢谢卡松。密钥管理器作为存储和发布者的一部分运行。因此,不涉及分布式部署。 MgtHost 和 tomcat 代理端口根据您的亮点/API 集群指南进行配置。我看到 API Manager 1.8 的更新版本,并且该版本的集群文档要好得多。将通过全新安装重试,并让您知道它是如何进行的。为了说明我们如何配置 F5,我们希望将所有端口 9443 (ELB) 流量路由到一个 F5/DNS 名称,并将 NIO 端口流量路由到另一个 F5/DNS 名称。
    • 不过有一个问题 - 是否需要 APIM 附带的 ELB 或 F5 可以担任该角色?
    • - 1.8 版本的干净设置似乎可以工作,但以下情况除外: (1) apimanager.xml 中的撤销 URL 必须是本地 IP 而不是 F5 以进行令牌续订。 (2)添加新的API必须手动同步到其他节点(synapse-configs/default/api下的文件)。有没有办法自动同步? (3)APIM 在通过 F5 使用默认上下文根时附加端口号(例如 9443)(尽管配置了 tomcat 代理端口)。如果 F5 是 manager.xyz.com,则 manager.xyz.com/publisher 可以正常工作。但是,manager.xyz.com/ 重定向到 manager.xyz.com:9443/publisher
    • 让我试着回答我看到的问题。 2)您需要使用部署同步器在节点之间同步api。集群指南上有一个单独的页面。 3)这很有趣。我刚刚用 apache httpd 测试了这个,它似乎对我来说很好用。我希望你已经为 catalina-server.xml 中的两个连接器设置了 proxyPort。
    • 如果你已经有一个负载均衡器,你可以继续使用它。您无需将 ELB 带入图片中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2019-10-28
    相关资源
    最近更新 更多