docker - 如何在 Docker 中配置 WSO2 API-M 3.0.0 和 API-M Analytics 3.0.0?

标签 docker wso2 wso2-am

我在 Docker 中为 API-M 和 API-M Analytics 运行 3 个图像:

  • wso2am:3.0.0-centos7 是 API-M ( link )
  • 的图像
  • wso2am-analytics-worker:3.0.0-centos7 是 API-M Analytics Worker ( link )
  • 的图像
  • wso2am-analytics-dashboard:3.0.0-centos7 是 API-M 分析仪表板 ( link )
  • 的图像

    问题是我不知道如何配置运行这些图像的容器。
  • wso2am:3.0.0-centos7 -> 容器名为 am (IP:172.17.0.3)
    端口:

    0.0.0.0:5672->5672/tcp, 0.0.0.0:7611->7611/tcp, 0.0.0.0:7711->7711/tcp, 0.0.0.0:8243->8243/tcp, 0.0.0.0:8280->8280/tcp, 0.0.0.0:9099->9099/tcp, 0.0.0.0:9443->9443/tcp, 0.0.0.0:9611->9611/tcp, 0.0.0.0:9711->9711/tcp, 0.0 .0.0:9763->9763/tcp, 0.0.0.0:9999->9999/tcp, 0.0.0.0:10397->10397/tcp, 0.0.0.0:11111->11111/tcp
  • wso2am-analytics-worker:3.0.0-centos7 -> 容器名为 worker (IP:172.17.0.2)。港口:

    0.0.0.0:7071->7071/tcp, 0.0.0.0:7444->7444/tcp, 0.0.0.0:7612->7612/tcp, 0.0.0.0:7712->7712/tcp, 0.0.0.0:9091->9091/tcp, 0.0.0.0:9444->9444/tcp, 0.0.0.0:9612-9613->9612-9613/tcp, 0.0.0.0:9712-9713->9712-9713/tcp
  • wso2am-analytics-dashboard:3.0.0-centos7 -> 名为仪表板的容器 (IP:172.17.0.4)。港口:

    0.0.0.0:7613->7613/tcp, 0.0.0.0:7713->7713/tcp, 9613/tcp, 0.0.0.0:9643->9643/tcp, 9713/tcp

  • 我在容器 am 中配置了/wso2am-3.0.0/repository/conf/deployment.toml 的 [apim.analytics] 部分:
    [apim.analytics]
    enable = true
    #store_api_url = "https://localhost:7444"
    #username = "$ref{super_admin.username}"
    #password = "$ref{super_admin.password}"
    #event_publisher_type = "default"
    #event_publisher_impl = "org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher"
    #publish_response_size = true
    

    ...和容器仪表板中/wso2am-analytics-3.0.0/conf/dashboard/deployment.yaml 的 auth.configs 部分:
    auth.configs:
      type: apim
      ssoEnabled: true
      properties:
        adminScope: apim_analytics:admin_carbon.super
        allScopes: apim_analytics:admin apim_analytics:product_manager apim_analytics:api_developer apim_analytics:app_developer apim_analytics:devops_engineer apim_analytics:analytics_viewer apim_analytics:everyone openid apim:api_view apim:subscribe
        adminServiceBaseUrl: https://172.17.0.3:9443
        adminUsername: admin
        adminPassword: admin
        kmDcrUrl: https://172.17.0.3:9443/client-registration/v0.15/register
        kmTokenUrlForRedirection: https://172.17.0.3:9443/oauth2
        kmTokenUrl: https://172.17.0.3:9443/oauth2
        kmUsername: admin
        kmPassword: admin
        portalAppContext: analytics-dashboard
        businessRulesAppContext : business-rules
        cacheTimeout: 900
        baseUrl: https://localhost:9643
        grantType: authorization_code
        publisherUrl: https://172.17.0.3:9443
        #storeUrl: https://172.17.0.3:9443
    

    因此,在我配置并重新启动这些容器后,容器 am 中显示的错误是:
    [2020-01-14 04:16:39,026]  WARN - DataEndpointGroup No receiver is reachable at reconnection, will try to reconnect every 30 sec
    [2020-01-14 04:16:39,030] ERROR - DataEndpointConnectionWorker Error while trying to connect to the endpoint. Cannot borrow client for ssl://localhost:7712
    org.wso2.carbon.databridge.agent.exception.DataEndpointAuthenticationException: Cannot borrow client for ssl://localhost:7712
            at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:147) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.run(DataEndpointConnectionWorker.java:59) [org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_222]
            at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_222]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222]
            at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
    Caused by: org.wso2.carbon.databridge.agent.exception.DataEndpointSecurityException: Error while trying to connect to ssl://localhost:7712
            at org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftSecureClientPoolFactory.createClient(ThriftSecureClientPoolFactory.java:81) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.wso2.carbon.databridge.agent.client.AbstractClientPoolFactory.makeObject(AbstractClientPoolFactory.java:39) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1212) ~[commons-pool_1.5.6.wso2v1.jar:?]
            at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:137) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            ... 6 more
    Caused by: org.apache.thrift.transport.TTransportException: Could not connect to localhost on port 7712
            at org.apache.thrift.transport.TSSLTransportFactory.createClient(TSSLTransportFactory.java:273) ~[libthrift_0.12.0.wso2v1.jar:?]
            at org.apache.thrift.transport.TSSLTransportFactory.getClientSocket(TSSLTransportFactory.java:173) ~[libthrift_0.12.0.wso2v1.jar:?]
            at org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftSecureClientPoolFactory.createClient(ThriftSecureClientPoolFactory.java:64) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.wso2.carbon.databridge.agent.client.AbstractClientPoolFactory.makeObject(AbstractClientPoolFactory.java:39) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1212) ~[commons-pool_1.5.6.wso2v1.jar:?]
            at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:137) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            ... 6 more
    Caused by: java.net.ConnectException: Connection refused (Connection refused)
            at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_222]
            at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_222]
            at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_222]
            at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_222]
            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_222]
            at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_222]
            at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666) ~[?:1.8.0_222]
            at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:426) ~[?:1.8.0_222]
            at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88) ~[?:1.8.0_222]
            at org.apache.thrift.transport.TSSLTransportFactory.createClient(TSSLTransportFactory.java:269) ~[libthrift_0.12.0.wso2v1.jar:?]
            at org.apache.thrift.transport.TSSLTransportFactory.getClientSocket(TSSLTransportFactory.java:173) ~[libthrift_0.12.0.wso2v1.jar:?]
            at org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftSecureClientPoolFactory.createClient(ThriftSecureClientPoolFactory.java:64) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.wso2.carbon.databridge.agent.client.AbstractClientPoolFactory.makeObject(AbstractClientPoolFactory.java:39) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1212) ~[commons-pool_1.5.6.wso2v1.jar:?]
            at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:137) ~[org.wso2.carbon.databridge.agent_5.2.12.jar:?]
            ... 6 more
    

    ...当我转到此链接 https://localhost:9643/analytics-dashboard 时,容器仪表板中显示错误(它重定向到 https://localhost:9643/analytics-dashboard/login?referrer=%2F ):
    [2020-01-14 03:24:42,837]  INFO {org.apache.axis2.transport.http.HTTPSender} - Unable to sendViaPost to url[https://172.17.0.3:9443/services/AuthenticationAdmin] javax.net.ssl.SSLException: hostname in certificate didn't match: <172.17.0.3> != <localhost> OR <localhost>
            at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.verifyHostName(SSLProtocolSocketFactory.java:435)
            at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.verifyHostName(SSLProtocolSocketFactory.java:304)
            at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.verifyHostName(SSLProtocolSocketFactory.java:277)
            at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:186)
            at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
            at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
            at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
            at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
            at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
            at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:712)
            at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:223)
            at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:82)
            at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:459)
            at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:286)
            at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
            at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:442)
            at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
            at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
            at org.wso2.carbon.authenticator.stub.AuthenticationAdminStub.login(AuthenticationAdminStub.java:1343)
            at org.wso2.analytics.apim.idp.client.LoginAdminServiceClient.authenticate(LoginAdminServiceClient.java:48)
            at org.wso2.analytics.apim.idp.client.ApimIdPClient.init(ApimIdPClient.java:140)
            at org.wso2.analytics.apim.idp.client.ApimIdPClient.login(ApimIdPClient.java:350)
            at org.wso2.carbon.analytics.auth.rest.api.impl.LoginApiServiceImpl.loginAppNamePost(LoginApiServiceImpl.java:146)
            at org.wso2.carbon.analytics.auth.rest.api.LoginApi.loginAppNamePost(LoginApi.java:82)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.wso2.msf4j.internal.router.HttpMethodInfo.invokeResource(HttpMethodInfo.java:187)
            at org.wso2.msf4j.internal.router.HttpMethodInfo.invoke(HttpMethodInfo.java:143)
            at org.wso2.msf4j.internal.MSF4JHttpConnectorListener.dispatchMethod(MSF4JHttpConnectorListener.java:218)
            at org.wso2.msf4j.internal.MSF4JHttpConnectorListener.lambda$onMessage$57(MSF4JHttpConnectorListener.java:129)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            at java.lang.Thread.run(Thread.java:748)
    
    [2020-01-14 03:24:42,865] ERROR {org.wso2.analytics.apim.idp.client.ApimIdPClient} - Error occurred while creating Login admin Service Client.
    

    我按照这个教程链接:https://apim.docs.wso2.com/en/latest/Learn/Analytics/configuring-apim-analytics/ .但是,如果我在 Docker 中运行这些产品,我似乎很难理解以及我需要做的所有步骤。

    所以,我需要一些引用资料,或者显示我需要配置的所有文件(deployment.tolm、deployment.yaml 或 api-manager.xml,...我不知道每个文件的意义)。

    非常感谢你。

    最佳答案

    似乎从 AM 容器到分析节点存在连接问题。这就是它显示此异常的原因。

    [2020-01-14 04:16:39,030] ERROR - DataEndpointConnectionWorker Error while trying to connect to the endpoint. Cannot borrow client for ssl://localhost:7712



    为此,您需要在 repository/conf/deployment.toml 中配置正确的分析 URL,如下所示。
    [[apim.analytics.url_group]]
    analytics_url =["tcp://172.17.0.2:7612"]
    analytics_auth_url =["ssl://172.17.0.2:7712"]
    type = "loadbalance"
    

    当仪表板尝试连接到 APIM 时,您将面临证书问题和主机名验证问题的仪表板容器。这是因为目标 URL 的主机名和证书 CN 不匹配。为此,请为您的部署生成新证书并将它们安装在 AM/Analytics keystore 和信任库 [1] 中。

    [1] https://apim.docs.wso2.com/en/latest/Learn/Analytics/configuring-apim-analytics/#step-6-configure-keystores

    关于docker - 如何在 Docker 中配置 WSO2 API-M 3.0.0 和 API-M Analytics 3.0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59727542/

    相关文章:

    docker - 如何解决docker中导入路径 "context"错误

    git - docker-compose 无法从 TFS (Team Foundation Server) 解析 Git URI

    java - 如何使用非固定值设置消息处理器间隔参数? (使用存储在 property\registry\etc 中的值)

    api - WSO2 - 身份服务器和 API 管理器协同工作

    docker - Dockerising和将ws02 API管理员和身份服务器之间的连接作为 key 管理器

    docker - 如何使用 docker cp 将多个文件从容器复制到主机

    docker - `docker-compose logs` 从哪里拉?

    WSO2 企业服务总线和 WSO2 治理注册表集成

    wso2 - wso2 身份服务器中是否有用于配置电子邮件模板的 API?

    通过单页应用程序进行 WSO2 API Manager 身份验证