配置Linux服务器华为云耀云服务器之docker中消费中间件rabbitMQ与kafka的安装 (虚拟机一样适用)

阿丹有话说:

        因为项目中涉及到发送短信、异步发送邮件、还有异步书写日志异步更新数据库(es索引库,redis缓存等)。这时候就需要使用消费中间件。可以大大的加速消息发送等的速度!

        简介:

        当今互联网应用场景中,消息队列是一种常用的异步通信方式,同时也是构建微服务架构和数据分析系统的关键部分之一。消息队列主要有两大类:点对点两种模式和发布-订阅模式。在点对点通信模式下,生产者向队列中发送消息,在队列中等待的消费者可以从队列中取出消息,但是一条消息只能被一个消费者获取。在发布-订阅模式下,生产者向主题中发送消息,主题可以有多个消费者订阅,每个消费者都可以独立地获取消息。

        Kafka 是一个通过分布式消息传递提供高吞吐量的数据存储解决方案,它使用高效且可扩展的分布式架构存储消息,提供了实时数据管道和流处理功能。Kafka 的数据模型基于发布-订阅模式,并使用分区和副本存储数据,从而提供高可用性和弹性。Kafka 经常用于构建实时数据管道、日志处理、流处理和一些大数据应用程序,例如 Apache Spark、Flink、Storm、HBase 等等。

        相比之下,MQ(Message Queue)是一种企业级消息传递基础设施,用于应用程序之间的通信,MQ 提供的主要功能包括高可靠性、高可用性和基于时序消息的全局状态管理。MQ 通常用于构建企业级应用、微服务架构、可靠消息通信或异步事件处理的框架。一些常用的 MQ 产品包括 ActiveMQ、RabbitMQ、RocketMQ 和 IBM MQ 等等。

前面我写过rabbit的用法这次补上配置文件以及安装,算是给前面填个坑!

 docker安装rabbitMQ

准备工作:

1、打开docker目录 2、创建rabbitmq的文件夹 3、打开rabbitmq文件夹

cd /usr/local/docker/
mkdir rabbitmq
cd rabbitmq/

 

直接复制粘贴上面的代码就可以了,实现了创建了一个rabbitmq的文件夹。 

挂载目录:

创建挂载目录

mkdir data

 

编写以及启动脚本

1、编写/编辑脚本文件

vim startRabbitMq.sh

 按下字母(i)进入编辑模式。

 2、脚本内容

docker run -d \
-v /usr/local/docker/rabbitmq/data:/var/lib/rabbitmq \
-p 5672:5672 -p 15672:15672 \
--name rabbitmq \
--restart=always \
--hostname myRabbit rabbitmq:3.9.13-management

 复制粘贴完毕了以后

1、按下esc

2、使用shift+:

3、输入wq!

对修改文件进行保存。

对脚本内容进行解释:

docker run -d :表示以后台模式启动 Docker 容器。

-v /usr/local/docker/rabbitmq/data:/var/lib/rabbitmq :表示将本地路径 /usr/local/docker/rabbitmq/data 映射到容器内的路径 /var/lib/rabbitmq ,用于存储 RabbitMQ 数据。

-p 5672:5672 -p 15672:15672 :表示将容器内的端口 5672 映射到本地的端口 5672 上,用于 AMQP(Advanced Message Queuing Protocol) 协议的连接。同时将容器内的端口 15672 映射到本地的端口 15672 上,用于 RabbitMQ 管理界面的访问。

--name rabbitmq :给容器指定一个名称,这里是 rabbitmq

--restart=always :设置容器启动时自动重启。

--hostname myRabbit :设置容器的主机名为 myRabbit

rabbitmq:3.9.13-management :指定要启动的镜像名称和版本,这里是带有管理界面的 RabbitMQ 3.9.13 镜像。

这段命令的主要作用是启动一个基于 RabbitMQ 镜像的容器,映射数据卷,指定端口映射,设置容器名称、主机名和重启策略等。

脚本授权

chmod -R 700 startRabbitMq.sh

 

 解释:

        这个命令将 `startRabbitMq.sh` 文件及其子文件夹下所有文件的权限改为只有文件所有者具有读、写、执行权限,其他用户没有任何权限。权限配置的格式为 `rwx`,其中 `r` 表示读权限、`w` 表示写权限、`x` 表示执行权限。在这个命令中,权限配置中没有设置其他用户的权限,因此其他用户对这个文件及其子文件夹下的所有文件都没有任何权限。更具体地说,这个命令把 `startRabbitMq.sh` 及其子文件夹下的所有文件设置为只有所有者有读、写、执行权限,而其他用户则没有任何权限。

启动脚本

./startRabbitMq.sh

 

 开始下载镜像以及安装,安装完毕之后会进行运行。

 在docker中看一下是否运行。

docker ps -a

 可以看到已经在运行了。

使用服务器的ip地址+ 15672来对rabbitMQ进行访问。

出现这个页面就是成功了!账号和密码都是:guest 

 rabbitMQ安装完毕!具体用法请去专栏中查看!

 安装下载kafka

Kafka 是一个分布式流媒体平台,  类似于消息队列或企业消息传递系统。

kafka官网:Apache Kafka  

安装kafka的配置

因为kafka对于zookeeper是强依赖的,zookeeper中有kafka很多的节点数据。具体原因为Kafka 是一个分布式系统,需要一个可靠的协调服务来管理集群状态和元数据,这就是 ZooKeeper 所扮演的角色。Kafka 使用 ZooKeeper 存储集群状态和元数据,包括 Kafka 消费者和分区的分配信息、每个分区的存储位置、生产者 ID 和消费者组等信息。在 Kafka 集群启动时,生产者和消费者会通过 ZooKeeper 发现并连接到合适的 Kafka 代理节点。而且 Kafka 中的发布-订阅模型也是基于 ZooKeeper 实现的。因此,ZooKeeper 对于 Kafka 是必需且强依赖的。

所以在安装kafka之前必须要安装zookeeper

Docker安装zookeeper

下载镜像:

docker pull zookeeper:3.4.14

 创建容器

docker run -d \
--privileged=true \
--name zookeeper \
--restart=always \
-p 2181:2181 zookeeper:3.4.14

代码解释:

docker run -d :表示以后台模式启动 Docker 容器。

--privileged=true :表示开启特权模式,大多是为了支持一些特殊的系统调用。

--name zookeeper :给容器指定一个名称,这里是 zookeeper

--restart=always :设置容器启动时自动重启。

-p 2181:2181 :表示将容器内的端口 2181 映射到本地的端口 2181 上,用于 ZooKeeper 客户端的连接和通信。

zookeeper:3.4.14 :指定要启动的镜像名称和版本,这里是 ZooKeeper 3.4.14 镜像。

这个命令的主要作用是启动一个基于 ZooKeeper 镜像的容器,开启特权模式,指定容器名称、重启策略和端口映射。

 docker安装kafka

下载镜像

docker pull wurstmeister/kafka:2.12-2.3.1

创建容器

其中的XXX.XXX.XXX要更换为自己的服务器或者虚拟机的ip

docker run -d \
--privileged=true \
--name kafka \
--restart=always \
--env KAFKA_ADVERTISED_HOST_NAME=XXX.XXX.XXX.XXX \
--env KAFKA_ZOOKEEPER_CONNECT=XXX.XXX.XXX.XXX:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://XXX.XXX.XXX.XXX:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
--net=host wurstmeister/kafka:2.12-2.3.1

 

 这就是启动了,然后我去docker容器中看一下是否在运行

docker ps -a

 已经在正常运行了!

代码解释:

这个 Docker 命令启动了一个 Kafka 服务容器。这里是一些命令的解释:

docker run -d :这个表示以后台模式运行容器。

--privileged=true :运行容器时开启特权模式。

--name kafka :这个设置容器的名称,这里是 kafka

--restart=always :这个表示容器启动后自动重启。

--env KAFKA_ADVERTISED_HOST_NAME=XXX.XXX.XXX.XXX :这个设置 Kafka 服务的 advertised host 名称,其中 XXX.XXX.XXX.XXX 表示主机的 IP 地址。

--env KAFKA_ZOOKEEPER_CONNECT=XXX.XXX.XXX.XXX:2181 :这个设置 Kafka 服务所连接的 ZooKeeper 地址,其中 XXX.XXX.XXX.XXX 表示 ZooKeeper 服务的 IP 地址,2181 表示 ZooKeeper 的端口号。

--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://XXX.XXX.XXX.XXX:9092 :这个设置 Kafka 服务的 advertised listeners,其中 XXX.XXX.XXX.XXX 表示主机的 IP 地址。

--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 :这个设置 Kafka 服务的 listeners。

--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" :这个设置 Kafka 服务的 JVM 堆大小,如在本例中为 256MB。

--net=host :用于告诉 Docker 框架连接主机网络。

wurstmeister/kafka:2.12-2.3.1 :这个指定运行的 Kafka 镜像。 在这里是 wurstmeister/kafka 2.12-2.3.1 镜像。

总体而言,该命令启动了一个 Kafka 服务容器,指定了相关的环境变量和特权模式,并将容器连接到主机网络。

 

         

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值