Percy Dev Engineer

MQ学习记录

2023-06-08
Percy

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

上一篇 K8S学习记录

Comments

Content