Docker容器中的ActiveMQ Artemis GUI Jolokia访问

时间:2019-02-27 10:27:30

标签: docker activemq-artemis hawtio jolokia

我正在Docker容器中针对三个环境(DEV / QA / PROD)运行ActiveMQ Artemis。

管理控制台通常在端口8161上运行,因此我在创建代理时将其包含在artemis create语句中。

--http-host 0.0.0.0 --http-port 8161

所以这会导致以下两个变化:

  1. bootstrap.xml获取主机/端口:

    <web bind="http://0.0.0.0:8161" path="web">
       <app url="redhat-branding" war="redhat-branding.war"/>
       <app url="artemis-plugin" war="artemis-plugin.war"/>
       <app url="dispatch-hawtio-console" war="dispatch-hawtio-console.war"/>
       <app url="console" war="console.war"/>
    </web>
    
  2. jolokia-access.xml获取主机/端口:

    <allow-origin>*://0.0.0.0*</allow-origin>
    

我正在尝试从远程计算机访问ActiveMQ Artemis Hawtio管理控制台,但是暴露的docker端口不是8161。它们是映射的端口381614816158161

因此,当我登录到管理控制台时,我得到:

Operation unknown failed due to: java.lang.Exception : Origin http://10.0.20.2:58161 is not allowed to call this agent
Uncaught TypeError: Cannot read property 'apply' of undefined (http://10.0.20.2:58161/console/app/app.js:16:14127)
Uncaught TypeError: Cannot read property 'apply' of undefined (http://10.0.20.2:58161/console/app/app.js:16:14127)
...

2 个答案:

答案 0 :(得分:1)

我相信这里的问题是您的jolokia-access.xml使用了以下代码:

<allow-origin>*://0.0.0.0*</allow-origin>

但是,您正尝试通过http://10.0.20.2:58161访问控制台,但根据您的jolokia-access.xml不允许。因此,您需要更改jolokia-access.xml以允许您实际将用于连接的IP:端口。

您可以在Jolokia security documentation中阅读有关jolokia-access.xml的更多信息。

为了清楚起见,元地址0.0.0.0基本上是“没有特定地址”的占位符,在将侦听器绑定到网络接口的上下文中,这意味着侦听器应绑定/侦听所有 接口。但是,在<allow-origin>中确保Jolokia的安全并不意味着允许所有起源。 <allow-origin>支持文字匹配和通配符(如上面链接的文档中所述)。因此,如果指定了0.0.0.0,它将尝试从字面上匹配0.0.0.0。无法通过create命令禁用Jolokia安全性。如果要将--http-host 10.0.20.*之类的内容传递给create命令,则将使用10.0.20.*将网络服务器绑定到bootstrap.xml中,这将失败。

可以选择使用--relax-jolokia来禁用严格检查,这可能会对您的用例有所帮助。

答案 1 :(得分:0)

您只需对jolokia-access.xml文件进行更改以编辑cors即可:

<allow-origin>*://*</allow-origin>

有关此的更多信息,您可以参考:https://medium.com/@hasnat.saeed/setup-activemq-artemis-on-ubuntu-18-04-76bb4975308b