1、应用部署
RabbitMQ
- 创建目录:
mkdir -p /home/rabbitmq mkdir -p /home/rabbitmq/conf
- 创建配置文件/home/rabbitmq/conf/rabbitmq.conf
cd /home/rabbitmq/conf touch rabbitmq.conf vi rabbitmq.conf
# 监听 listeners.tcp.default = 5672 # 管理界面 management.tcp.port = 15672 # 内存设置 vm_memory_high_watermark.relative = 0.6 # 磁盘空间限制 disk_free_limit.absolute = 1GB # 允许所有用户远程访问(禁用本地回环限制) loopback_users = none
- 分配权限:(没有权限会导致无法生成文件,比如log)
chmod -R 777 /home/rabbitmq
- 拉取镜像:
docker pull rabbitmq:3.13.3-management
- 容器启动:
docker run -d --name=rabbitmq --restart=always -p 15672:15672 -p 5672:5672 \ --hostname=rabbitmq-master \ -v /home/rabbitmq/data:/var/lib/rabbitmq \ -v /home/rabbitmq/conf:/etc/rabbitmq/conf.d \ -v /home/rabbitmq/log:/var/log/rabbitmq \ -e TZ=Asia/Shanghai \ rabbitmq:3.13.3-management
- 访问:http://47.97.4.204:15672 guest/guest
- 复制插件文件到容器
docker cp rabbitmq_delayed_message_exchange-3.13.0.ez rabbitmq:/opt/rabbitmq/plugins
- 进入容器
docker exec -it rabbitmq /bin/sh
- 查看插件
rabbitmq-plugins list
- 开启插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
RocketMQ
- 创建目录:
mkdir -p /home/rocketmq mkdir -p /home/rocketmq/namesrv/logs mkdir -p /home/rocketmq/broker1/conf mkdir -p /home/rocketmq/broker1/logs mkdir -p /home/rocketmq/broker1/store
- 创建配置文件
cd /home/rocketmq/broker1/conf touch broker.conf vi broker.conf
# 所属集群名称,如果节点较多可以配置多个 brokerClusterName = DefaultCluster #broker名称,master和slave使用相同的名称,表明他们的主从关系 brokerName = broker1 #0表示Master,大于0表示不同的slave brokerId = 0 #表示几点做消息删除动作,默认是凌晨4点 deleteWhen = 04 #在磁盘上保留消息的时长,单位是小时 fileReservedTime = 48 #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制; brokerRole = ASYNC_MASTER #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要; flushDiskType = ASYNC_FLUSH # 设置broker节点所在服务器的ip地址(**这个非常重要,主从模式下,从节点会根据主节点的brokerIP2来同步数据,如果不配置,主从无法同步,brokerIP1设置为自己外网能访问的ip,服务器双网卡情况下必须配置,比如阿里云这种,主节点需要配置ip1和ip2,从节点只需要配置ip1即可) # 此ip由使用环境决定 本机使用 127 局域网使用 192 外网使用 外网ip brokerIP1 = 47.97.4.204 #Broker 对外服务的监听端口, listenPort = 10911 #是否允许Broker自动创建Topic autoCreateTopicEnable = true #是否允许 Broker 自动创建订阅组 autoCreateSubscriptionGroup = true #linux开启epoll useEpollNativeSelector = true
- 分配权限:(没有权限会导致无法生成文件)
chmod -R 777 /home/rocketmq
- 拉取镜像:
docker pull apache/rocketmq:5.3.2
- namesrv容器启动:
docker run -d --name=rmqnamesrv --restart=always -p 9876:9876 \ -v /home/rocketmq/namesrv/logs:/home/rocketmq/logs/rocketmqlogs \ -e TZ=Asia/Shanghai \ apache/rocketmq:5.3.2 \ sh mqnamesrv
- broker1容器启动:
docker run -d --name=rmqbroker1 --restart=always -p 10912:10912 -p 10911:10911 -p 10909:10909 \ -v /home/rocketmq/broker1/conf/broker.conf:/home/rocketmq/rocketmq-5.3.2/conf/broker.conf \ -v /home/rocketmq/broker1/logs:/home/rocketmq/logs/rocketmqlogs \ -v /home/rocketmq/broker1/store:/home/rocketmq/store \ -e "NAMESRV_ADDR=47.97.4.204:9876" \ -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \ -e TZ=Asia/Shanghai \ apache/rocketmq:5.3.2 \ sh mqbroker --enable-proxy -c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
- 拉取rockermq-dashboard镜像:
docker pull apacherocketmq/rocketmq-dashboard:latest
- rockermq-dashboard容器启动:
docker run -d --name=rmqconsole --restart=always -p 19876:19876 \ -e "JAVA_OPTS=-Dserver.port=19876 -Drocketmq.namesrv.addr=47.97.4.204:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -e TZ=Asia/Shanghai \ apacherocketmq/rocketmq-dashboard:latest
- 访问:http://47.97.4.204:19876
Zookeeper
- 拉取镜像:
docker pull bitnami/zookeeper:3.8.0
- 容器启动:
docker run -d --name=zookeeper --restart=always -p 2181:2181 \ -e ALLOW_ANONYMOUS_LOGIN=yes \ -e TZ=Asia/Shanghai \ bitnami/zookeeper:3.8.0
Kafka
- 创建目录:
mkdir -p /home/kafka/data
- 分配权限:(没有权限会导致无法生成文件)
chmod -R 777 /home/kafka
- 拉取镜像:
docker pull bitnami/kafka:3.8.0
- 容器启动:
docker run -d --name=kafka --restart=always -p 9092:9092 \ -v /home/kafka/data:/bitnami/kafka/data \ -e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092 \ -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://47.97.4.204:9092 \ -e KAFKA_CFG_ZOOKEEPER_CONNECT=47.97.4.204:2181 \ -e ALLOW_PLAINTEXT_LISTENER=yes \ -e TZ=Asia/Shanghai \ bitnami/kafka:3.8.0
- 拉取镜像:
docker pull sheepkiller/kafka-manager:latest
- 容器启动:
docker run -d --name=kafka-manager --restart=always -p 19092:19092 \ -e ZK_HOSTS=47.97.4.204:2181 \ -e KM_ARGS=-Dhttp.port=19092 \ -e TZ=Asia/Shanghai \ sheepkiller/kafka-manager:latest
- 访问:http://47.97.4.204:19092