记ActiveMQ部署后 Service Unavailable问题解决

本文介绍了解决ActiveMQ启动时遇到的主机名解析错误问题的方法,通过修改/etc/hosts文件并重新启动ActiveMQ来成功访问管理界面。

activemq上传到linux

启动activemq,查看启动的状态

我开心的以为在浏览器中能访问到管理的界面,然而。。。
鬼知道发生了什么,我也是一脸懵逼
然后自己又重新的部署了几遍,但还是一样的结果,只是google一下。解决方法如下:

  • 将ActiveMQ在前台启动
    命令如下:/usr/local/activemq/bin/activemq console
    启动的时候有一个错误: WARN | Failed to get host name: java.net.UnknownHostException: oldboy: oldboy: 域名解析暂时失败
    java.net.UnknownHostException: oldboy: oldboy: 域名解析暂时失败

分析:和linux的主机名有观,因为我的主机名是oldboy。

  • 在linux命令行中ping oldboy
    结果是:ping: unknown host oldboy

  • 打开/etc/hosts文件 vim /etc/hosts
    结果如下:

  • 加上主机名(我的是oldboy),保存退出
    结果如下这里写图片描述

  • 重新启动ActiveMQ

    再次访问

参考文章:http://www.cnblogs.com/enjoycode/p/5017941.html

<think>我们正在考虑如何部署ActiveMQ。根据用户提供的引用,有几种不同的部署方式:Docker容器部署、Docker Compose部署以及Kubernetes部署。用户没有明确指定部署环境,因此我们需要提供多种方案供选择。 引用中提供了以下部署方式: 1. 使用Docker直接运行(引用[3]) 2. 使用Docker Compose部署(引用[4]) 3. 在Kubernetes中部署(引用[1]、[2]、[5]) 我们将分别介绍这三种部署方式,用户可以根据自己的环境选择合适的方式。 注意:在部署之前,请确保已安装相应的环境(Docker或Kubernetes)。 一、使用Docker直接运行ActiveMQ 步骤: 1. 拉取ActiveMQ镜像 2. 运行容器,映射端口 二、使用Docker Compose部署ActiveMQ 步骤: 1. 创建docker-compose.yml文件 2. 运行docker-compose up启动服务 三、在Kubernetes中部署ActiveMQ 步骤: 1. 创建部署文件(Deployment和Service) 2. 使用kubectl应用这些文件 下面详细说明每种方法。 方法一:Docker直接运行 这是最简单的方式,适合快速启动测试。 1. 拉取镜像(这里使用webcenter/activemq镜像): ```bash docker pull webcenter/activemq ``` 2. 运行容器: ```bash docker run -d --name activemq -p 61616:61616 -p 8161:8161 webcenter/activemq ``` 参数说明: - `-d`: 后台运行 - `--name activemq`: 容器名称 - `-p 61616:61616`: 将主机的61616端口映射到容器的61616端口(用于消息传输) - `-p 8161:8161`: 将主机的8161端口映射到容器的8161端口(用于Web管理界面) 3. 验证容器运行: ```bash docker ps ``` 4. 访问Web管理界面:`http://服务器IP:8161`,默认用户名和密码都是`admin`。 方法二:使用Docker Compose部署 这种方式适合需要持久化数据和日志的场景,也方便管理。 1. 创建一个目录,例如`activemq`,然后进入该目录。 2. 创建`docker-compose.yml`文件,内容如下(参考引用[4]): ```yaml version: '3.9' services: activemq: image: rmohr/activemq:latest # 或者使用 webcenter/activemq container_name: activemq ports: - "8161:8161" - "61616:61616" volumes: - ./data:/opt/activemq/data - ./logs:/opt/activemq/logs environment: ACTIVEMQ_ADMIN_LOGIN: admin ACTIVEMQ_ADMIN_PASSWORD: admin restart: always ``` 注意:这里使用了`rmohr/activemq`镜像,也可以替换为`webcenter/activemq`。 3. 创建数据和日志目录(可选,docker-compose会自动创建): ```bash mkdir data logs ``` 4. 启动服务: ```bash docker-compose up -d ``` 5. 验证和访问同上。 方法三:在Kubernetes中部署 这种方式适合生产环境,支持高可用和扩展。 步骤: 1. 创建Deployment和Service的YAML文件。 示例文件(参考引用[5]): activemq.yaml ```yaml apiVersion: v1 kind: Service metadata: name: nodeport-activemq namespace: default # 可以指定命名空间,如不指定则使用default spec: selector: app: activemq ports: - port: 8161 targetPort: 8161 protocol: TCP name: admin nodePort: 30004 # NodePort方式访问管理界面,范围30000-32767 - port: 61616 targetPort: 61616 protocol: TCP name: tcp nodePort: 30005 # NodePort方式访问消息端口 type: NodePort --- apiVersion: apps/v1 kind: Deployment metadata: name: deploy-activemq namespace: default spec: replicas: 1 selector: matchLabels: app: activemq template: metadata: labels: app: activemq spec: containers: - name: activemq image: webcenter/activemq ports: - containerPort: 8161 protocol: TCP - containerPort: 61616 protocol: TCP ``` 2. 应用YAML文件: ```bash kubectl apply -f activemq.yaml ``` 3. 查看部署状态: ```bash kubectl get pods -n default kubectl get svc -n default ``` 4. 访问: - Web管理界面:`http://<NodeIP>:30004` (其中NodeIP是Kubernetes集群中任意节点的IP) - 消息端口:`<NodeIP>:30005` 注意:如果是在云服务上,也可以使用LoadBalancer类型的Service,或者使用Ingress暴露服务。 以上是三种部署ActiveMQ的方法,请根据实际环境选择。 如果需要配置ActiveMQ(如修改配置文件),在Docker中可以通过挂载卷的方式覆盖默认配置,在Kubernetes中可以使用ConfigMap(参考引用[2])来管理配置文件。 例如,在Kubernetes中创建ConfigMap: ```bash kubectl create configmap activemq-config --from-file=./xmls/ -n default ``` 然后在Deployment中挂载这个ConfigMap。 希望这些步骤能帮助你成功部署ActiveMQ。 相关问题: 1. 如何配置ActiveMQ的用户名和密码? 2. ActiveMQ的持久化存储如何配置? 3. 在Kubernetes中如何实现ActiveMQ的高可用集群? 4. 如何监控ActiveMQ的运行状态? 5. ActiveMQ的安全配置有哪些注意事项?</think>以下是在不同环境中部署 ActiveMQ 的详细方法,涵盖 Docker、Kubernetes 和传统部署三种主流方式: ### 一、Docker 容器部署(最快启动) ```bash # 拉取官方镜像 docker pull webcenter/activemq # 运行容器(持久化数据+日志) docker run -d \ --name activemq \ -p 8161:8161 \ # Web管理界面 -p 61616:61616 \ # 消息传输端口 -v ./data:/opt/activemq/data \ -v ./logs:/opt/activemq/logs \ -e ACTIVEMQ_ADMIN_LOGIN=admin \ -e ACTIVEMQ_ADMIN_PASSWORD=your_password \ webcenter/activemq ``` **验证**:访问 `http://服务器IP:8161`,使用账号 `admin/your_password` 登录[^3] --- ### 二、Docker Compose 部署(推荐生产环境) ```yaml # docker-compose.yml version: '3.9' services: activemq: image: rmohr/activemq:latest container_name: activemq ports: - "8161:8161" - "61616:61616" volumes: - ./data:/opt/activemq/data # 持久化数据 - ./logs:/opt/activemq/logs # 持久化日志 environment: ACTIVEMQ_ADMIN_LOGIN: admin ACTIVEMQ_ADMIN_PASSWORD: your_password restart: always # 故障自动重启 ``` 启动命令:`docker-compose up -d`[^4] --- ### 三、Kubernetes 部署(集群方案) ```yaml # activemq.yaml apiVersion: apps/v1 kind: Deployment metadata: name: activemq namespace: mq-ns spec: replicas: 1 selector: matchLabels: app: activemq template: metadata: labels: app: activemq spec: containers: - name: activemq image: webcenter/activemq ports: - containerPort: 8161 - containerPort: 61616 volumeMounts: - mountPath: /opt/activemq/data name: activemq-data volumes: - name: activemq-data persistentVolumeClaim: claimName: activemq-pvc --- apiVersion: v1 kind: Service metadata: name: activemq-service namespace: mq-ns spec: selector: app: activemq ports: - name: admin port: 8161 targetPort: 8161 nodePort: 30004 # NodePort访问 - name: tcp port: 61616 targetPort: 61616 nodePort: 30005 type: NodePort ``` 部署步骤: 1. 创建命名空间:`kubectl create ns mq-ns` 2. 创建持久卷声明(PVC) 3. 应用配置:`kubectl apply -f activemq.yaml` 4. 查看服务:`kubectl get svc -n mq-ns`[^5] --- ### 四、传统服务器部署 ```bash # 1. 下载安装包 wget https://archive.apache.org/dist/activemq/5.16.0/apache-activemq-5.16.0-bin.tar.gz # 2. 解压并配置 tar -zxvf apache-activemq-5.16.0-bin.tar.gz cd apache-activemq-5.16.0/conf # 3. 修改管理密码(jetty-realm.properties) admin: your_password, admin # 4. 配置网络(jetty.xml) <property name="host" value="0.0.0.0"/> # 开放远程访问 # 5. 启动服务 ./bin/activemq start ``` --- ### 关键配置注意事项 1. **安全加固**: - 修改默认密码(`jetty-realm.properties`) - 限制管理界面IP访问(`jetty.xml`中配置`<property name="host">`) 2. **持久化配置**: ```xml <!-- conf/activemq.xml --> <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> ``` 3. **集群配置**: ```xml <networkConnectors> <networkConnector uri="static:(tcp://activemq-node2:61616)" duplex="true"/> </networkConnectors> ``` --- ### 验证部署成功 1. **端口检查**: ```bash netstat -tuln | grep '8161\|61616' ``` 2. **日志检查**: ```bash tail -f ./data/activemq.log # Docker/K8s查看容器日志 ``` 3. **消息测试**: ```bash # 生产者测试 ./bin/activemq producer --message "Hello" --destination queue://TEST ``` > ⚠️ **防火墙提示**:确保开放8161(管理)和61616(消息)端口[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值