linux 安装并配置rabbitmq

注:将需要安装的 erlang 和 rabbimq 包放在/usr/src 目录下。erlang 的下载需要注意.centos7 下载的是 el7 版本。生产者和消费者同时打开生产和消费都很快,如果只开生产者,每 5s 才生产一条消息,还没找到办法解决

安装

安装 erlang 依赖:rpm -ivh erlang-23.3.4.7-1.el7.x86_64.rpm

查看 erlang 版本:rpm -qa | grep erlang

安装 socat 插件:yum install socat -y (需联网)

安装 rabbitmq:rpm -ivh rabbitmq-server-3.10.0-1.el7.noarch.rpm

设置 rabbitmq 开机自启动(可不设):chkconfig rabbitmq-server on

启动 rabbitmq 服务:systemctl start rabbitmq-server 或 /sbin/service rabbitmq-server start

查看 rabbitmq 服务状态:systemctl status rabbitmq-server 或 /sbin/service rabbitmq-server status

停止 rabbitmq 服务:systemctl stop rabbitmq-server 或 /sbin/service rabbitmq-server stop

安装 web 管理插件,需要先停掉 rabbitmq 服务:rabbitmq-plugins enable rabbitmq_management

rabbitmq 默认 web 端口 15672

关闭防火墙:systemctl stop firewalld

开机关闭防火墙:systemctl disable firewalld

查看防火墙状态:systemctl status firewalld

创建用户

1.创建用户账号

创建一个名为 admin 的用户,密码也是 admin

rabbitmqctl add_user admin 'admin'

2.设置 admin 账号角色为 administrator

rabbitmqctl set_user_tags admin administrator

3.添加账号权限

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

4.修改密码

rabbitmqctl change_password admin '123456'

5.查看用户列表

rabbitmqctl list_users

6.删除用户

rabbitmqctl delete_user admin

7.查看权限列表

rabbitmqctl list_permissions

8.查看策略列表

rabbitmqctl list_policies

9.查看节点状态

rabbitmqctl status

10.查看集群状态

rabbitctl cluster_status

11.修改节点类型

rabbitmqctl stop_app #关闭应用

rabbitmqctl change_cluster_node_type ram #更改为内存模式,磁盘模式改为 disk 即可

rabbitmqctl start_app #重启应用

12.将第一个节点上的 cookie 文件复制到另外 2 台克隆的节点上,确保各节点用的同一个 cookie。在 node1 上执行下面 2 条命令,把 node1 节点上的 cookie 文件复制到 node2 和 node3 上。执行的时候会提示输入密码。

scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie

scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie

13.启动 rabbitmq 服务,顺带启动 Erlang 虚拟机和 rabbitmq 应用服务

rabbitmq-server -detached

14.在节点 2 执行(节点 3:改一下节点名称)

rabbitmqctl stop_app (rabbitmqctl stop_会将 Erlang 虚拟机关闭,rabbitmqctl stop_app 只会关闭 rabbitmq 服务)

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@node1

rabbitmqctl start_app (只启动应用服务)

查看集群状态:rabbitmqctl cluster_status

web 客户端:

15.配置镜像

将集群中的队列彼此之间进行镜像,此时消息就会被拷贝到处于同一个镜像分组中的所有队列上

参数解释:

name:policy 的名称,用户自定义。

pattern:queue 的匹配模式(正则表达式)。^表示所有队列都是镜像队列,^后面可以拼接队列名称的前缀,比如^aa_。

Definition:镜像定义,包括三个部分 ha-sync-mode、ha-mode、ha-params

ha-mode: 指明镜像队列的模式,有效取值范围为 all/exactly/nodes

all:表示在集群所有的代理上进行镜像

exactly :表示在指定个数的代理上进行镜像,代理名称通过 ha-params 指定

nodes:表示在指定的代理上进行镜像,代理名称通过 ha-params 指定

ha-params: ha-mode 模式需要用到的参数

ha-sync-mode:表示镜像队列中消息的同步方式,有效取值范围为:automatic,manually。

automatic:表示自动向 master 同步数据

manually:表示手动向 master 同步数据

Priority:可选参数,policy 的优先级。

安装 haproxy

1.下载依赖包:yum install gcc vim wget

2.下载 haproxy 源码包:wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.7.3.tar.gz/sha512/f9eeee2d232fd2f4da1959e9265dd6abe6c6182109a0455d4f868a516e78cc6ea67e8456d5bc26e439385d17f52e4b179d7c615bacf15aeae901ab8e172dc758/haproxy-2.7.3.tar.gz

3.解压:tar -zxvf haproxy-2.7.3.tar.gz -C /usr/local

4.进入目录,进行编辑、安装

cd /usr/local/haproxy-2.7.3

编辑:make TARGET=linux30 PREFIX=/usr/local/haproxy

安装:make install PREFIX=/usr/local/haproxy

创建文件夹:mkdir /etc/haproxy

5.赋权

--创建组

groupadd -r g 149 haproxy

--创建用户

useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy

6.创建配置文件

vim /etc/haproxy/haproxy.cfg

java 复制代码
#全局配置
global
    #设置日志
    log 127.0.0.1 local0 info
    #当前工作目录
    chroot /usr/local/haproxy
    #用户与用户组
    user haproxy
    group haproxy
    #运行进程ID
    uid 99
    gid 99
    #守护进程启动
    daemon
    #最大连接数
    maxconn 4096

#默认配置
defaults
    #应用全局的日志配置
    log global
    #默认的模式mode {tcp|http|health}
    #TCP是4层,HTTP是7层,health只返回ok
    mode tcp
    #日志类别tcplog
    option tcplog
    #不记录健康检查日志信息
    option dontlognull
    #3次失败则认为服务不可用
    retries 3
    #每个进程可用的最大连接数
    maxconn 2000
    #连接超时
    timeout connect 5s
    #客户端超时
    timeout client 120s
    #服务端超时
    timeout server 120s
#绑定配置
listen rabbitmq_cluster
    bind 192.168.101.108:5671
    #配置TCP模式
    mode tcp
    #简单的轮询
    balance roundrobin
    #Rabbitmq集群节点配置
    server node1 192.168.101.108:5672 check inter 5000 rise 2 fall 2
    server node2 192.168.101.110:5672 check inter 5000 rise 2 fall 2
    server node3 192.168.101.111:5672 check inter 5000 rise 2 fall 2
#haproxy监控页面地址
listen monitor
    bind 192.168.101.108:8100
    mode http
    option httplog
    stats enable
    #项目名为rabbitmq_stats,ip+端口+项目名既可访问
    stats uri /rabbitmq_stats
    #自动刷新时间
    stats refresh 5s

7.配置启动文件复制 haproxy 文件到/usr/sbin 下,复制 haproxy 脚本,到/etc/init.d 下

cp /usr/local/haproxy/sbin/haproxy /usr/sbin/

cp /usr/local/haproxy-2.7.3/examples/haproxy.init /etc/init.d/haproxy

chmod 755 /etc/init.d/haproxy

8.启动

service haproxy start|stop|restart|reload|condrestart|status|check

也可以是:查看 haproxy 服务的运行状态 : systemctl status haproxy (启动方式类似)

16.退出集群

卸载 rabbitmq

1.查询服务状态:systemctl status rabbitmq-server

2.停止服务:systemctl stop rabbitmq-server

3.删除 rabbitmq:yum remove rabbitmq-server

4.删除 rabbitmq 数据和配置文件:rm -rf /var/lib/rabbitmq/

rm -rf /etc/rabbitmq/

5.删除 rabbitmq 依赖项 erlang 和 Socat: sudo yum remove erlang 和 sudo yum remove socat

卸载 haproxy

1.查看 haproxy 状态:systemctl status haproxy

2.停止 haproxy:systemctl stop haproxy

3.卸载 haproxy:yum remove haproxy 等待系统 yum 自动卸载完成。

4.查看相关文件是否已经卸载干净:find / -name "haproxy"

5.如果还有残余可以使用命令:rm -rf "第二步查询到的文件"

注:报错处理

执行命令:rabbitmq-server -detached

报错:error :node with name "rabbit" already running on "node2"

终端输入命令:sudo rabbitmqctl status

然后输入:sudo rabbitmqctl stop

在输入:rabbitmq-server 或者 systemctl start rabbitmq-server (后者亲测)就可以启动了

报错信息
java 复制代码
=WARNING REPORT==== 7-Sep-2018::13:48:17 ===
Error while waiting for Mnesia tables: {timeout_waiting_for_tables,
                                        [rabbit_user,rabbit_user_permission,
                                         rabbit_vhost,rabbit_durable_route,
                                         rabbit_durable_exchange,
                                         rabbit_runtime_parameters,
                                         rabbit_durable_queue]}

解释如下:

java 复制代码
Alternatively, perhaps your mnesia dir (/var/lib/rabbitmq/mnesia/rabbit)
got into a a weird state. Try clearing it.

即分布式数据库 mnesia 异常。

解决:

(1) 将/var/lib/rabbitmq/mnesia/下的数据库文件清空即可

(2) 重启节点

报错:通过网上了解,说这是之前加入集群失败造成的(虽然之前从没有加入过集群),可以忽略这些报错。待定

相关推荐
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
keep__go8 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求8 小时前
Linux中给普通账户一次性提权
linux·运维·服务器
Fanstay9858 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
大熊程序猿8 小时前
ubuntu 安装kafka-eagle
linux·ubuntu·kafka
简 洁 冬冬8 小时前
037 RabbitMQ集群
rabbitmq·集群
daizikui10 小时前
Linux文件目录命令
linux·运维·服务器
NikitaC10 小时前
ldconfig 和 LD_LIBRARY_PATH 区别
linux·c++