RabbitMQ-单机部署和基本操作

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ(本章节)

我们中间件里面的软件讲解,都是第一个小节介绍软件的基本情况和相关概念,第二个小节就是软件的部署。

前面的ZooKeeper和Kafka都是以JAVA语言基础软件,所以要先安装JAVA的环境(JDK),而我们的RabbitMQ则是基于Erlang开发的,所以我们需要先安装Erlang环境。Erlang语言在我们日常运维中能接触到的常用的应用软件就是RabbitMQ,到目前为止笔者也只认识一个曾经使用Erlang开过程序的人。

由于RabbitMQ集群部署和其他的集群部署略有区别,并且有一定的MQ知识储备,所以这里只介绍单机部署。

1.安装Erlang环境

生产环境一般都会使用二级制部署,我这里为了方便采用的是rpm安装。这个Erlang和JAVA环境部署类似,都是把二进制文件及相关依赖安装到服务器里面。

wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.2/erlang-23.3.2-1.el7.x86_64.rpm
rpm -ivh erlang-23.3.2-1.el7.x86_64.rpm

2.部署单机版RabbitMQ

为了更好的认识,我们的核心组件,还是采用二进制部署。

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.35/rabbitmq-server-generic-unix-3.8.35.tar.xz
rabbitmq-server-generic-unix-3.8.35.tar.xz 
cd rabbitmq_server-3.8.35

3.启动RabbitMQ

MQ启动以后会默认启动MQ进程和Erlang进程,所以MQ启动以后会有多个进程。​​​​​​​

#后台启动,熟悉以后可用 
./sbin/rabbitmq-server -detached

前台启动​​​​​​​

#前台自动 可以更好的方便查看MQ
[root@localhost rabbitmq_server-3.8.35]# ./sbin/rabbitmq-server 
Configuring logger redirection

  ##  ##      RabbitMQ 3.8.35
  ##  ##
  ##########  Copyright (c) 2007-2022 VMware, Inc. or its affiliates.
  ######  ##
  ##########  Licensed under the MPL 2.0. Website: https://rabbitmq.com

  Erlang:      23.3.2 [emu]
  TLS Library: OpenSSL - OpenSSL 1.0.2k-fips  26 Jan 2017

  Doc guides:  https://rabbitmq.com/documentation.html
  Support:     https://rabbitmq.com/contact.html
  Tutorials:   https://rabbitmq.com/getstarted.html
  Monitoring:  https://rabbitmq.com/monitoring.html

  Logs: /root/rabbitmq_server-3.8.35/var/log/rabbitmq/rabbit@localhost.log
        /root/rabbitmq_server-3.8.35/var/log/rabbitmq/rabbit@localhost_upgrade.log

  Config file(s): (none)

  Starting broker... completed with 0 plugins.

查看进程​​​​​​​

#mq进程 
root      1113  1091  0 00:28 pts/0    00:00:00 /bin/sh ./sbin/rabbitmq-server
root      1118  1113 18 00:28 pts/0    00:00:03 /usr/lib64/erlang/erts-11.2.1/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/lib64/erlang -progname erl -- -home /root -- -pa  -noshell -noinput -s rabbit boot -boot start_
root      1125  1118  0 00:28 ?        00:00:00 erl_child_setup 1024
root      1148     1  0 00:28 ?        00:00:00 /usr/lib64/erlang/erts-11.2.1/bin/epmd -daemon

4.检查运行状态​​​​​​​

[root@localhost rabbitmq_server-3.8.35]# ./sbin/rabbitmqctl status
Status of node rabbit@localhost ...
Runtime

OS PID: 1124
OS: Linux
Uptime (seconds): 30
Is under maintenance?: false
RabbitMQ version: 3.8.35
Node name: rabbit@localhost
Erlang configuration: Erlang/OTP 23 [erts-11.2.1] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Crypto library: OpenSSL 1.0.2k-fips  26 Jan 2017
Erlang processes: 278 used, 1048576 limit
Scheduler run queue: 1
Cluster heartbeat timeout (net_ticktime): 60

#中间省略部分信息 

Listeners

Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

业务端口:5672,发送接收消息。

集群同步端口: 5627,因为我们这个是单机,所以忽略。

这个有一个点需要注意,Rabbitmq的数据或者目录模式和主机名强相关,如果是单机版也建议修改主机名,如果是集群多节点部署则必须考虑这个问题。如果修改了主机名,则就算数据还在,它也不会读取。​​​​​​​

#未修改主机的数据目录 
[root@localhost mnesia]# pwd
/root/rabbitmq_server-3.8.35/var/lib/rabbitmq/mnesia
[root@localhost mnesia]# ll
total 12
drwxr-xr-x 4 root root 4096 May 29 22:26 rabbit@localhost
-rw-r--r-- 1 root root  102 May 29 22:26 rabbit@localhost-feature_flags
-rw-r--r-- 1 root root    4 May 29 22:26 rabbit@localhost.pid
drwxr-xr-x 2 root root    6 May 29 22:26 rabbit@localhost-plugins-expand

下面是修改主机名以后,重新启动RabbitMQ的数据目录,可以对比下有什么区别。​​​​​​​

#历史数据目录和修改主机名数据目录 
drwxr-xr-x 4 root root 4096 May 29 22:29 rabbit@localhost
-rw-r--r-- 1 root root  102 May 29 22:26 rabbit@localhost-feature_flags
drwxr-xr-x 2 root root    6 May 29 22:26 rabbit@localhost-plugins-expand
drwxr-xr-x 4 root root 4096 May 29 22:35 rabbit@rabbitmq01
-rw-r--r-- 1 root root  102 May 29 22:35 rabbit@rabbitmq01-feature_flags
-rw-r--r-- 1 root root    4 May 29 22:35 rabbit@rabbitmq01.pid
drwxr-xr-x 2 root root    6 May 29 22:35 rabbit@rabbitmq01-plugins-expand

我们今天的主角RabbitMQ启动同前面的ZooKeeperKafka略有不一样,它没有默认的配置文件,后面我们讲集群部署的时候再来讲这个配置。 

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

### RabbitMQ 单机部署教程 #### 准备工作 确保操作系统已更新至最新状态,并安装必要的依赖项。对于基于 Debian 的系统,可以使用如下命令来准备环境: ```bash sudo apt update && sudo apt upgrade -y ``` #### 安装 Erlang RabbitMQ Erlang 是运行 RabbitMQ 所必需的语言环境。通常情况下,在安装 RabbitMQ 时会自动处理此依赖关系。 通过包管理器安装 RabbitMQ: ```bash sudo apt install -y rabbitmq-server[^3] ``` 完成上述操作后,验证 RabbitMQ 是否成功安装以及其版本号: ```bash rabbitmqctl status ``` 如果一切正常,则表示 RabbitMQ 已经被正确安装到本地环境中。 #### 配置文件调整 为了使配置更灵活,建议创建自定义的 `rabbitmq.config` 文件用于指定特定参数设置。这可以通过复制默认样例配置实现: ```bash cp /usr/share/doc/rabbitmq-server-3.3.5/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config[^2] ``` 编辑 `/etc/rabbitmq/rabbitmq.config` 来满足具体需求,比如修改监听地址、端口号等选项。 #### 启动与停止服务 当所有准备工作完成后,就可以尝试启动 RabbitMQ 服务了。首次启动前可能需要先启用一些插件功能,例如 Web 管理界面: ```bash sudo rabbitmq-plugins enable rabbitmq_management ``` 之后便能以守护进程模式后台运行 RabbitMQ: ```bash sudo systemctl start rabbitmq-server.service ``` 要优雅地关闭正在运行的服务实例可执行下面这条指令: ```bash sudo rabbitmqctl stop[^1] ``` #### 使用 Docker 进行快速部署 另一种简便的方法是利用容器化技术——Docker 来部署 RabbitMQ 实例。这种方式特别适合于开发测试场景下临时性的单机多实例部署。以下是构建一个带有预设用户名/密码 (`itcast`/`123321`) 及暴露相应端口映射的基础镜像命令: ```dockerfile docker run -d \ -v ${PWD}/mq2/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \ -v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \ -e RABBITMQ_DEFAULT_USER=itcast \ -e RABBITMQ_DEFAULT_PASS=123321 \ --name mq2 \ --hostname mq2 \ -p 8072:5672 \ -p 8082:15672 \ rabbitmq:3.8-management[^4] ``` 这样就完成了基本的单机RabbitMQ部署过程。当然实际生产环境下还需要考虑更多因素如性能调优、安全加固等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值