RabitMQ安装
单机安装
安装依赖
官网:
www.rabbitmq.com/install-rpm…
www.rabbitmq.com/which-erlan…
github.com/rabbitmq/er…
sudo rpm -Uvh erlang-23.3.3-1.el7.x86_64.rpm
yum install socat -y
sudo rpm -Uvh rabbitmq-server-3.8.15-1.el7.noarch.rpm
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
systemctl status rabbitmq-server
systemctl stop rabbimq-server
复制代码
安装插件
这里主要说三个插件,一个是页面管理插件managerment plugin, 另一个是监控插件rabbitmq_prometheus, 最后一个插件是延迟消息插件rabbitmq_delayed_message_exchange. 延迟消息插件需要下载, 官网地址是www.rabbitmq.com/community-p…, 下载后放到/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.15/plugins下。
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_prometheus
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
## 查看
cat /etc/rabbitmq/enabled_plugins
rabbitmq-plugins list
复制代码
防火墙
RabbitMQ需要开放一些端口,一般有4369,5672,25672,15672,官网地址是www.rabbitmq.com/networking.…,
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=5672/tcp
复制代码
设置用户及权限
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
复制代码
none
不能访问managerment plugin
management
用户可以通过AMQP做的任何事外加
- 列出自己可以通过AMQP登入的virtual hosts
- 查看自己的virtual hosts中的queues, exchanges和bindings
- 查看和关闭自己的channels和connections
- 查看有关自己的virtual hosts的全局统计信息,包含其他用户在这些virtual hosts中的活动
policymaker
- management做的任何事
- 查看, 创建和删除自己的virtual hosts所属的policies和parameters
monitoring
- management做的任何事
- 列出所有virtual hosts, 包括他们不能登录的virtual hosts
- 查看其他用户的connections和channels
- 查看节点级别数据, 如clustering和memory使用情况
- 查看真正关于virtual hosts全局统计信息
administrator
- policymaker做的任何事
- monitor做的任何事
- 查看创建和删除virtual hosts
- 查看创建和删除users
- 查看创建和删除 permissions
- 查看创建和删除connections
配置文件
默认情况下启动RabbitMQ时没有配置文件,如果要配置的话, 可以添加/etc/rabbitmq/rabbitmq.conf文件, 具体参数和信息参考
github.com/rabbitmq/ra…,
www.rabbitmq.com/configure.h…
集群部署
多机多节点集群部署
安装依赖
准备三台安装好RabbitMQ的机器, 参考单机安装
修改配置文件
vim /etc/hosts
10.10.1.12 node1
10.10.1.13 node2
10.10.1.14 node3
## 将文件发送到node2 node3
scp /etc/hosts root@node2:/etc/
scp /var/lib/rabitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/
## 设置hostname
hostname node1
复制代码
开放对应的端口,启动RabbitMQ
systemctl start rabbitmq-server 或者 rabbitmq-server -detached
复制代码
加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1 --ram
rabbitmqctl start_app
复制代码
查看集群状态
rabbitmqctl cluster_status
复制代码
常用命令集合
rabbitmq-server
rabbitmq-server -detached
rabtitmq-server stop
rabbitmqctl list_queues
rabbitmqctl list_vhosts
rabbitmqctl start_app
rabbitmqctl stop_app
rabbitmqctl status
rabbitmq-plugins list
rabbitmqctl add_user username password
rabbitmqctl list_users
rabbitmqctl delete user
rabbitmqctl clear_user_permissions username
rabbitmqctl clear_permissions -p vhostpath username
rabbitmqctl list_user_permissions username
rabbitmqctl change_password username password
rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*"
rabbitmqctl add_vhost
rabbitmqctl list_hosts
rabbitmqctl list_permissions -p vhostpath
rabbitmqctl delete_vhost vhostpath
rabbitmqctl reset
复制代码
单机多节点部署
已经安装RabbitMQ 的机器,参考单机安装
添加端口, 重启防火墙
启动RabbitMq
在/etc/rabbitmq/rabbimq-env.conf增加以下内容
RABBITMQ_NODE_PORT=5672
RABBITMQ_NODENAME=rabbit1
复制代码
rabbimq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener[{port, 15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener[{port, 15674}]" RABBITMQ_NODENAME=rabbit4 rabbitmq-server -detached
复制代码
rabbitmqctl -n rabbit2 stop_app
rabbitmqctl -n rabbit2 reset
rabbitmqctl -n rabbit2 join_cluster rabbit1 --ram
rabbitmqctl -n rabbit2 start_app
rabbitmqctl cluster_status
rabbitmqctl -n rabbit3 stop_app
rabbitmqctl -n rabbit forget_cluster_node rabbit3
rabbitmqctl set_cluster_name abc
复制代码
普通模式, 只是同步了元数据,并没有同步队列内容, 存在节点故障问题
元数据包含:
- 队列元数据(队列的名称和属性)
- 交换器(交换器的名称和属性)
- 绑定关系元数据(交换器与队列或者交换器和交换器)
- vhost元数据:为队列,交换器,和绑定提供命名空间及安全属性之间的绑定关系
镜像队列
官网: www.rabbitmq.com/ha.html#mir…
管理界面->Admin->Policies-> Add/update a policy
拷贝了队列内容, 数据冗余
name: ha-all
Pattern: ^
Apply to:Queues
Priority: 0
Definition: ha-mode=all
复制代码
或者在三台机器上执行命令
./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
ha-mode | ha-params |
---|---|
exactly | count |
all | none |
nodes | node names |
HAProxy
yum install gcc -y
tar -zxf haproxy-2.1.0.tar.gz
cd haproxy-2.1.0
make TARGET=linux-glibc
make install
mkdir /etc/haproxy
groupadd -r -g 149 haproxy
useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
touch /etc/haproxy/haproxy.cfg
yum -y install haproxy
复制代码
global
log 127.0.0.1 local0 info
#服务器最大并发连接数
maxconn 5120
# chroot /tmp
#指定用户
uid 149
#指定组
gid 149
daemon
quiet
## 指定启动的haproxy进程个数, 只能用于守护进程模式的haproxy, 默认启动一个
nbprox 1
pidfile /var/run/haproxy.pid
defaults
log global
# tcp 实例运行在tcp模式, 第4层代理
mode tcp
option tcplog
option dontlognull
retries 3
option redispath
maxconn 2000
timeout connect 5s
timeout client 60000
timeout server 15000
listen rabbitmq_cluster
bind 192.168.100.101:5672
mode tcp
balance roundrobin
server rabbitmqNode1 192.168.100:102:5672 inner 5000 rise 2 fail 2
server rabbitmqNode2 192.168.100:102:5673 inner 5000 rise 2 fail 2
# 监控
listen stats
bind 192.168.100.101:9000
mode http
option httplog
stats enable
stats uri /rabbitmq-stats
stats refresh 5s
复制代码
haproxy -f /etc/haproxy/haproxy.cfg
复制代码
近期评论