ansible--rocketmq集群部署

手工搭建RocketMQ链接

ansible自动部署:

目录结构:

[root@localhost ansible]# tree rocketmq_install/
rocketmq_install/
├── conf
│   ├── broker-a.properties
│   ├── broker-a-s.properties
│   ├── broker-b.properties
│   ├── broker-b-s.properties
│   └── broker-trace.properties
├── id_rsa
├── inv
├── rocketmq.yml
└── run.sh


rocketmq.yml配置文件
- name: etcd集群安装
  hosts: all
  gather_facts: no
  remote_user: sa
  become_user: root
  serial: 3
  vars:
  tasks:
    - name: 下载安装包 {{ mq_package }} 到 {{ download_dir }}
      get_url:
        url: '{{ http_url }}{{ mq_package }}'
        dest: '{{ download_dir }}'
        mode: 0644
        force: no
        checksum: '{{ mq_md5 }}'
      become: yes
    - name: 解压安装包 {{ mq_package }} 到 {{ Unpack }}
      unarchive:
        src: '{{ download_dir }}{{ mq_package }}'
        dest: '{{ Unpack }}'
        remote_src: yes
      args:
        creates: '{{ mq_file }}'
      become: yes
    - name: 修改/etc/hosts配置文件
      lineinfile:
        dest: /etc/hosts
        line: '{{ item }}'
      with_items:
        - [ "{{ master1_ip }} nameserver1 ",
            "{{ master1_ip }} master1",
            "{{ master1_ip }} master2-slave",
            "{{ master2_ip }} nameserver2",
            "{{ master2_ip }} master2",
            "{{ master2_ip }} master1-slave" ]
      become: yes
    - name: "{{ master1_ip }} {{ master2_ip }} 创建目录"
      file:
        path: '{{ item }}'
        state: directory
      with_items:
        - [ "{{ dir1 }}","{{ dir2 }}" ]
      when:  inventory_hostname == (master1_ip) or inventory_hostname == (master2_ip)
      become: yes
    - name: "{{ master3_ip }} 创建目录"
      file:
        path: '{{ dir3 }}'
        state: directory
      when:  inventory_hostname == (master3_ip)
      become: yes
    - name: 传输文件到 {{ master1_ip }} 服务器
      template:
        src: '{{ item.src }}'
        dest: '{{ mq_path }}'
      with_items:
        - { src: ./conf/broker-a.properties }
        - { src: ./conf/broker-b-s.properties }
      when: inventory_hostname == (master1_ip)
      become: yes
    - name: 传输文件到 {{ master2_ip }} 服务器
      template:
        src: '{{ item.src }}'
        dest: '{{ mq_path }}'
      with_items:
        - { src: ./conf/broker-b.properties }
        - { src: ./conf/broker-a-s.properties }
      when: inventory_hostname == (master2_ip)
      become: yes
    - name: 传输文件到 {{ master3_ip }} 服务器
      template:
        src: ./conf/broker-trace.properties
        dest: '{{ mq_path }}'
      when: inventory_hostname == (master3_ip)
      become: yes
    - name: "{{ master1_ip }} {{ master2_ip }} 启动服务mqnamesrv"
      shell: source /etc/profile;nohup /bin/sh mqnamesrv  2>&1 &
    #  when:  inventory_hostname == '10.10.80.176' or inventory_hostname == '10.10.80.177'
      when: inventory_hostname in (item)
      with_items:
        - [ "{{ master1_ip }}","{{ master2_ip }}" ]
      args:
        chdir: "{{ mq_dir }}bin"
      become: yes
    - name: "{{ master1_ip }} 启动服务Broker"
      shell: '{{ item.shell }}'
      with_items:
        - { shell: source /etc/profile; nohup sh mqbroker -c ../conf/2m-2s-async/broker-a.properties >/dev/null 2>&1  & }
        - { shell: source /etc/profile; nohup sh mqbroker -c ../conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 & }
      args:
        chdir: "{{ mq_dir }}bin"
      when: inventory_hostname == (master1_ip)
      become: yes
    - name: "{{ master2_ip }} 启动服务Broker"
      shell: '{{ item.shell }}'
      with_items:
        - { shell: source /etc/profile; nohup sh mqbroker -c ../conf/2m-2s-async/broker-b.properties >/dev/null 2>&1  & }
        - { shell: source /etc/profile; nohup sh mqbroker -c ../conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 & }
      args:
        chdir: "{{ mq_dir }}bin"
      when: inventory_hostname == (master2_ip)
      become: yes
    - name: "{{ master3_ip }}启动服务Trace"
      shell: source /etc/profile; nohup sh mqbroker -c ../conf/2m-2s-async/broker-trace.properties >/dev/null 2>&1 &
      args:
        chdir:  "{{ mq_dir }}bin"
      when: inventory_hostname == (master3_ip)
      become: yes


run.sh配置文件
cd `dirname $0`

## 获取主机地址分类
master1_ip=`awk 'NR==1' inv`
master2_ip=`awk 'NR==2' inv`
master3_ip=`awk 'NR==3' inv`
## 安装包源
http_url='http://192.168.1.230/packages/'
## rocketmq安装包名称
mq_package='rocketmq-all-4.9.2-bin-release.zip'
## rocketmq安装包md5值
mq_md5='md5:19ce04d2f8a65aa6b33f8aec92c67025'
## 解包路径
Unpack='/data/op/'
## 拉包存放位置
download_dir='/tmp/'
## rocketmq解压完成路径
mq_dir="${Unpack}rocketmq-4.9.2/"
## rocketmq解压完成标识
mq_file="${mq_dir}bin/mqnamesrv"
## rocketmq接收文件路径
mq_path="${mq_dir}conf/2m-2s-async"
## 创建所需目录
dir1="${mq_dir}store/commitlog"
dir2="${mq_dir}store-s/commitlog"
dir3="${mq_dir}store-trace"





ansible_options="
    -e master1_ip=$master1_ip
    -e master2_ip=$master2_ip
    -e master3_ip=$master3_ip
    -e http_url=$http_url
    -e mq_package=$mq_package
    -e mq_md5=$mq_md5
    -e Unpack=$Unpack
    -e download_dir=$download_dir
    -e mq_dir=$mq_dir
    -e mq_file=$mq_file
    -e mq_path=$mq_path
    -e dir1=$dir1
    -e dir2=$dir2
    -e dir3=$dir3
"

ansible-playbook -i inv \
    $ansible_options \
    --key-file "./id_rsa"\
    rocketmq.yml $*


inv配置文件
10.10.80.176
10.10.80.177
10.10.80.178

id_rsa配置文件
服务器公用的私钥,免密链接

conf目录:

broker-a.properties配置文件
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=nameserver1:9876;nameserver2:9876
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#存储路径
storePathRootDir={{ mq_dir }}store
#commitLog 存储路径
storePathCommitLog={{ mq_dir }}store/commitlog
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1={{ master1_ip }}
#messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
#描述了各级别与延时时间的对应映射关系。
#     这个配置项配置了从1级开始各级延时的时间,如1表示延时1s,2表示延时5s,14表示延时10m,可以修改这个指定级别的延时时间; 
#     时间单位支持:s、m、h、d,分别表示秒、分、时、天; 
#     默认值就是上面声明的,可手工调整; 
#     默认值已经够用,不建议调整【仅供参考,还是根据实际需要调整。调整默认值时注意同时要修改时间对应的level级别的值】
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 3h 4h 5h 6h 7h 8h 9h 10h 11h 12h


broker-a-s.properties配置文件
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=nameserver1:9876;nameserver2:9876
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10923
haListenPort=10924
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#存储路径
storePathRootDir={{ mq_dir }}store-s
#commitLog 存储路径
storePathCommitLog={{ mq_dir }}store-s/commitlog
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1={{ master2_ip }}
#messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
#描述了各级别与延时时间的对应映射关系。
#     这个配置项配置了从1级开始各级延时的时间,如1表示延时1s,2表示延时5s,14表示延时10m,可以修改这个指定级别的延时时间; 
#     时间单位支持:s、m、h、d,分别表示秒、分、时、天; 
#     默认值就是上面声明的,可手工调整; 
#     默认值已经够用,不建议调整【仅供参考,还是根据实际需要调整。调整默认值时注意同时要修改时间对应的level级别的值】
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 3h 4h 5h 6h 7h 8h 9h 10h 11h 12h


broker-b.properties配置文件
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=nameserver1:9876;nameserver2:9876
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#存储路径
storePathRootDir={{ mq_dir }}store
#commitLog 存储路径
storePathCommitLog={{ mq_dir }}store/commitlog
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1={{ master2_ip }}
#messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
#描述了各级别与延时时间的对应映射关系。
#     这个配置项配置了从1级开始各级延时的时间,如1表示延时1s,2表示延时5s,14表示延时10m,可以修改这个指定级别的延时时间; 
#     时间单位支持:s、m、h、d,分别表示秒、分、时、天; 
#     默认值就是上面声明的,可手工调整; 
#     默认值已经够用,不建议调整【仅供参考,还是根据实际需要调整。调整默认值时注意同时要修改时间对应的level级别的值】
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 3h 4h 5h 6h 7h 8h 9h 10h 11h 12h


broker-b-s.properties配置文件
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=nameserver1:9876;nameserver2:9876
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10923
haListenPort=10924
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#存储路径
storePathRootDir={{ mq_dir }}store-s
#commitLog 存储路径
storePathCommitLog={{ mq_dir }}store-s/commitlog
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1={{ master1_ip }}
#messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
#描述了各级别与延时时间的对应映射关系。
#     这个配置项配置了从1级开始各级延时的时间,如1表示延时1s,2表示延时5s,14表示延时10m,可以修改这个指定级别的延时时间; 
#     时间单位支持:s、m、h、d,分别表示秒、分、时、天; 
#     默认值就是上面声明的,可手工调整; 
#     默认值已经够用,不建议调整【仅供参考,还是根据实际需要调整。调整默认值时注意同时要修改时间对应的level级别的值】
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 3h 4h 5h 6h 7h 8h 9h 10h 11h 12h

broker-trace.properties配置文件
namesrvAddr=nameserver1:9876;nameserver2:9876
brokerClusterName=RMQCluster
brokerIP1={{ master3_ip }}
brokerName=dida-trace
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
storePathRootDir={{ mq_dir }}store-trace
storePathCommitLog={{ mq_dir }}store-trace/commitlog
listenPort=10912
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 3h 4h 5h 6h 7h 8h 9h 10h 11h 12h
autoCreateSubscriptionGroup=true
autoCreateTopicEnable=true
transientStorePoolSize=100
traceTopicEnable=true

image


image

posted @ 2022-02-11 10:24  咖啡馆  阅读(460)  评论(0编辑  收藏  举报