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

fdebc2769f2aa0be4606dba1c923c5e3.png

yum安装依赖:

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

如图

e92c5025c007f00392b249a033dafb83.png

如下表示安装成功:

2e97a73ede69c8ebb7fc7541a0711e45.png

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

f4bd70a7187852e32d58ff9dd0461586.png

解压完成:

505dd554fd72123db28882fdcb7ccc2b.png

1.1.3安装Erlang

(1) 移位置

mv otp_src_22.0 /usr/local/

d746a3fb41c8d4c850856559bd0e7716.png

(2) 切换目录

cd /usr/local/otp_src_22.0/

2e98cea89f412bbc9b93082edf3da12b.png

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

mkdir ../erlang

dcf93ffba48b5d2c893cb858189b1e51.png

(4) 配置安装路径

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

2fff20b137d318a412b04f64a0747e87.png

(5) 安装

make install

061a05812e8a8d507e20ec76446949be.png

耗时比较久

如下

6c9eb89bff9f9197184f41aacec5d187.png

安装成功

查看一下是否安装成功

ll /usr/local/erlang/bin

90a2fbbc73a3c52c1854956c9c74ceb7.png

正常

(6)环境变量

添加环境变量:

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

c6afc84dda169e89481135f9dd4a1c4d.png

刷新环境变量

source /etc/profile

e6f2f6ef09294075e1708ab6b5b62944.png

(7)测试:erl

3417bcd1e2e2b3de9bf8d09715d72c52.png

如图已成功安装Erlang

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

fa0cb0abcb72d255bbdb4ae854034307.png

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目录下:

2cf5566754875eb836f27db0b6e97b81.png

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

yum install -y xz

6a02e081ce6b7c4935554d78e0479a52.png

(1)第一次解压

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

3893bedb042cdd3949dd73ba7bdb2bb9.png

(2)第二次解压

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

738b01b9e3d23816024d7a3ab305d7fa.png

完成:

3c73971f77f47c3887a609c816d6c908.png

1.2.2移走MQ

mv rabbitmq_server-3.7.15/ /usr/local/

4d2edf9ba00e9bcf8606e16f9ce946be.png

改名:mv

/usr/local/rabbitmq_server-3.7.15 rabbitmq

d8942cde2a80d972579b1588cf07f3c0.png

1.2.3配置环境变量

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

eb6d01abc3629a4193b45fecf4d5b2ea.png

刷新环境变量

source /etc/profile

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

mkdir /etc/rabbitmq

1.2.4启动MQ

启动:

rabbitmq-server -detached

d82b97e36d76928c38abe5dc8127dad2.png

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

16673407050f03df06030b6264551d92.png

表示启动成功

停止RMQ命令:rabbitmqctl stop

查看RMQ状态:rabbitmqctl status

c4c0d7d9341bc78db139f6809e6332e5.png

1.3开启RabbitMQ Web端管理

1.3.1开启Web插件

命令:rabbitmq-plugins enable rabbitmq_management

7eaedfbb8c73585fc288210adcb9206c.png

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

关闭防火墙步骤:

systemctl stop firewalld.service #停止firewall

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

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

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

d9dc62b56da8d2a108834af2227a5cf0.png

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

1.3.2用户管理

(1)查看所有用户

rabbitmqctl list_users

53c91428629628a5a048561a699fa8b5.png

(2) 添加一个用户

rabbitmqctl add_user opendi opendi

813073561bd460c87dc13411958679c5.png

(3) 配置权限

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

ffab2bd25443fa2a76813a779ff84b5e.png

(4) 查看用户权限

rabbitmqctl list_user_permissions opendi

b29bf6035f3d4f5a50671e630537694d.png

(5) 设置tag

rabbitmqctl set_user_tags opendi administrator

e00dcd8db410eb94aff454f45c840cec.png

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

rabbitmqctl delete_user guest

(7) 重启Rabbit MQ

先:rabbitmqctl stop

67f403d8602964b0300e74d5f775837c.png

再:rabbitmq-server -detached

6d77304a9ecb5d3811d6c9c5814b208d.png

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

7e0d7420678ff5ebf9a5271ebbafd741.png

676d66285d8fc6e0c319fa57d62c348a.png

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

2.1MQ消息中心适用场景

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

消息中心示例架构图:

d3903848782f14b51d405f78b15d064c.png

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

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

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

2.1.1消息中心做的事情

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

(1)短信消息

(2)微信模板消息

(3)语音消息

(4)邮件消息

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

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

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

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

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

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

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

2.2Rabbit MQ基础知识

2.2.1队列、生产者、消费者

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

f56aca624d569d9161e86afe3a3d00d4.png

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

202180fc435895ac0e35c2e174d4f75a.png

2.2.2发布订阅模式

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

5739bec370c87265d1d99a16dd825d45.png

2.2.3Exchange、Binding交换机与绑定

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

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

021c6e341488db82b4646d6d644fbfb9.png

Exchange、Binding交换机与绑定

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

037fb6669a72103853279ef997a117de.png

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生产者

d795edf3825eb8a833abddf705481341.png

公共发送代码:

828a67dea86407abddce12e0658ea737.png

直连交换机

16d05a6cd480531f45483fa50c592905.png

Topic交换机

255c6ceb4f9b761005eef2f23454f12a.png

广播Fanout交换机

3d8c4d9a9b4ef5b277910b998bbfefda.png

8d9091fcec6db863e6fba272aeea8096.png

2.4.3消费者

消费者绑定队列

7427b08d2c06bbbf468e62d537b08548.png

监听队列

1875d0075e452eaf445a561518f4593b.png

2.4.4测试

Fanout广播

b8f93da0c2ca551df92f8d8a21662e64.png

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

Topic路由模糊匹配

7a81967dca28db60a525fa85564b8ed4.png

Direct直连

6f3cd0c48343e6f143a0bd4de7d8f684.png

三、 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

8fa13bbf0699fe4ef233d2118916718c.png

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

六、Nacos作为配置中心

6.1自定义group

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

6.2已有的配置文件

07c635452e9606636f1e0d773acf4a7f.png

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

nacos-config-client.properties

d856f9260a2adad5e1f970912a8e4e10.png

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

3af2ab275c5d0b14c9a5e3d656840d0a.png

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

七、环境切换打包

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共享

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐