第15章 Docker 中 ActiveMQ 的安装与配置

第15章 Docker 中 ActiveMQ 的安装与配置

前言

  • 为什么要使用 ActiveMQ?

    Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调。

  • 什么是 ActiveMQ?

    Apache ActiveMQ是Apache Software Foundation的一个软件项目,为大型分布式系统提供开源分布式配置服务,同步服务和命名注册表。 ZooKeeper是Hadoop的一个子项目,但现在它本身就是一个顶级项目。

    ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。

    Learn more about ZooKeeper on the ZooKeeper Wiki.

  • 什么是 Docker?

    具体请参考我的第08章内容。

  • 为什么要在 Docker 中安装 Jenkins?

    为了开发环境一致性、可移植性、易于管理和维护性。

目标

  • 完成 Jenkins 在 Docker 中的安装与配置。
  • 安装在 Docker 中的 Jenkins 能正常对外提供服务。
  • 在外部开发环境中能正常访问和使用 Jenkins 持续集成服务。

环境

  • **VMware:**VMware Workstation 14 Pro
  • **Linux:**CentOS7.4
  • **Docker:**18.06.0-ce, build 0ffa825
  • **Jenkins:**Jenkins2.121.1
  • **JDK:**jdk1.8.0_172
  • **ActiveMQ:**5.15.2

介绍

Dockerfile用于构建ActiveMQ容器映像。

Apache ActiveMQ™是最受欢迎和功能最强大的开源消息传递和Integration Patterns服务器。 Apache ActiveMQ速度快,支持许多跨语言客户端和协议,具有易于使用的企业集成模式和许多高级功能,同时完全支持JMS 1.1和J2EE 1.4。 Apache ActiveMQ是在Apache 2.0许可下发布的 。

特性(Features)

  • 支持Java,C,C ++,C#,Ruby,Perl,Python,PHP等各种跨语言客户端和协议

    • 适用于Java,C,C ++,C#的高性能客户端的OpenWire
    • Stomp支持,以便客户端可以轻松地用C,Ruby,Perl,Python,PHP,ActionScript / Flash,Smalltalk编写,以便与ActiveMQ以及任何其他流行的Message Broker交谈
    • AMQP v1.0支持
    • MQTT v3.1支持允许在物联网环境中进行连接
  • 完全支持JMS客户端和Message Broker中的企业集成模式

  • 支持许多高级功能,如消息组,虚拟目标,通配符和复合目标

  • 完全支持JMS 1.1和J2EE 1.4,支持瞬态,持久,事务和XA消息传递

  • Spring支持,以便ActiveMQ可以轻松嵌入到Spring应用程序中,并使用Spring的XML配置机制进行配置

  • 在流行的J2EE服务器中测试,如TomEE,Geronimo,JBoss,GlassFish和WebLogic

    • 包括用于入站和出站消息传递的JCA 1.5资源适配器,以便ActiveMQ可以在任何符合J2EE 1.4的服务器中自动部署
  • 支持可插拔传输协议,如in-VM,TCP,SSL,NIO,UDP,多播,JGroups和JXTA传输

  • 使用JDBC和高性能日志支持非常快速的持久性

  • 专为高性能群集,客户端 - 服务器,基于对等的通信而设计

  • REST API,为消息传递提供技术不可知和基于语言的基于Web的API

  • Ajax支持使用纯DHTML对Web浏览器的Web流支持,允许Web浏览器成为消息传递结构的一部分

  • CXF和Axis支持,以便可以轻松地将ActiveMQ放入这些Web服务堆栈中,以提供可靠的消息传递

  • 可以用作内存中的JMS提供程序,非常适合单元测试JMS

版本

当前版本:5.15.2

硬件要求

中央处理器(CPU)

没有统计数据可以说明消息功能的核心数量

内存(Memory)

512MB的内存太少,我认为是在测试环境中使用ActiveMQ 1GB是标准内存大小 您可以设置所需的内存:

$ sudo docker run --name='activemq' -it --rm \
    -e 'ACTIVEMQ_CONFIG_MINMEMORY=512' \
    -e 'ACTIVEMQ_CONFIG_MAXMEMORY=2048'\
        -P
    webcenter/activemq:latest

这个样本lauch ActiveMQ在docker中有512 MB的内存,然后ACtiveMQ可以占用2048 MB的最大内存。

存储(Storage)

必要的硬盘空间取决于您是否使用持久性消息和appender的类型。 Normaly,不需要ActiveMQ的空间,因为大多数数据都直接包含在内存中。 我认为这取决于你如何使用ActiveMQ;)

安装(Installation)

从docker索引中提取镜像。这是推荐的安装方法,因为它更容易更新镜像。这些构建由Docker Trusted Build服务执行。

$ sudo docker pull webcenter/activemq:5.15.2

您还可以提取从存储库HEAD构建的latest标记

$ sudo docker pull webcenter/activemq:latest

或者,您可以在本地构建镜像。

git clone https://github.com/disaster37/activemq.git
cd activemq
docker build --tag="$USER/activemq" .

快速开始(Quick Start)

您可以使用docker命令行启动映像:

  • 用于测试目的(For test purpose) :

    $ sudo docker run --name='activemq' -it --rm -P \
    webcenter/activemq:latest
    

    帐户管理员为“admin”,密码为“admin”。所有设置都是默认的ActiveMQ设置。

  • 用于生产目的(For production purpose) :

    $ sudo docker run --name='activemq' -d \
    -e 'ACTIVEMQ_CONFIG_NAME=amqp-srv1' \
    -e 'ACTIVEMQ_CONFIG_DEFAULTACCOUNT=false' \
    -e 'ACTIVEMQ_ADMIN_LOGIN=admin' -e 'ACTIVEMQ_ADMIN_PASSWORD=your_password' \
    -e 'ACTIVEMQ_USERS_myproducer=producerpassword' -e 'ACTIVEMQ_GROUPS_writes=myproducer' \
    -e 'ACTIVEMQ_USERS_myconsumer=consumerpassword' -e 'ACTIVEMQ_GROUPS_reads=myconsumer' \
    -e 'ACTIVEMQ_JMX_user1_role=readwrite' -e 'ACTIVEMQ_JMX_user1_password=jmx_password' \
    -e 'ACTIVEMQ_JMX_user2_role=read' -e 'ACTIVEMQ_JMX_user2_password=jmx2_password'
    -e 'ACTIVEMQ_CONFIG_TOPICS_topic1=mytopic1' -e 'ACTIVEMQ_CONFIG_TOPICS_topic2=mytopic2'  \
    -e 'ACTIVEMQ_CONFIG_QUEUES_queue1=myqueue1' -e 'ACTIVEMQ_CONFIG_QUEUES_queue2=myqueue2'  \
    -e 'ACTIVEMQ_CONFIG_MINMEMORY=1024' -e  'ACTIVEMQ_CONFIG_MAXMEMORY=4096' \
    -e 'ACTIVEMQ_CONFIG_SCHEDULERENABLED=true' \
    -v /data/activemq:/data \
    -v /var/log/activemq:/var/log/activemq \
    -p 8161:8161 \
    -p 61616:61616 \
    -p 61613:61613 \
    webcenter/activemq:5.14.3
    

或者你可以使用 docker-compose。假设你安装了docker-compose,

wget https://raw.githubusercontent.com/disaster37/activemq/master/docker-compose.yml
docker-compose up

配置(Configuration)

访问

普通用户(Regular users)

您可以使用以下变量来创建常规用户:

  • +ACTIVEMQ_ACTIVEMQ_USERS_X: 其中X是用户名,值是密码。
  • ACTIVEMQ_GROUPS_Y: 其中Y是组名,值是用户列表,以逗号分隔

您可以使用以下组来放置主题或队列:

  • writes:可以读写所有主题和队列
  • reads:可以读所有主题和队列
  • owners: 可以读,写和拥有所有主题和队列
管理员用户(Admin user)

或者要创建管理员,您可以使用:

  • ACTIVEMQ_ADMIN_LOGIN: 管理员登录
  • ACTIVEMQ_ADMIN_PASSWORD: 管理员密码
禁用默认帐户

您可以使用以下命令禁用默认帐户:

  • ACTIVEMQ_CONFIG_DEFAULTACCOUNT: false表示禁用默认帐户。

队列(QUEUE)

您可以使用以下变量创建静态队列:

  • ACTIVEMQ_CONFIG_QUEUES_X:其中X是没有特殊字符的逻辑名称,值是真实的队列名称。

主题(TOPIC)

您可以使用以下变量创建静态主题:

  • 您可以使用以下变量创建静态主题:其中X是没有特殊字符的逻辑名称,值是真实的主题名称。

数据存储(Data Store)

暂时,您无法更改数据存储。这是kahadb。 数据存储在/data上。

代理(BROKER)

TODO

磁盘使用情况(Disk usage)

您可以使用以下变量来限制磁盘使用情况:

  • ACTIVEMQ_CONFIG_STOREUSAGE: 存储使用限制。默认值为100 GB
  • ACTIVEMQ_CONFIG_TEMPUSAGE:临时使用限制。默认值为50 GB

JMX

您可以使用以下变量控制JMX访问:

  • ACTIVEMQ_JMX_X_ROLE: 其中X是用户名,值是角色(读取或读写)
  • ACTIVEMQ_JMX_X_PASSWORD:其中X是用户名,值是密码

可用的配置参数(Avaible Configuration Parameters)

请参阅docker run命令选项以获取–env-file标志,您可以在其中指定单个文件中的所有必需环境变量。这将使您免于编写可能很长的docker run命令。或者你可以使用docker-compose。

Confd

ActiveMQ设置由Confd管理。所以你可以自定义它:

  • CONFD_BACKEND: 您应该使用的Confd后端。默认为env
  • CONFD_NODES:用于联系后端的Confd URL数组。没有默认值。
  • CONFD_PREFIX_KEY: Confd前缀键。默认为/activemq

ActiveMQ参数

以下是可用于自定义activemq安装的可用选项的完整列表。

  • ACTIVEMQ_CONFIG_NAME: The hostname of ActiveMQ server. Default to localhost
  • ACTIVEMQ_LOGGER_LOGLEVEL: The log level. Default to INFO
  • ACTIVEMQ_CONFIG_PENDINGMESSAGELIMIT: It is used to prevent slow topic consumers to block producers and affect other consumers by limiting the number of messages that are retained. Default to 1000
  • ACTIVEMQ_CONFIG_STORAGEUSAGE: The maximum amount of space storage the broker will use before disabling caching and/or slowing down producers. Default to 100 gb
  • ACTIVEMQ_CONFIG_TEMPUSAGE: The maximum amount of space temp the broker will use before disabling caching and/or slowing down producers. Default to 50 gb
  • ACTIVEMQ_CONFIG_MAXCONNECTION: It’s DOS protection. It limit concurrent connections. Default to 1000
  • ACTIVEMQ_CONFIG_FRAMESIZE: It’s DOS protection. It limit the frame size. Default to 104857600(100MB)
  • ACTIVEMQ_CONFIG_SCHEDULERENABLED: Permit to enabled scheduler in ActiveMQ. Default to true
  • ACTIVEMQ_CONFIG_AUTHENABLED: Permit to enabled the authentification in queue and topic (no anonymous access). Default to false
  • ACTIVEMQ_CONFIG_MINMEMORY: The init memory in MB that ActiveMQ take when start (it’s like XMS). Default to 128 (128 MB)
  • ACTIVEMQ_CONFIG_MAXMEMORY: The max memory in MB that ActiveMQ can take (it’s like XMX). Default to 1024 (1024 MB)
  • ACTIVEMQ_DEFAULTACCOUNT: It’s permit to remove all default login on ActiveMQ (Webconsole, broker and JMX). Default to true
  • ACTIVEMQ_ADMIN_LOGIN: The login for admin account (broker and web console). Default to admin
  • ACTIVEMQ_ADMIN_PASSWORD: The password for admin account. Default to admin
  • ACTIVEMQ_USERS_X: Where X is the username and password is the value.
  • ACTIVEMQ_GROUPS_X: Where X is the group and list user separated by a comma is the value.
  • ACTIVEMQ_JMX_X_ROLE: Where X is the username and role is the value.
  • ACTIVEMQ_JMX_X_PASSWORD: Where X is the username and password is the value.
  • ACTIVEMQ_CONFIG_TOPICS_X: Where X is the logical topics name (wihtout special char) and real topic name is the value.
  • ACTIVEMQ_CONFIG_QUEUES_X: Where X is the logical queue name (wihtout special char) and real queue name is the value.

高级配置(Advance configuration)

对于高级配置,最好的方法是阅读ActiveMQ文档并创建自己的设置文件,如activemq.xml。

接下来,您可以在运行此映像时安装它,也可以创建自己的映像(基于此映像)并包含您的特定配置文件。

ActiveMQ的主目录在/opt/activemq中,因此如果要覆盖所有设置,可以使用-v /your_path/conf:/opt/activemq/conf启动docker。

ecial char) and real queue name is the value.

高级配置(Advance configuration)

对于高级配置,最好的方法是阅读ActiveMQ文档并创建自己的设置文件,如activemq.xml。

接下来,您可以在运行此映像时安装它,也可以创建自己的映像(基于此映像)并包含您的特定配置文件。

ActiveMQ的主目录在/opt/activemq中,因此如果要覆盖所有设置,可以使用-v /your_path/conf:/opt/activemq/conf启动docker。

如果您重载配置,请不要忘记禁用confd或更改模板而不是更改activemq config /opt/confd /etc/templates

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值