基于虚拟机的rabbitmq 的安装

rabbitmq是队列管理的,这个教程主要是在虚拟机上安装3个rabbitmq

前置条件

服务器地址备注
rabbitmqs192.168.137.105 
rabbitmqn1192.168.137.102 
rabbitmqn2192.168.137.103 

复制虚拟机

从centos7开始复制,centos7是已经安装好的centos7.8的虚拟机,通过virt-clone拷贝

[root@localhost bin]# virt-clone -o centos7 -n rabbitmqs -f /vms/reabbitmqs.qcow2
Allocating 'reabbitmqs.qcow2'                                                                                                                   |  40 GB  00:00:32     

Clone 'rabbitmqs' created successfully.
[root@localhost bin]# virt-clone -o centos7 -n rabbitmqn1 -f /vms/reabbitmqn1.qcow2
Allocating 'reabbitmqn1.qcow2'                                                                                                                  |  40 GB  00:00:03     

Clone 'rabbitmqn1' created successfully.
[root@localhost bin]# virt-clone -o centos7 -n rabbitmqn2 -f /vms/reabbitmqn2.qcow2
Allocating 'reabbitmqn2.qcow2'                                                                                                                  |  40 GB  00:00:02     

Clone 'rabbitmqn2' created successfully.

设置各虚拟机的IP地址

以rabbitmq为例

#  vi /etc/sysconfig/network-scripts/ifcfg-ens2
#注意ifcfg-ens2 是本地的名字,你的机器和我教程中的机器的网卡名称可能不一样,或者你的是ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=statc# 从dhcp 改成 static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens2
UUID=454d5414-37f7-4213-b554-68b35c3a5a0e
DEVICE=enp0s3
ONBOOT=yes
#以下为新增
IPADDR=192.168.137.105
NETMASK=255.255.255.0
GATEWAY=192.168.137.1

设置rabbitmq相关的群

rabbitmq是erlang配合使用的,因此erlang也需要安装。

/etc/yum.repos.d/rabbitmq-erlang.repo

[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1

rabbitmq-server.repo

[bntray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1

 在每个机器上的/etc/hosts文件增加本地域名解析

#在原来的hosts文件下增加
192.168.137.105  rabbitmqs
192.168.137.102 rabbitmqn1
192.168.137.103 rabbitmqn2

  然后执行.  安装server之后要检查server是不是启动。

yum -y install erlang #安装erlang
yum install rabbitmq-server -y  #安装rabbitmq server 
systemctl start rabbitmq-server #启动rabbitmq server 
rabbitmq-plugins enable rabbitmq_management #加plugin做我页面管理默认端口 15672

查看端口是否启动 ,端口15672已经启动了。

[root@rabbitmqn2 rabbitmq]#  netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      5987/beam.smp       
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1065/master         
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      5987/beam.smp       
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      6207/epmd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      903/sshd            
tcp        0      0 192.168.137.103:4369    192.168.137.103:50345   TIME_WAIT   -           

访问127.0.0.1:15672 ,第一次访问需要登录,默认的账号密码为:guest/guest, 这个只能通过localhost登录,我们在虚拟机里面没有界面,因此我们需要通过server正常的ip地址访问,那么我们需要创建用户yucheng作为访问

rabbitmqctl add_user yucheng yucheng123
rabbitmqctl set_user_tags yucheng administrator
rabbitmqctl set_permissions -p / yucheng ".*" ".*" "."

 这样就可以直接通过http://192.168.137.105:15672/ 登录,用户名yucheng,密码为yucheng123

单机安装成功。

下面提供一个安装erlang和rabbitmq-server的脚本

#!/bin/bash
# add 2 repos for erlang & rabbitmq-server
cat <<EOF >/etc/yum.repos.d/Elang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
EOF

cat <<EOF >/etc/yum.repos.d/rabbitmq.repo
[bntray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
EOF

#install the erlang
yum -y install erlang
#install rabbitmq-server
yum install rabbitmq-server -y
# install the management web pages
rabbitmq-plugins enable rabbitmq_management

拷贝erlan.cookie文件

为了三个直接的通信,这个三个机器上的这个文件内容不一样的话不能通信。我们从rabbutmqs上拷贝文件

scp  /var/lib/rabbitmq/.erlang.cookie root@rabbitmqn1: /var/lib/rabbitmq/.erlang.cookie
scp  /var/lib/rabbitmq/.erlang.cookie root@rabbitmqn2: /var/lib/rabbitmq/.erlang.cookie

 

加入集群

在rabbitmqn2上加入rabbitmqs的集群cluster,注意,三台机器上的防火墙必须关闭,加入集群以后,node节点会相互通信,通信会出现如下错误

2021-01-05 23:54:26.607 [error] <0.189.0> Mnesia(rabbit@rabbitmqn2): ** ERROR ** Mnesia on rabbit@rabbitmqn2 could not connect to node(s) [rabbit@rabbitmqn1]

正式加入集群,加入集群的node节点要停止rabbitmq里面的应用,即stop_app,加入成功以后再开启。 

[root@rabbitmqn2 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmqn2 ...
[root@rabbitmqn2 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@rabbitmqs
Clustering node rabbit@rabbitmqn2 with rabbit@rabbitmqs

同理,在rabbitmqn1上做同样的操作。

(1)默认rabbitmq启动后是磁盘节点,在这个cluster命令下,rabbitmqn1和rabbitmqn2是内存节点,rabbitmqs是磁盘节点。
(2)如果要使rabbitmqn1、rabbitmqn2都是磁盘节点,去掉--ram参数即可。
(3)如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用

在rabbitmqs增加用户

加入集群以后,原来的用户会消失

rabbitmqctl add_user yucheng yucheng123
rabbitmqctl set_user_tags yucheng administrator
rabbitmqctl set_permissions -p / yucheng ".*" ".*" "."

然后登陆到集群,可以看到集群已经成功

结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老骥又出发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值