Linux运维指南Nacos、Rabbit MQ、Redis

Linux运维指南含Nacos、Rabbit MQ、Redis

一、Rabbit MQ安装指南

1.1安裝Erlang语言

因为Rabbit MQ是基于Erlang语言开发的,运行环境必须依赖于Erlang,无论是Windows机器还是Linux机器,安装Rabbit MQ之前第一步要安装Erlang.


1.1.1安装Erlang所需依赖

进入Linux服务器,创建/u01目录:mkdir /u01

进入u01目录:cd /u01


Linux运维指南Nacos、Rabbit MQ、Redis


yum安装依赖:

yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmltoperl wget gtk2-devel binutils-devel

如图

Linux运维指南Nacos、Rabbit MQ、Redis


如下表示安装成功:

Linux运维指南Nacos、Rabbit MQ、Redis

1.1.2下载Erlang

下载方式一:Linux敲命令:

wget http://erlang.org/download/otp_src_22.0.tar.gz

下载方式二:通过Widows机器浏览器访问
http://erlang.org/download/otp_src_22.0.tar.gz下载到本地,再上传到Linux及其对应目录下,如/u01目录下。


在/u01目录下:

解压软件otp_src_22.0.tar.gz:

tar -zxvf otp_src_22.0.tar.gz


Linux运维指南Nacos、Rabbit MQ、Redis


解压完成:

Linux运维指南Nacos、Rabbit MQ、Redis

1.1.3安装Erlang

(1) 移位置

mv otp_src_22.0 /usr/local/


Linux运维指南Nacos、Rabbit MQ、Redis


(2) 切换目录

cd /usr/local/otp_src_22.0/


Linux运维指南Nacos、Rabbit MQ、Redis


(3) 创建即将安装的目录

mkdir ../erlang


Linux运维指南Nacos、Rabbit MQ、Redis


(4) 配置安装路径

./configure --prefix=/usr/local/erlang


Linux运维指南Nacos、Rabbit MQ、Redis


(5) 安装

make install


Linux运维指南Nacos、Rabbit MQ、Redis


耗时比较久

如下


Linux运维指南Nacos、Rabbit MQ、Redis


安装成功


查看一下是否安装成功

ll /usr/local/erlang/bin


Linux运维指南Nacos、Rabbit MQ、Redis


正常

(6)环境变量

添加环境变量:

echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile


Linux运维指南Nacos、Rabbit MQ、Redis


刷新环境变量

source /etc/profile


Linux运维指南Nacos、Rabbit MQ、Redis


(7)测试:erl


Linux运维指南Nacos、Rabbit MQ、Redis


如图已成功安装Erlang

在里面输入halt().命令退出来(那个点号别忘记)


Linux运维指南Nacos、Rabbit MQ、Redis


1.2安装RabbitMQ

1.2.1下载Rabbit MQ

进入/u01目录:cd /u01

下载命令:


wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.15.tar.xz

也可以在电脑浏览器直接下载
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.15.tar.xz


上传到/u01目录下:


Linux运维指南Nacos、Rabbit MQ、Redis


由于是tar.xz格式的所以需要用到xz,没有的话就先安装:

yum install -y xz


Linux运维指南Nacos、Rabbit MQ、Redis


(1)第一次解压


/bin/xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz

Linux运维指南Nacos、Rabbit MQ、Redis

(2)第二次解压


tar -xvf rabbitmq-server-generic-unix-3.7.15.tar


Linux运维指南Nacos、Rabbit MQ、Redis


完成:

Linux运维指南Nacos、Rabbit MQ、Redis

1.2.2移走MQ


mv rabbitmq_server-3.7.15/ /usr/local/


Linux运维指南Nacos、Rabbit MQ、Redis


改名:mv
/usr/local/rabbitmq_server-3.7.15 rabbitmq

Linux运维指南Nacos、Rabbit MQ、Redis

1.2.3配置环境变量

echo 'export PATH=$PATH:/u01/rabbitmq/sbin' >> /etc/profile


Linux运维指南Nacos、Rabbit MQ、Redis


刷新环境变量

source /etc/profile

创建配置目录[本文并未使用单独配置文件,可能多余]

mkdir /etc/rabbitmq

1.2.4启动MQ

启动:

rabbitmq-server -detached


Linux运维指南Nacos、Rabbit MQ、Redis


查看是否启动成功:ps -ef|grep rabbitmq


Linux运维指南Nacos、Rabbit MQ、Redis


表示启动成功

停止RMQ命令:rabbitmqctl stop

查看RMQ状态:rabbitmqctl status

Linux运维指南Nacos、Rabbit MQ、Redis

1.3开启RabbitMQ Web端管理

1.3.1开启Web插件

命令:rabbitmq-plugins enable rabbitmq_management


Linux运维指南Nacos、Rabbit MQ、Redis


防火墙请关掉,使用云服务器的请放开5672、15672这2个端口

关闭防火墙步骤:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

防火墙关闭或端口放开后,浏览器访问:http://ip:15672


Linux运维指南Nacos、Rabbit MQ、Redis


安装成功,默认账号:guest /guest

1.3.2用户管理

(1)查看所有用户

rabbitmqctl list_users


Linux运维指南Nacos、Rabbit MQ、Redis


(2) 添加一个用户

rabbitmqctl add_user opendi opendi


Linux运维指南Nacos、Rabbit MQ、Redis


(3) 配置权限

rabbitmqctl set_permissions -p "/" opendi ".*" ".*" ".*"


Linux运维指南Nacos、Rabbit MQ、Redis


(4) 查看用户权限

rabbitmqctl list_user_permissions opendi


Linux运维指南Nacos、Rabbit MQ、Redis


(5) 设置tag

rabbitmqctl set_user_tags opendi administrator


Linux运维指南Nacos、Rabbit MQ、Redis


(6) 删除用户(安全起见,删除默认用户)

rabbitmqctl delete_user guest

(7) 重启Rabbit MQ

先:rabbitmqctl stop

Linux运维指南Nacos、Rabbit MQ、Redis

再:rabbitmq-server -detached


Linux运维指南Nacos、Rabbit MQ、Redis


就可以使用opendi/opendi登录网页端了

Linux运维指南Nacos、Rabbit MQ、Redis

Linux运维指南Nacos、Rabbit MQ、Redis


二、Spring Boot整合Rabbit MQ消息中转推送中心

2.1MQ消息中心适用场景

Rabbit MQ的适用范围有:(1)消息中转推送中心(2)消息总线(3)分布式事务,最终数据一致性(4)实时数据同步

消息中心示例架构图:

Linux运维指南Nacos、Rabbit MQ、Redis


不同业务系统,不同的系统代码,例如:校园安防系统,有人脸识别考勤打卡一体机、电子班牌、宿舍管理等系统服务。各系统人脸识别或者考勤提醒微信、短信、语音、邮件消息推

送,就可以采用消息中心架构。

不同的业务代码,不需要知道调用的接口url,只需要向队列里面写数据。消息中心的消费者监听队列,同步发送数据,就可以完成微信、短信、语音、邮件的发送。

2.1.1消息中心做的事情

消息中心,根据信息类别分为4类:

(1)短信消息

(2)微信模板消息

(3)语音消息

(4)邮件消息

•消息中心,对各类消息的模板进行入库存储,设置模板格式。

•消息中心对外暴露统一Queue队列入口。

•按大类信息类别区分为不同类型的消息处理。

•然后各自类型里面的消息再按照不同的业务类型,使用不同的模板消息匹配,组成发送的消息数据。

•然后调用各信息类别的统一接口,发送短信、微信、语音、邮件消息。

•消息中心建立日志表,存储发送的消息,并对完成功发送的消息建立重试补偿机制。

•消息中心界面可视化配置,查看消息日志等。

2.2Rabbit MQ基础知识

2.2.1队列、生产者、消费者

队列是RabbitMQ的内部对象,用于存储消息。生产者(下图中的P)生产消息并投递到队列中,消费者(下图中的C)可以从队列中获取消息并消费。

Linux运维指南Nacos、Rabbit MQ、Redis

多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。

Linux运维指南Nacos、Rabbit MQ、Redis

2.2.2发布订阅模式

Publish/Subscribe,订阅发布模式,每个通道都会收到消息

Linux运维指南Nacos、Rabbit MQ、Redis

2.2.3Exchange、Binding交换机与绑定

上图是生产者将消息发送给所有消费者。实际场景是,生产者将消息发送到Exchange(交换机,下图中的X),再通过Binding将Exchange与Queue关联起来。  


(1)Direct exchange,一个交换机和多个Queue绑定,会根据绑定的不同路由键,发送到不同的Queue中

Linux运维指南Nacos、Rabbit MQ、Redis

Exchange、Binding交换机与绑定

Topic exchange,按模式匹配路由键。模式符号 "#" 表示一个或多个单词,"*" 仅匹配一个单词。

Linux运维指南Nacos、Rabbit MQ、Redis

2.3Rabbit MQ几种工作模式

2.3.1RMQ交换机Exchange绑定方式

Fanout:广播模式,把所有发送到该Exchange的消息投递到所有与它绑定的队列中。


特点:与Exchange绑定的所有队列都能收到消息

direct:直连模式,把消息投递到那些binding key与routing key完全匹配的队列中。


特点:队列与交换机绑定的路由键必须与约定的路由键完全匹配,该队列才能接收到消息

topic:匹配模式,将消息路由到binding key与routing key模式匹配的队列中。


特点:绑定的路由键规则可以为模糊匹配形式,*.abc.*。模糊匹配符合该格式的路由键,

例如123.abc.eff,aet.abc.278,fdg1.abc.e66都可以接收该*.abc.*路由消息。

注意:模糊匹配*.abc.*并非广播,如果被其中的某一个符合规则的队列消费了,其他环境

和队列就不会受到消息

2.3.2RMQ工作模式的选择

•当遇到要求所有客户端都需要接收到消息的场景时,可以考虑用fanout广播模式,广播给所有消费者

•当遇到要求符合特定条件的客户端队列接收消息时,使用Topic模式,按条件匹配。渐进递增式开发可以考虑用Topic模式

2.3.3RMQ消费确认模式

RMQ消息具有手工确认模式和自动确认模式,一般采用自动确认模式。RabbitMQ可以在消息从MQ服务器发送

出(写入TCP Socket)后立刻就将其当做已成功处理,或者当收到来自消费者显示的(手工的)的确认后。

(1)手动确认模式

basic.ack(deliveryTag,multiple) 用来确认成功消息(positive acknowledgements)

basic.nack(deliveryTag,requeue,multiple) 用来确认失败的消息(negative acknowledgements)

basic.reject(deliveryTa,requeue) 用来确认失败的消息

确认成功简单的令rabbitMQ将消息记录为已发送并丢弃。使用basic.reject

方法令RabbitMQ记录消息为发送失败,但仍然需要丢弃。

(2)自动确认模式

在自动确认模式(automatic acknowledgement)中,消息在发出去后就被认为是已成功处理。

2.4示例程序

2.4.1Spring Boot项目引入坐标

引入以下坐标加入MQ:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-amqp</artifactId>

<version>1.5.2.RELEASE</version>

</dependency>

2.4.2生产者

Linux运维指南Nacos、Rabbit MQ、Redis

公共发送代码:

Linux运维指南Nacos、Rabbit MQ、Redis

直连交换机

Linux运维指南Nacos、Rabbit MQ、Redis

Topic交换机

Linux运维指南Nacos、Rabbit MQ、Redis

广播Fanout交换机

Linux运维指南Nacos、Rabbit MQ、Redis

Linux运维指南Nacos、Rabbit MQ、Redis


2.4.3消费者

消费者绑定队列

Linux运维指南Nacos、Rabbit MQ、Redis


监听队列

Linux运维指南Nacos、Rabbit MQ、Redis


2.4.4测试

Fanout广播

Linux运维指南Nacos、Rabbit MQ、Redis


消费者所有队列都收到消息

Topic路由模糊匹配

Linux运维指南Nacos、Rabbit MQ、Redis

Direct直连

Linux运维指南Nacos、Rabbit MQ、Redis


三、 linux根目录满了,怎样快速查看是哪个文件占用空间大

3.1查看Linux磁盘挂载占用情况

df -h

3.2查看具体目录文件占用大小

查看根目录下占用:cd /

du -sh *

查看某个目录比如/u01下目录占用

cd /u01

du -sh *

四、Nacos安装及启动

下载
Nacos:https://pan.baidu.com/s/1Sjnnhu5NgB2TnXvhPG6sYA

(提取码:ywxp)

将nacos-1.1.4.tar.gz上传到Linux系统/u01目录下,解压:cd /u01

tar -zxvf nacos-1.1.4.tar.gz

然后进入Nacos:/u01/nacos/bin,

首先安装dos2unix命令:yum install dos2unix

格式化dos2unix要转译startup.sh\shutdown.sh: dos2unix startup.sh

dos2unix shutdown.sh

启动命令:nohup sh startup.sh -m standalone

访问地址:http://ip:8848/nacos

Nacos访问账号:nacos/nacos

查看是否启动成功:ps -ef|grep nacos

五、Nacos环境隔离

5.1Namespace

Nacos引入了命名空间(Namespace)的概念来进行多环境配置和服务的管理及隔离。

Namespace也是官方推荐的多环境支持方案。

5.2如何进行配置和服务的管理、隔离

当我们的服务达到一定的数量,集中式的管理许多服务会十分不便,

那我们可以将这些具有相同特征或属性的服务进行分组管理,服务对应的配置也进行分组隔离。

这里的分组就是Namespace的概念,将服务和配置纳入相同的Namespace进行管理,

不同Namespace下的服务和配置之间就隔离开来。

5.3创建和获取NamespaceID

NamespaceId值是在配置文件配置时必须要填入的配置项,所以需要我们先创建Namespace和Id,步骤如下:

(1)nacos 的控制台左边功能栏看到有一个命名空间的功能,点击就可以看到新建命名空间 的按钮

(2)新建成功后,可以在命名空间列表中查看到你所创建的Namespace和他生成的ID值

(3)创建完成之后,创建的DEV、TEST

Linux运维指南Nacos、Rabbit MQ、Redis

(4)代码中根据namespaceid分组不同的命名空间,相应的配置和环境也是各自namespace的环境

六、Nacos作为配置中心

6.1自定义group

在同一个group下,配置文件名不能重复,所以当需要创建文件名称相同的两个配置文件时,将两个配置文件创建在不同的group下即可。当我们同一个group下创建一个已有的配置文件时,nacos会将其视为配置文件的修改,而不是新建。

6.2已有的配置文件

Linux运维指南Nacos、Rabbit MQ、Redis

我们在另一个group下再创建一个
nacos-config-client.properties

Linux运维指南Nacos、Rabbit MQ、Redis

6.3修改客户端配置文件

修改bootstrap.properties


spring.application.name=nacos-config-client

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

#spring.cloud.nacos.config.file-extension=yaml

spring.cloud.nacos.config.group=SECOND_GROUP

注:该配置必须放在 bootstrap.properties 文件中


启动客户端你,访问
http://localhost:8080/test

Linux运维指南Nacos、Rabbit MQ、Redis

就可以看到不同的配置了。

七、环境切换打包

7.1整体切换环境

整体切换使用dev环境:

java -jar app-main-1.0.jar --spring.profiles.active=dev

整体切换使用test环境:

java -jar app-main-1.0.jar --spring.profiles.active=test

整体切换使用prod环境:

java -jar app-main-1.0.jar --spring.profiles.active=prod

整体切换使用uat环境:

java -jar app-main-1.0.jar --spring.profiles.active=uat

7.2Maven打不同环境的包

打包命令详解test环境

mvn clean install -Ptest -DskipTests=TRUE

打包命令详解dev环境

mvn clean install -Pdev -DskipTests=TRUE

打包命令详解prod环境

mvn clean install -Pprod -DskipTests=TRUE

打包命令详解uat环境

mvn clean install -Puat -DskipTests=TRUE

八、宝塔Linux工具

宝塔Linux安装:https://www.bt.cn

宝塔能够自动安装:MySQL、Nginx

实现文件上传工具

九、Redis

安装之后设置Redis配置redis.conf文件:host 0.0.0.0

daemonize yes

查看Redis是否启动:ps -ef|grep redis

客户端连接Redis:redis-cli

切换数据库:select 0

select 1

select 2

清空当前的Redis库:flushdb

清空所有Redis库:flushall

9.1Redis使用实例

可参考我发过的文章:springboot集成springsession利用redis来实现session共享

您可能还会对下面的文章感兴趣: