erlang23.3  rabbitmq3.8.14

1.虚拟机上安装centos7

镜像地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/  选择 CentOS-7-x86_64-DVD-2009.iso

2.安装SecureCRT(终端模拟器) V7.0.0 绿色汉化版

下载地址:http://www.xitongzhijia.net/soft/24317.html

选项中会话选项设置字符编码为UTF-8,然后在字体中字符集选择中文GB2312

可以连接虚拟机,方便操作

3.查看centos ip地址    输入 ip addr

4.安装wget

输入 yum install wget

5.安装rabbitmq之前需要先安装erlang  按顺序执行下列命令

wget http://erlang.org/download/otp_src_23.3.tar.gz
tar -zxvf otp_src_23.3.tar.gz
cd otp_src_23.3
# 这里要新建一个erlang文件夹,因为erlang编译安装默认是装在/usr/local下的bin和lib中,这里我们将他统一装到/usr/local/erlang中,方便查找和使用。
mkdir -p /usr/local/erlang
# 在编译之前,必须安装以下依赖包
yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-devel
yum install perl
./configure --prefix=/usr/local/erlang

make && make install

6.安装完成

输入 cd /usr/local/erlang

安装后,在/usr/local/erlang中就会出现如下:

7.配置文件

yum -y install vim*

 

vim /etc/profile

按下  a  插入

移动到最后一行 粘贴:

PATH=$PATH:/usr/local/erlang/bin

按下 exit

输入:wq 

保存并退出

输入  source /etc/profile   保存配置文件

输入erl 可以看到

表示安装完成

输入 halt().  退出erl

至此完后erlang的安装和配置

8.安装rabbitmq

# 下载源码包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.14/rabbitmq-server-generic-unix-3.8.14.tar.xz
# 解压
tar -xvf rabbitmq-server-generic-unix-3.8.14.tar.xz -C /usr/local/
# 添加环境变量
vim /etc/profile
------  添加如下内容  ------
PATH=$PATH:/usr/local/rabbitmq_server-3.8.14/sbin
 
# 重载一下环境变量
source /etc/profile
 
# 添加web管理插件
rabbitmq-plugins enable rabbitmq_management

开启用户远程访问

cd /usr/local/rabbitmq_server-3.8.14/etc/rabbitmq

touch rabbitmq.config

vim rabbitmq.config

写入并保存  [{rabbit, [{loopback_users, []}]}].

开放端口
/sbin/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

启动rabbitmq

rabbitmq-server -detached

至此rabbitmq安装完成

9.在其他电脑打开浏览器输入 http://ip:port/  账号密码都为 guest 即可打开

10.停止rabbitmq

rabbitmqctl stop

11.修改最大连接数

使用ulimit -a 可以查看当前系统的所有限制值

在/etc/profile 中增加一行 ulimit -SHn 65535

重启即可

12.集群搭建

1.修改/etc/hosts文件 (关键)

第一台:

第二台:

重启虚拟机

2.同步.erlang.cookie文件

将第一台的.erlang.cookie 复制到第二台上

.erlang.cookie文件路径:

官方在介绍集群的文档中提到过.erlang.cookie一般会存在这两个地址:

第一个是$home/.erlang.cookie;

第二个地方就是/var/lib/rabbitmq/.erlang.cookie。

如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在${home}目录下,也就是$home/.erlang.cookie。

如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。

在第一台上执行:scp /root/.erlang.cookie root@rabbit-node2:/root/

然后执行:chmod 600 /root/.erlang.cookie 设置权限

注:cookie可以用cat命令查看

3.重启第一台rabbitmq    rabbitmqctl stop   rabbitmq-server -detached

4.关闭防火墙或打开端口

打开4369端口:

firewall-cmd --zone=public --add-port=4369/tcp --permanent

打开5672和15672端口

/sbin/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

重启防火墙:

systemctl restart firewalld.service

5.停止第二台rabbitmq

rabbitmqctl stop_app

6.第二台加入第一台的node

在第二台上执行:rabbitmqctl join_cluster --ram rabbit@rabbit-node1 

出现:Clustering node rabbit@rabbit-node2 with rabbit@rabbit-node1

表示成功

继续执行:rabbitmqctl start_app

启动第二台mq

可以在ui界面看到

成功!

7.重新加入集群

# 1.停止服务
rabbitmqctl stop_app
# 2.重置状态
rabbitmqctl reset
# 3.节点加入
rabbitmqctl join_cluster rabbit@rabbit-node1
# 4.重启服务
rabbitmqctl start_app
 

8.移除其他节点

rabbitmqctl forget_cluster_node rabbit@rabbit-node2

节点必须停止时才能移除

9.开启镜像队列

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

9.1复制系数在上面我们指定了 ha-mode 的值为 all ,代表消息会被同步到所有节点的相同队列中。这里我们之所以这样配置,因为我们本身只有三个节点,因此复制操作的性能开销比较小。如果你的集群有很多节点,那么此时复制的性能开销就比较大,此时需要选择合适的复制系数。通常可以遵循过半写原则,即对于一个节点数为 n 的集群,只需要同步到 n/2+1 个节点上即可。此时需要同时修改镜像策略为 exactly,并指定复制系数 ha-params,示例命令如下
rabbitmqctl set_policy ha-two "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

除此之外,RabbitMQ 还支持使用正则表达式来过滤需要进行镜像操作的队列,示例如下:

rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐