内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
本文档介绍消息队列的部署和配置方法。
风哥提示:
Part01-RabbitMQ部署
1.1 安装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集群
[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
[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
