不爱学的李泽信

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

RabbitMQ单机安装

安装erlang环境

  • 安装基本依赖模块
[root@localhost ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
  • 安装erlang环境
[root@localhost ~]# ll /data/soft/
总用量 104176
-rw-r--r-- 1 root root 102972543 10月 19 11:06 otp_src_25.0.tar.gz
[root@localhost ~]# cd /data/soft/
[root@localhost soft]# tar xf otp_src_25.0.tar.gz
[root@localhost soft]# cd otp_src_25.0/
[root@localhost erlang]# ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads --enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
[root@localhost erlang]# make && make install

#验证erlang是否安装成功
[root@localhost ~]# cd /usr/local/erlang/bin
[root@localhost bin]# ./erl
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]

Eshell V13.0  (abort with ^G)
1>		#ctrl+c退出

#添加环境变量
[root@localhost ~]# vi /etc/profile
export PATH=$PATH:/usr/local/erlang/bin		#追加
[root@localhost ~]# source /etc/profile
[root@localhost ~]# erl
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]

Eshell V13.0  (abort with ^G)
1>

安装rabbitmq

#解压rabbitmq,官方给的包是xz压缩包,所以要用xz命令
[root@localhost soft]# xz -d rabbitmq-server-generic-unix-3.11.1.tar.xz
#xz解压后得到tar包,再用tar解压
[root@localhost soft]# tar xf rabbitmq-server-generic-unix-3.11.1.tar
[root@localhost soft]# mv rabbitmq_server-3.11.1/ /data/rabbitmq
[root@localhost soft]# cd /data/rabbitmq/sbin
#开启管理页面插件
[root@localhost sbin]# ./rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

set 3 plugins.

启动rabbitmq

#添加服务启动环境变量
[root@localhost ~]# vi /etc/profile
export PATH=/data/rabbitmq/sbin:$PATH
[root@localhost ~]# source /etc/profile
#启动命令,该命令ctrl+c后会关闭服务
[root@localhost ~]# rabbitmq-server
#在后台启动rabbit
[root@localhost ~]# rabbitmq-server -detached
#端口验证
[root@localhost sbin]# netstat -utpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      22855/epmd          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      861/sshd            
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      23268/beam.smp      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1024/master         
tcp        0      0 0.0.0.0:5672            0.0.0.0:*               LISTEN      23268/beam.smp      
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      23268/beam.smp 
#关闭服务
[root@localhost ~]# rabbitmqctl stop

添加管理账户

#添加用户
#rabbitmqctl add_user Username password
[root@localhost ~]# rabbitmqctl add_user rabbitadmin 123123
#分配用户标签
#rabbitmqctl set_user_tags User Tag
#[administrator]:管理员标签
[root@localhost ~]# rabbitmqctl set_user_tags rabbitadmin administrator

浏览器访问验证

http://192.168.100.103:15672

账号:rabbitadmin

密码:123123

RabbitMQ集群安装

基本环境

系统 IP 主机名 软件
centos7.4 192.168.100.103 rabbitmq1 otp_src_25.0.tar.gz rabbitmq-server-generic-unix-3.11.1.tar.xz
centos7.4 192.168.100.107 rabbitmq2 otp_src_25.0.tar.gz rabbitmq-server-generic-unix-3.11.1.tar.xz
centos7.4 192.168.100.108 rabbitmq3 otp_src_25.0.tar.gz rabbitmq-server-generic-unix-3.11.1.tar.xz

配置服务器hosts

#修改主机名,3台主义都需要改
[root@localhost ~]# hostnamectl set-hostname  rabbitmq1
[root@localhost ~]# hostnamectl set-hostname  rabbitmq2
[root@localhost ~]# hostnamectl set-hostname  rabbitmq3

#添加hosts,3台都需要添加
[root@ rabbitmq1 ~]# vim /etc/hosts
192.168.100.103  rabbitmq1
192.168.100.107  rabbitmq2
192.168.100.108  rabbitmq3

安装erlang环境

  • 安装基本依赖模块,3台都得安装
[root@ rabbitmq1 ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
  • 安装erlang环境,3台都得安装
[root@rabbitmq1 ~]# mkdir -p /data/soft
[root@rabbitmq1 ~]# cd /data/soft
[root@ rabbitmq1 ~]# tar xf otp_src_25.0.tar.gz
[root@ rabbitmq1 ~]# cd otp_src_25.0/
[root@ rabbitmq1 ~]# ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads --enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
[root@ rabbitmq1 ~]# make && make install
[root@ rabbitmq1 ~]# cd /usr/local/erlang/bin/
[root@ rabbitmq1 bin]# ./erl
[root@rabbitmq1 ~]# cd
[root@rabbitmq1 ~]# vi /etc/profile
export PATH=$PATH:/usr/local/erlang/bin
[root@ rabbitmq1 ~]# source /etc/profile
[root@ rabbitmq1 ~]# erl

安装rabbitmq

3台都得安装

#解压rabbitmq,官方给的包是xz压缩包,所以要用xz命令
[root@rabbitmq1 ~]# cd /data/soft/
[root@ rabbitmq1 soft]# xz -d rabbitmq-server-generic-unix-3.11.1.tar.xz
#xz解压后得到tar包,再用tar解压
[root@ rabbitmq1 soft]# tar xf rabbitmq-server-generic-unix-3.11.1.tar
[root@ rabbitmq1 soft]# mv rabbitmq_server-3.11.1/ /data/rabbitmq
[root@ rabbitmq1 soft]# cd /data/rabbitmq/sbin
#开启管理页面插件
[root@ rabbitmq1 sbin]# ./rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

set 3 plugins.

创建rabbitmq配置文件并修改

[root@rabbitmq1 ~]# cd /data/rabbitmq/etc/rabbitmq/
#创建rabbitmq-env.conf:该配置文件存储的内容为mq节点名称和数据日志的存放地点,需要手动创建并添加内容
[root@rabbitmq1 rabbitmq]# touch rabbitmq-env.conf
[root@rabbitmq1 rabbitmq]# vi rabbitmq-env.conf
NODENAME=rabbit@rabbitmq1			#节点名称,唯一
MNESIA_BASE=/data/rabbitmq/mnesia		#mq数据库路径,可自定义
LOG_BASE=/data/rabbitmq/log			#mq日志路径,可自定义

#上传rabbitmq.conf配置文件

启动rabbitmq

3台都得安装

#添加服务启动环境变量
[root@rabbitmq1 ~]# vi /etc/profile
export PATH=/data/rabbitmq/sbin:$PATH
[root@rabbitmq1 ~]# source /etc/profile
#启动命令,该命令ctrl+c后会关闭服务
[root@rabbitmq1 ~]# rabbitmq-server
#在后台启动rabbit
[root@rabbitmq1 ~]# rabbitmq-server -detached
#端口验证
[root@rabbitmq1 sbin]# netstat -utpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      22855/epmd          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      861/sshd            
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      23268/beam.smp      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1024/master         
tcp        0      0 0.0.0.0:5672            0.0.0.0:*               LISTEN      23268/beam.smp      
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      23268/beam.smp 
#关闭服务
[root@rabbitmq1 ~]# rabbitmqctl stop

添加管理账户

3台都得安装

#添加用户
#rabbitmqctl add_user Username password
[root@rabbitmq1 ~]# rabbitmqctl add_user rabbitadmin hanweb
#分配用户标签
#rabbitmqctl set_user_tags User Tag
#[administrator]:管理员标签
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags rabbitadmin administrator
#查看所有用户
[root@rabbitmq1 ~]# rabbitmqctl list_users

创建集群

  • 将3台mq的.erlang.cookie文件内容设置相同,该文件一般在用户目录下。若未给erlang设置用户,则该文件在/root下,或者用以下命令查找
[root@rabbitmq1 ~]# find / -name .erlang.cookie
/root/.erlang.cookie
  • 先给该文件赋权为400,该文件必须为只读才可以创建集群
[root@rabbitmq1 ~]# chmod 400 .erlang.cookie
  • 将赋权后的该文件复制到另外2台相同目录下并替换原有文件。注意,替换后需检查该文件权限是否正确,若有变化需重新赋权
[root@rabbitmq1 ~]# scp /root/.erlang.cookie root@rabbitmq2:/root/
[root@rabbitmq1 ~]# scp /root/.erlang.cookie root@rabbitmq3:/root/
  • rabbitmq2与rabbitmq3使用kill杀死每台rabbitmq进程,重新启动
[root@rabbitmq2 ~]# netstat -utpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      23426/epmd                     
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      23394/beam.smp              
tcp        0      0 0.0.0.0:5672            0.0.0.0:*               LISTEN      23394/beam.smp      
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      23394/beam.smp      
[root@rabbitmq2 ~]# kill -9 23426  23394
[root@rabbitmq2 ~]# rabbitmq-server -detached
  • 停止节点rabbit@rabbitmq2和rabbit@rabbitmq3并分别执行加入集群命令
#rabbit@rabbitmq2执行命令添加磁盘节点
[root@rabbitmq2 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq2 ...
[root@rabbitmq2 ~]# rabbitmqctl join_cluster rabbit@rabbitmq1
Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1
[root@rabbitmq2 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq2 ...

#rabbit@rabbitmq3执行命令添加内存节点
[root@rabbitmq3 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq3 ...
[root@rabbitmq3 ~]# rabbitmqctl  join_cluster --ram rabbit@rabbitmq1
Clustering node rabbit@rabbitmq3 with rabbit@rabbitmq1
[root@rabbitmq3 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq3 ...
  • 查看集群状态
[root@rabbitmq1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
Basics

Cluster name: rabbit@rabbitmq_cluster

Disk Nodes

rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3

Running Nodes

rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3

退出集群

#作

#在rabbimq1操,将rabbitmq2退出集群
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq2 stop_app
[root@rabbitmq1 ~]# rabbitmqctl forget_cluster_node rabbit@rabbitmq2
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq2 start_app

#在rabbitmq2进行重置才能正式退出集群
[root@rabbitmq2 ~]# rabbitmqctl reset
Resetting node rabbit@rabbitmq2 ...


#在rabbimq1操,将rabbitmq3退出集群
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq3 stop_app
[root@rabbitmq1 ~]# rabbitmqctl forget_cluster_node rabbit@rabbitmq3
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq3 start_app

#在rabbitmq3进行重置才能正式退出集群
[root@rabbitmq2 ~]# rabbitmqctl reset
Resetting node rabbit@rabbitmq3 ...

重新加入集群

按照2.8步骤加入即可

镜像队列

若按照以上命令创建了镜像,队列内容会复制到所有节点上,会严重影响MQ性能,实际运用中只需要镜像两份对队列内容即可,可以用以下命令:(队列内容复制到集群的任意两个节点上)

rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
 
-p Vhost:  可选参数,针对指定vhost下的queue进行设置
Name:       policy的名称
Pattern:    exchanges或queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
    ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
        all:表示在集群中所有的节点上进行镜像
        exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
        nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
    ha-params:ha-mode模式需要用到的参数
    ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual。automatic:新增加节点自动同步全量数据。manual: 新增节点只同步新增数据,全量数据需要手工同步。
Priority:可选参数,policy的优先级


#rabbitmqctl set_policy ha-all "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
posted on 2023-11-20 21:42  不爱学的李泽信  阅读(15)  评论(0编辑  收藏  举报