作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
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启动同前面的ZooKeeper和Kafka略有不一样,它没有默认的配置文件,后面我们讲集群部署的时候再来讲这个配置。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。