CentOS搭建RabbitMQ集群

1、环境:三台CentOS Linux release 7.3.1611 机器

192.168.1.105、192.168.1.106、192.168.1.107

查看centos版本命令:cat /etc/redhat-release

2、三台机器修改主机名

修改/etc/hostname 编辑文件内容为 rabbitmq1、rabbitmq2、rabbitmq3

修改/etc/hosts 编辑文件内容添加

192.168.1.105 rabbitmq1

192.168.1.106 rabbitmq2

192.168.1.107 rabbitmq3

修改完后需要重启,查看有没有修改成功使用hostname来查看是无效的,要看命令提示符@符号后面的主机名是否更改了,比如像我的改好后应该显示成[root@rabbitmq1/var/lib/rabbitmq]# 而不是 [root@localhost /var/lib/rabbitmq]#

3、关闭三台机器的防火墙

 systemctl stop firewalld.service

4、新建erlang文件

新建/etc/yum.repos.d/rabbitmq-erlang.repo文件,输入一下内容

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

[rabbitmq-erlang]

name=rabbitmq-erlang

baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7

gpgcheck=1

gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc

repo_gpgcheck=0

enabled=1

执行yum install erlang安装erlang

5、安装Rabbitmq Server

在http://www.rabbitmq.com/install-rpm.html#install-erlang 最上方点击下载rabbitmq-server-3.7.14-1.el7.noarch.rpm包

6、下载完rpm包后执行安装

rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc

yum install rabbitmq-server-3.7.14-1.el7.noarch.rpm

7、启动rabbitmq、查看状态

启动rabbitmq

rabbitmq-server -detached

查看rabbitmq状态

rabbitmqctl status

查看日志文件,找到home dir,.erlang.cookie文件在home dir目录下,将该目录下的.erlang.cookie文件拷贝到另外两台机器上。

注:rpm安装的cookie在/var/lib/rabbitmq/.erlang.cookie

需要在/var/lib/rabbitmq路径设置

chown rabbitmq:rabbitmq .erlang.cookie

chmod 400 .erlang.cookie

8、搭建集群

这里将是rabbitmq1作为主节点,另外两个节点加入到rabbitmq1中,在另外两台上执行

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@rabbitmq1

集群搭建完毕后,查看集群状态

[root@rabbitmq1 /var/lib/rabbitmq]#rabbitmqctl cluster_status

Cluster status of node rabbit@rabbitmq1 ...

[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},

{running_nodes,[rabbit@rabbitmq3,rabbit@rabbitmq2,rabbit@rabbitmq1]},

{cluster_name,<<"rabbit@rabbitmq1">>},

{partitions,[]},

{alarms,[{rabbit@rabbitmq3,[]},{rabbit@rabbitmq2,[]},{rabbit@rabbitmq1,[]}]}]

9、启动web管理插件,三台机器都要启动

rabbitmq-plugins enable rabbitmq_management

访问 http://192.168.1.105:15672/

rabbitmq有个默认用户guest,密码也为guest,但是这个用户不允许远程登录,登录时会报如下错误

可以使用命令行新增一个用户,用新用户登录

rabbitmqctl add_user admin 123456

rabbitmqctl set_permissions -p / admin".*" ".*" ".*"

rabbitmqctl set_user_tags admin administrator

10、访问、查看集群状态

正常情况访问三个的任何一个都可以访问的


附录1:

CentOS怎样安装Python3.6

yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
安装可能用到的依赖

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
下载Python3.6.8源码

tar -xzvf Python-3.6.8.tgz
解压到当前目录

cd Python-3.6.8
进入解压后的目录

./configure --prefix=/usr/local/python
安装到/usr/local/python目录,不用事先创建python目录

make
编译

make install
安装

cd /usr/bin
进入/usr/bin目录

mv python python.bak
mv pip pip.bak
重命名python2的快捷方式

ln -s /usr/local/python/bin/python3.6 /usr/bin/python
ln -s /usr/local/python/bin/pip3.6 /usr/bin/pip
创建python3pip3软连接

ll yum*
查看/usr/bin目录下有哪些yum文件
把这些文件的第一行#!/usr/bin/python改为#!/usr/bin/python2
因为yum是依赖python的,所以我们修改了默认的python,就要修改yum,让其运行指向python2

修改urlgrabber配置文件
vim /usr/libexec/urlgrabber-ext-down
把第一行#!/usr/bin/python 改为 #!/usr/bin/python2

附录2

错误信息:

Error: unable to connect to nodes [rabbit@rabbitmq1]: nodedown

attempted to contact: [rabbit@rabbitmq1]

rabbit@rabbitmq1:

  * connected to epmd (port 4369) on rabbitmq1

  * epmd reports node 'rabbit' running on port 25672

  * TCP connection succeeded but Erlang distribution failed

  * suggestion: hostname mismatch?

  * suggestion: is the cookie set correctly?

  * suggestion: is the Erlang distribution using TLS?

 

原因可能是erlang没有安装好,重新安装

**********************  APPLICATIONS INFORMATION  ******************* 
********************************************************************* 
wx             : wxWidgets not found, wx will NOT be usable 
********************************************************************* 
********************************************************************* 
**********************  DOCUMENTATION INFORMATION  ****************** 
********************************************************************* 
documentation  : 
                 fop is missing. 
                 Using fakefop to generate placeholder PDF files. 

猜你喜欢

转载自blog.csdn.net/qq_35275233/article/details/89296448