1. 首页 > Linux教程 > 正文

Linux教程FG374-消息队列部署

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

本文档介绍消息队列的部署和配置方法。

风哥提示:

Part01-RabbitMQ部署

1.1 安装RabbitMQ

# 安装EPEL和RabbitMQ
[root@rabbitmq ~]# dnf install -y epel-release
[root@rabbitmq ~]# dnf install -y rabbitmq-server

# 启用管理插件
[root@rabbitmq ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@rabbitmq:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@rabbitmq…
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch

started 3 plugins.

# 启动RabbitMQ
[root@rabbitmq ~]# systemctl enable –now rabbitmq-server
Created symlink /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service → /usr/lib/systemd/system/rabbitmq-server.service.更多学习教程公众号风哥教程itpux_com

# 查看状态
[root@rabbitmq ~]# rabbitmqctl status
Status of node rabbit@rabbitmq …
Runtime

OS PID: 12345
OS: Linux
Uptime (seconds): 100
Is under maintenance?: false
RabbitMQ version: 3.11.10
Node name: rabbit@rabbitmq
Erlang configuration: Erlang/OTP 25
Erlang processes: 300 used, 1048576 limit
Scheduler run queue: 1
Active Handlers: 0

# 创建用户
[root@rabbitmq ~]# rabbitmqctl add_user admin Admin@123456
Adding user “admin” …
Done. Don’t forget to grant the user permissions to some virtual hosts! See ‘rabbitmqctl set_permissions –help’.

[root@rabbitmq ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user “admin” to [administrator] …

[root@rabbitmq ~]# rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”
Setting permissions for user “admin” in vhost “/” …

# 查看用户
[root@rabbitmq ~]# rabbitmqctl list_users
Listing users …
user tags
admin administrator
guest administrator

1.2 配置RabbitMQ集群

# 同步Erlang Cookie
[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq2:/var/lib/rabbitmq/
[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq3:/var/lib/rabbitmq/

# 在rabbitmq2和rabbitmq3上加入集群
[root@rabbitmq2 ~]# systemctl restart rabbitmq-server
[root@rabbitmq2 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq2 …
[root@rabbitmq2 ~]# rabbitmqctl join_cluster rabbit@rabbitmq1
Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1
[root@rabbitmq2 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq2 …

[root@rabbitmq3 ~]# systemctl restart rabbitmq-server
[root@rabbitmq3 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq3 …
[root@rabbitmq3 ~]# rabbitmqctl join_cluster rabbit@rabbitmq1
Clustering node rabbit@rabbitmq3 with rabbit@rabbitmq1
[root@rabbitmq3 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq3 …

# 查看集群状态
[root@rabbitmq1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 …
Basics

Cluster name: rabbit@rabbitmq1

Disk Nodes

rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3

Running Nodes

rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3

Versions

rabbit@rabbitmq1: RabbitMQ 3.11.10 on Erlang 25.3
rabbit@rabbitmq2: RabbitMQ 3.11.10 on Erlang 25.3
rabbit@rabbitmq3: RabbitMQ 3.11.10 on Erlang 25.学习交流加群风哥微信: itpux-com3

# 创建队列
[root@rabbitmq1 ~]# rabbitmqadmin declare queue name=test_queue durable=true
queue declared

# 创建交换器
[root@rabbitmq1 ~]# rabbitmqadmin declare exchange name=test_exchange type=direct
exchange declared

# 绑定队列
[root@rabbitmq1 ~]# rabbitmqadmin declare binding source=test_exchange destination=test_queue routing_key=test_key
binding declared

# 发布消息
[root@rabbitmq1 ~]# rabbitmqadmin publish exchange=test_exchange routing_key=test_key payload=”Hello RabbitMQ”
Message published

# 消费消息
[root@rabbitmq1 ~]# rabbitmqadmin get queue=test_queue
+————-+———-+—————+————————————-+—————+——————+————+————-+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+————-+———-+—————+————————————-+—————+——————+————+————-+
| test_key | | 0 | Hello RabbitMQ | 14 | string | | False |
+————-+———-+—————+————————————-+—————+——————+————+————-+

Part02-Kafka部署

2.1 安装Kafka

# 安装Java
[root@kafka ~]# dnf install -y java-17-openjdk

# 下载Kafka
[root@kafka ~]# cd /opt
[root@kafka opt]# wget https://archive.apache.org/dist/kafka/3.4.0/kafka_2.13-3.4.0.tgz
[root@kafka opt]# tar xzf kafka_2.13-3.4.0.tgz
[root@kafka opt]# ln -s kafka_2.13-3.4.0 kafka

# 配置Zookeeper
[root@kafka ~]# cat > /opt/kafka/config/zookeeper.properties << 'EOF' dataDir=/var/lib/zookeeper clientPort=2181 maxClientCnxns=0 admin.enableServer=false EOF [root@kafka ~]# mkdir -p /var/lib/zookeeper # 配置Kafka [root@kafka ~]# cat > /opt/kafka/config/server.properties << 'EOF' broker.id=0 listeners=PLAINTEXT://:9092 advertised.listeners=PLAINTEXT://192.168.1.10:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/va学习交流加群风哥QQ113257174r/lib/kafka/logs num.partitions=3 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=localhost:2181 zookeeper.connection.timeout.ms=18000 group.initial.rebalance.delay.ms=0 EOF [root@kafka ~]# mkdir -p /var/lib/kafka/logs # 创建systemd服务 [root@kafka ~]# cat > /etc/systemd/system/zookeeper.service << 'EOF' [Unit] Description=Apache Zookeeper Documentation=https://zookeeper.apache.org Requires=network.target After=network.target [Service] Type=simple ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh Restart=on-failure [Install] WantedBy=multi-user.target EOF [root@kafka ~]# cat > /etc/systemd/system/kafka.service << 'EOF' [Unit] Description=Apache Kafka Documentation=https://kafka.apache.更多视频教程www.fgedu.net.cnorg Requires=zookeeper.service After=zookeeper.service [Service] Type=simple ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh Restart=on-failure [Install] WantedBy=multi-user.target EOF # 启动服务 [root@kafka ~]# systemctl daemon-reload [root@kafka ~]# systemctl enable --now zookeeper [root@kafka ~]# systemctl enable --now kafka # 创建Topic [root@kafka ~]# /opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 Created topic test-topic. # 查看Topic [root@kafka ~]# /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092 test-topic # 发送消息 [root@kafka ~]# echo "Hello Kafka" | /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic # 消费消息 [root@kafka ~]# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning Hello Kafka

风哥针对消息队列建议:

  • 根据业务需求选择合适的消息队列
  • 配置集群提高可用性
  • 设置合理的消息持久化策略
  • 监控队列积压情况
  • 配置消息确认机制

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息