手工搭建RocketMQ链接
ansible自动部署:
目录结构:
[root@localhost ansible ]
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 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/'
mq_package='rocketmq-all-4.9.2-bin-release.zip'
mq_md5='md5:19ce04d2f8a65aa6b33f8aec92c67025'
Unpack='/data/op/'
download_dir='/tmp/'
mq_dir="${Unpack} rocketmq-4.9.2/"
mq_file="${mq_dir} bin/mqnamesrv"
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
brokerName =broker-a
brokerId =0
namesrvAddr =nameserver1:9876
autoCreateTopicEnable =true
autoCreateSubscriptionGroup =true
listenPort =10911
haListenPort =10912
deleteWhen =04
fileReservedTime =48
mapedFileSizeCommitLog =1073741824
storePathRootDir ={{ mq_dir }}store
storePathCommitLog ={{ mq_dir }}store/commitlog
brokerRole =ASYNC_MASTER
flushDiskType =ASYNC_FLUSH
brokerIP1 ={{ master1_ip }}
messageDelayLevel =1 s 5 s 10 s 30 s 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10 m 20 m 30 m 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 h 10 h 11 h 12 h
broker-a-s.properties配置文件
brokerClusterName =rocketmq-cluster
brokerName =broker-a
brokerId =1
namesrvAddr =nameserver1:9876
autoCreateTopicEnable =true
autoCreateSubscriptionGroup =true
listenPort =10923
haListenPort =10924
deleteWhen =04
fileReservedTime =48
mapedFileSizeCommitLog =1073741824
storePathRootDir ={{ mq_dir }}store-s
storePathCommitLog ={{ mq_dir }}store-s/commitlog
brokerRole =SLAVE
flushDiskType =ASYNC_FLUSH
brokerIP1 ={{ master2_ip }}
messageDelayLevel =1 s 5 s 10 s 30 s 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10 m 20 m 30 m 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 h 10 h 11 h 12 h
broker-b.properties配置文件
brokerClusterName =rocketmq-cluster
brokerName =broker-b
brokerId =0
namesrvAddr =nameserver1:9876
autoCreateTopicEnable =true
autoCreateSubscriptionGroup =true
listenPort =10911
haListenPort =10912
deleteWhen =04
fileReservedTime =48
mapedFileSizeCommitLog =1073741824
storePathRootDir ={{ mq_dir }}store
storePathCommitLog ={{ mq_dir }}store/commitlog
brokerRole =ASYNC_MASTER
flushDiskType =ASYNC_FLUSH
brokerIP1 ={{ master2_ip }}
messageDelayLevel =1 s 5 s 10 s 30 s 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10 m 20 m 30 m 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 h 10 h 11 h 12 h
broker-b-s.properties配置文件
brokerClusterName =rocketmq-cluster
brokerName =broker-b
brokerId =1
namesrvAddr =nameserver1:9876
autoCreateTopicEnable =true
autoCreateSubscriptionGroup =true
listenPort =10923
haListenPort =10924
deleteWhen =04
fileReservedTime =48
mapedFileSizeCommitLog =1073741824
storePathRootDir ={{ mq_dir }}store-s
storePathCommitLog ={{ mq_dir }}store-s/commitlog
brokerRole =SLAVE
flushDiskType =ASYNC_FLUSH
brokerIP1 ={{ master1_ip }}
messageDelayLevel =1 s 5 s 10 s 30 s 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10 m 20 m 30 m 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 h 10 h 11 h 12 h
broker-trace.properties配置文件
namesrvAddr =nameserver1: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 =1 s 5 s 10 s 30 s 1 m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 10 m 20 m 30 m 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 h 10 h 11 h 12 h
autoCreateSubscriptionGroup =true
autoCreateTopicEnable =true
transientStorePoolSize =100
traceTopicEnable =true
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步