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 查看redis哨兵是否正常启动 linux查看redis运行状态_spring

yum安装依赖:

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

如图

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_02

如下表示安装成功:

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_03

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 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_04

解压完成:

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_05

1.1.3安装Erlang

(1) 移位置

mv otp_src_22.0 /usr/local/

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_06

(2) 切换目录

cd /usr/local/otp_src_22.0/

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_07

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

mkdir ../erlang

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_08

(4) 配置安装路径

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_09

(5) 安装

make install

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_10

耗时比较久

如下

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_11

安装成功

查看一下是否安装成功

ll /usr/local/erlang/bin

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_12

正常

(6)环境变量

添加环境变量:

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_13

刷新环境变量

source /etc/profile

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_14

(7)测试:erl

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_15

如图已成功安装Erlang

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_16

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 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_17

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

yum install -y xz

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_18

(1)第一次解压

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_19

(2)第二次解压

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_20

完成:

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_21

1.2.2移走MQ

mv rabbitmq_server-3.7.15/ /usr/local/

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_22

改名:mv

/usr/local/rabbitmq_server-3.7.15 rabbitmq

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_23

1.2.3配置环境变量

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_24

刷新环境变量

source /etc/profile

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

mkdir /etc/rabbitmq

1.2.4启动MQ

启动:

rabbitmq-server -detached

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_25

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_26

表示启动成功

停止RMQ命令:rabbitmqctl stop

查看RMQ状态:rabbitmqctl status

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_27

1.3开启RabbitMQ Web端管理

1.3.1开启Web插件

命令:rabbitmq-plugins enable rabbitmq_management

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_28

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

关闭防火墙步骤:

systemctl stop firewalld.service #停止firewall

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

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

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_29

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

1.3.2用户管理

(1)查看所有用户

rabbitmqctl list_users

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_30

(2) 添加一个用户

rabbitmqctl add_user opendi opendi

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_31

(3) 配置权限

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_32

(4) 查看用户权限

rabbitmqctl list_user_permissions opendi

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_33

(5) 设置tag

rabbitmqctl set_user_tags opendi administrator

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_34

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

rabbitmqctl delete_user guest

(7) 重启Rabbit MQ

先:rabbitmqctl stop

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_35

再:rabbitmq-server -detached

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_36

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_37

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_38

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

2.1MQ消息中心适用场景

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

消息中心示例架构图:

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_39

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

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

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

2.1.1消息中心做的事情

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

(1)短信消息

(2)微信模板消息

(3)语音消息

(4)邮件消息

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

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

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

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

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

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

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

2.2Rabbit MQ基础知识

2.2.1队列、生产者、消费者

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_40

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_41

2.2.2发布订阅模式

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_42

2.2.3Exchange、Binding交换机与绑定

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

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_43

Exchange、Binding交换机与绑定

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

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_44

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:

org.springframework.boot

spring-boot-starter-amqp

1.5.2.RELEASE

2.4.2生产者

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_45

公共发送代码:

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_46

直连交换机

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_47

Topic交换机

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_48

广播Fanout交换机

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_49

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_50

2.4.3消费者

消费者绑定队列

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_linux查看rabbitmq运行状态_51

监听队列

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_52

2.4.4测试

Fanout广播

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_53

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

Topic路由模糊匹配

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_54

Direct直连

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_55

三、 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 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_56

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

六、Nacos作为配置中心

6.1自定义group

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

6.2已有的配置文件

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_spring_57

我们在另一个group下再创建一个

nacos-config-client.properties

linux 查看redis哨兵是否正常启动 linux查看redis运行状态_配置文件_58

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 查看redis哨兵是否正常启动 linux查看redis运行状态_unix_59

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

七、环境切换打包

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使用实例