注:将需要安装的 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
#全局配置 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 (后者亲测)就可以启动了
报错信息
=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]}
解释如下:
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) 重启节点
报错:通过网上了解,说这是之前加入集群失败造成的(虽然之前从没有加入过集群),可以忽略这些报错。待定
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章