基础环境

操作系统:CentOS7

实例:192.168.63.129,192.168.63.130,192.168.63.131,192.168.63.132

Java:jdk-8u191-linux-x64.tar.gz

安装JDK

先把系统里面自带的卸载掉

[root@localhost soft]# rpm -qa|grep java
python-javapackages-3.4.-.el7.noarch
java-1.8.-openjdk-1.8.0.181-.b13.el7.x86_64
java-1.8.-openjdk-headless-1.8.0.181-.b13.el7.x86_64
tzdata-java-2018e-.el7.noarch
javapackages-tools-3.4.-.el7.noarch
[root@localhost soft]# rpm -e java-1.8.-openjdk-1.8.0.181-.b13.el7.x86_64 --nodeps
[root@localhost soft]# rpm -e java-1.8.-openjdk-headless-1.8.0.181-.b13.el7.x86_64 --nodeps
[root@localhost soft]#

进入你JDK安装包所在的目录,然后安装JDK

# 创建一个目录存放
[root@localhost soft]# mkdir /usr/local/java
# 解压缩到这个目录
[root@localhost soft]# tar -xvf jdk-8u191-linux-x64.tar.gz -C /usr/local/java/

解压之后进入该目录可以看到

下面配置环境变量

[root@localhost java]# vim /etc/profile

加入以下内容

# java
export JAVA_HOME=/usr/local/java/jdk1..0_191
export JRE_HOME=/usr/local/java/jdk1..0_191/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

如下所示

刷新并验证

[root@localhost java]# source /etc/profile
[root@localhost java]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) -Bit Server VM (build 25.191-b12, mixed mode)
[root@localhost java]#

安装RocketMQ

去下载  http://rocketmq.apache.org/

然后上传到服务器,我上传到 /soft文件夹下面。然后解压

# 解压
[root@localhost soft]# unzip rocketmq-all-4.5.-bin-release.zip -d /usr/local/
# 进入解压目录
[root@localhost soft]# cd /usr/local/
[root@localhost local]# ll
total
drwxr-xr-x. root root Apr bin
drwxr-xr-x. root root Apr etc
drwxr-xr-x. root root Apr games
drwxr-xr-x. root root Apr include
drwxr-xr-x. root root May : java
drwxr-xr-x. root root Apr lib
drwxr-xr-x. root root Apr lib64
drwxr-xr-x. root root Apr libexec
drwx------. root root Mar : rocketmq-all-4.5.-bin-release
drwxr-xr-x. root root Apr sbin
drwxr-xr-x. root root May : share
drwxr-xr-x. root root Apr src
# 改个名字
[root@localhost local]# mv rocketmq-all-4.5.1-bin-release/ rocketmq
[root@localhost local]# ll
total
drwxr-xr-x. root root Apr bin
drwxr-xr-x. root root Apr etc
drwxr-xr-x. root root Apr games
drwxr-xr-x. root root Apr include
drwxr-xr-x. root root May : java
drwxr-xr-x. root root Apr lib
drwxr-xr-x. root root Apr lib64
drwxr-xr-x. root root Apr libexec
drwx------. root root Mar : rocketmq
drwxr-xr-x. root root Apr sbin
drwxr-xr-x. root root May : share
drwxr-xr-x. root root Apr src

进入配置文件目录,修改配置文件(四台机器修改的配置文件不一样,注意名称)

[root@localhost local]# cd rocketmq/conf/2m-2s-async/
# 129节点
[root@localhost 2m-2s-async]# vim broker-a.properties
# 130节点
[root@localhost 2m-2s-async]# vim broker-a-s.properties
# 131节点
[root@localhost 2m-2s-async]# vim broker-b.properties
# 132节点
[root@localhost 2m-2s-async]# vim broker-b-s.properties

加入如下内容(四台机器加入内容一样,但是修改的文件不一样)

listenPort=
namesrvAddr=192.168.63.129:;192.168.63.130:;192.168.63.131:;192.168.63.132:
mapedFileSizeCommitLog=
storePathRootDir=/usr/local/rocketmq/store
storePathCommitLog=/usr/local/rocketmq/store/commitlog
storePathConsumerQueue=/usr/local/rocketmq/store/consumequeue
storePathIndex=/usr/local/rocketmq/store/index

如图:

然后新建store相关目录(四台机器一样)

[root@localhost 2m-2s-async]# mkdir /usr/local/rocketmq/store
[root@localhost 2m-2s-async]# mkdir /usr/local/rocketmq/store/commitlog
[root@localhost 2m-2s-async]# mkdir /usr/local/rocketmq/store/consumequeue
[root@localhost 2m-2s-async]# mkdir /usr/local/rocketmq/store/index

开启防火墙端口

[root@localhost 2m-2s-async]# firewall-cmd --zone=public --add-port=/tcp --permanent
success
[root@localhost 2m-2s-async]# firewall-cmd --zone=public --add-port=/tcp --permanent
success
[root@localhost 2m-2s-async]# systemctl restart firewalld

进入bin目录,准备启动nameserver,启动成功。

[root@localhost 2m-2s-async]# cd /usr/local/rocketmq/bin/
[root@localhost bin]# ./mqnamesrv &
[]
[root@localhost bin]# Java HotSpot(TM) -Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) -Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON [root@localhost bin]#

下面启动broker

[root@localhost bin]# ./mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties &
[]
[root@localhost bin]# Java HotSpot(TM) -Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, , ) failed; error='Cannot allocate memory' (errno=)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/rocketmq/bin/hs_err_pid59738.log []+ Exit ./mqbroker

报错了,内存不足。毕竟测试搭建,只有1G内存。修改runbroker.sh

[root@localhost bin]# vim runbroker.sh

修改这里

改为 -Xms256m -Xmx256m -Xmn128m

保存关闭,重启。

#
[root@localhost bin]# ./mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties &
[]
[] Exit ./mqbroker
[root@localhost bin]# The broker[broker-a, 192.168.63.129:] boot success. serializeType=JSON and name server is 192.168.63.129:;192.168.63.130:;192.168.63.131:;192.168.63.132: #
[root@localhost bin]# ./mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties &
[]
[] Exit ./mqbroker
[root@localhost bin]# The broker[broker-a, 192.168.63.130:] boot success. serializeType=JSON and name server is 192.168.63.129:;192.168.63.130:;192.168.63.131:;192.168.63.132: #
[root@localhost bin]# ./mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties &
[]
[] Exit ./mqbroker
[root@localhost bin]# The broker[broker-b, 192.168.63.131:] boot success. serializeType=JSON and name server is 192.168.63.129:;192.168.63.130:;192.168.63.131:;192.168.63.132: #
[root@localhost bin]# ./mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties &
[]
[] Exit ./mqbroker
[root@localhost bin]# The broker[broker-b, 192.168.63.132:] boot success. serializeType=JSON and name server is 192.168.63.129:;192.168.63.130:;192.168.63.131:;192.168.63.132:

全部启动成功后,安装个管控台。

管控台

这里需要四台服务器开启10909端口。

[root@localhost bin]# firewall-cmd --zone=public --add-port=/tcp --permanent
success
[root@localhost bin]# systemctl restart firewalld

=====

https://github.com/apache/rocketmq-externals

下载好后,进入rocketmq-console目录执行打包命令

mvn clean package -Dmaven.test.skip=true

进入target目录,执行命令启动。

java -jar rocketmq-console-ng-1.0..jar --rocketmq.config.namesrvAddr='192.168.63.129:9876;192.168.63.130:9876;192.168.63.131:9876;192.168.63.132:9876'

访问http://localhost:8080/#/cluster

关闭NameServer和Broker

[root@localhost bin]# ./mqshutdown namesrv
The mqnamesrv() is running...
Send shutdown request to mqnamesrv() OK
[root@localhost bin]# ./mqshutdown broker
The mqbroker() is running...
Send shutdown request to mqbroker() OK
[]- Exit ./mqnamesrv

RocketMQ 4.5.1 双主双从异步复制环境搭建的更多相关文章

  1. RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群

    1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...

  2. Docker 部署 RocketMQ 双主双从模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/96/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

  3. Centos6.9下RocketMQ3.4.6高可用集群部署记录(双主双从+Nameserver+Console)

    之前的文章已对RocketMQ做了详细介绍,这里就不再赘述了,下面是本人在测试和生产环境下RocketMQ3.4.6高可用集群的部署手册,在此分享下: 1) 基础环境 ip地址 主机名 角色 192. ...

  4. RocketMQ4.7.1双主双从集群搭建

    导读 上一集我们已经学会了SpringBoot整合RocketMQ点我直达,今天我们来搭建双主双从高性能MQ服务集群. 简介 主从架构 Broker角色,Master提供读写,Slave只支持读,Co ...

  5. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变

    [Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...

  6. 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)

    既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...

  7. mysql搭建主从复制(一主一从,双主双从)

    主从复制原理 Mysql 中有一个binlog 二进制日志,这个日志会记录下所有修改了的SQL 语句,从服务器把主服务器上的binlog二进制日志在指定的位置开始复制主服务器所进行修改的语句到从服务器 ...

  8. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

    1. 主从复制解释   将主数据库的增删改查等操作记录到二进制日志文件中,从库接收主库日志文件,根据最后一次更新的起始位置,同步复制到从数据库中,使得主从数据库保持一致. 2. 主从复制的作用 高可用 ...

  9. 在Docker下进行MyCAT管理双主双从MySQL集群

    前言 在Docker下双主双从MySQL集群模拟 https://www.cnblogs.com/yumq/p/14259964.html 本文实验配置文件 Docker拉取MyCAT镜像 如果没启动 ...

随机推荐

  1. fitnesse管理引进的jar包

    如下:需要引进的jar很多,并且路径都不一样,这样增加删减jar就比较麻烦 !*> setup!define TEST_SYSTEM {slim}!define LOCAL_PATH  {C:\ ...

  2. PHP字符串比较函数详解

    在PHP中,对于字符串之间的比较有很多种方法,第一种是使用 strcmp()函数和 strcasecmp()函数按照字节进行比较,第二种是使用 strnatcmp()函数按照自然排序法进行比较,第三种 ...

  3. planning algorithms chapter 1

    chapter 1 介绍 什么是规划? 在机器人领域,运动规划和轨迹规划主要用来解决"怎么移动钢琴"的问题,这个问题是如何将钢琴从一个房间移动到另一个房间,并且保证钢琴不和其他事物 ...

  4. 原生js实现元素类名的判存、添加和移除

    1.addClass:为指定的dom元素添加样式. 2.removeClass:删除指定dom元素的样式. 3.toggleClass:如果存在(不存在),就删除(添加)一个样式. 4.hasClas ...

  5. SQLSERVER|CDC日志变更捕获机制

    一.什么是CDC? 变更数据捕获(Change Data Capture ,简称 CDC)记录 SQL Server 表的插入.更新和删除活动.SQLServer的操作会写日志,这也是CDC捕获数据的 ...

  6. [Gamma]Scrum Meeting#4

    github 本次会议项目由PM召开,时间为5月29日晚上10点30分 时长10分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客,组织例会 撰写博客,组织例会 swoip 前端显示屏幕,翻译 ...

  7. [技术博客]JSCover+selenium获得js代码覆盖率

    本文档讲解了我们是如何使用JSCover来获得Selenium的测试样例的js代码文件的执行覆盖率的. 事实上网上有挺多博客讲这玩意儿了,不过完全按照网上已有的教程去弄的的话,并无法满足我们的需要. ...

  8. Delphi XE7并行编程: 并行For循环

    从Delphi XE7开始,引入了全新的并行编程库用于简化并行编程,它位于System.Threading单元中. 下面是一个判断素数的简单例子:function IsPrime (N: Intege ...

  9. Spark2.x(六十三):(Spark2.4)Driver如何把Task(闭包等)分配给Executor

    在Spark中一个appliation可能包含多个job,每个job都是由SparkContext#runJob(...)触发的,一个Job下包含1个或多个Stage,Job的最后一个stage为Re ...

  10. php laravel 环境搭建

    最近上一个新项目,时间比较紧,为了满足业务需求,没有办法,只有上我大 php 了,找了一个带些基础的数据结构,用的是 laravel 搭建的,然后寻坑就开始了,先是构建 docker 镜像就坑了,然后 ...