Zookeeper和kafka集群搭建步骤(超详细,易理解)

这篇具有很好参考价值的文章主要介绍了Zookeeper和kafka集群搭建步骤(超详细,易理解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前提要求:三个节点、centos源

目录

前提要求:三个节点、centos源

Zookeeper集群搭建:

【任务一】修改主机名、配置主机映射

【任务二】上传软件包到第一节点的/root用户下

【任务三】解压软件包

【任务四】安装jdk环境(三个节点)

【任务五】对zookeeper文件操作

1.修改文件名

2.修改zoo.cfg配置文件内容

3.进入/tmp目录

【任务六】将zookeeper目录传到第二、三节点

【任务七】在第二、三节点对/tmp目录进行相同操作

【任务八】用脚本启动zookeeper服务

【任务九】安装net-tools工具

【任务十】查看端口(出现2181端口)

【任务十一】查看状态

Kafka集群搭建:

【任务一】修改server.properties配置文件

【任务二】将kafka_2.11-1.1.1配置文件传到第二、三节点

【任务三】修改第二、三节点server.properties配置文件

【任务四】用脚本运行文件

【任务五】查看端口(出现9092端口)


Zookeeper集群搭建:

【任务一】修改主机名、配置主机映射

[root@controller ~]# hostnamectl set-hostname zookeeper1
[root@controller ~]# vi /etc/hosts
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 zookeeper1
192.168.100.20 zookeeper2
192.168.100.30 zookeeper3
[root@controller ~]# bash
[root@zookeeper1 ~]# 
[root@compute ~]# hostnamectl set-hostname zookeeper2
[root@compute ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 zookeeper1
192.168.100.20 zookeeper2
192.168.100.30 zookeeper3
[root@compute ~]# bash
[root@zookeeper2 ~]# 
[root@localhost ~]# hostnamectl set-hostname zookeeper3
[root@localhost ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 zookeeper1
192.168.100.20 zookeeper2
192.168.100.30 zookeeper3
[root@localhost ~]# bash
[root@zookeeper3 ~]#

【任务二】上传软件包到第一节点的/root用户下

[root@controller ~]# ls
anaconda-ks.cfg  chinaskills_cloud_iaas_v2.0.3.iso  kafka_2.11-1.1.1.tgz  zookeeper-3.4.14.tar.gz

【任务三】解压软件包

[root@zookeeper1 ~]# tar -xf zookeeper-3.4.14.tar.gz 
[root@zookeeper1 ~]# tar -xf kafka_2.11-1.1.1.tgz 
[root@zookeeper1 ~]# ls
anaconda-ks.cfg                    kafka_2.11-1.1.1      zookeeper-3.4.14
chinaskills_cloud_iaas_v2.0.3.iso  kafka_2.11-1.1.1.tgz  zookeeper-3.4.14.tar.gz

【任务四】安装jdk环境(三个节点)

[root@zookeeper1 ~]# yum install -y java-openjdk*
[root@zookeeper2 ~]# yum install -y java-openjdk*
[root@zookeeper3 ~]# yum install -y java-openjdk*

【任务五】对zookeeper文件操作

1.修改文件名

[root@zookeeper1 ~]# cd zookeeper-3.4.14
[root@zookeeper1 zookeeper-3.4.14]# ls
bin              ivy.xml      README.md                 zookeeper-3.4.14.jar.md5   zookeeper-it
build.xml        lib          README_packaging.txt      zookeeper-3.4.14.jar.sha1  zookeeper-jute
conf             LICENSE.txt  src                       zookeeper-client           zookeeper-recipes
dist-maven       NOTICE.txt   zookeeper-3.4.14.jar      zookeeper-contrib          zookeeper-server
ivysettings.xml  pom.xml      zookeeper-3.4.14.jar.asc  zookeeper-docs
[root@zookeeper1 zookeeper-3.4.14]# cd conf/
[root@zookeeper1 conf]# ls
configuration.xsl  log4j.properties  zoo_sample.cfg
[root@zookeeper1 conf]# mv zoo_sample.cfg zoo.cfg
[root@zookeeper1 conf]# ls
configuration.xsl  log4j.properties  zoo.cfg

2.修改zoo.cfg配置文件内容

(1)找到#maxClientCnxns=60命令在下面添加

server.1=192.168.100.10:2888:3888
server.2=192.168.100.20:2888:3888
server.3=192.168.100.30:2888:3888

3.进入/tmp目录

(1)创建zookeeper目录

[root@zookeeper1 ~]# cd /tmp
[root@zookeeper1 tmp]# ls
hsperfdata_root  systemd-private-f8f7589af730483481a9bc57b003b952-chronyd.service-tNB0d0  vmware-root_704-2990744159
[root@zookeeper1 tmp]# mkdir zookeeper
[root@zookeeper1 tmp]# ls
hsperfdata_root                                                          vmware-root_704-2990744159
systemd-private-f8f7589af730483481a9bc57b003b952-chronyd.service-tNB0d0  zookeeper

(2)进入zookeeper目录中创建myid文件,添加  '  1  ';文章来源地址https://www.toymoban.com/news/detail-616241.html

[root@zookeeper1 tmp]# cd zookeeper/
[root@zookeeper1 zookeeper]# ls
myid
[root@zookeeper1 zookeeper]# cat myid 
1

【任务六】将zookeeper目录传到第二、三节点

[root@zookeeper1 ~]# scp -r zookeeper-3.4.14 root@zookeeper2://root
[root@zookeeper1 ~]# scp -r zookeeper-3.4.14 root@zookeeper3://root

【任务七】在第二、三节点对/tmp目录进行相同操作

[root@zookeeper2 ~]# cd /tmp/
[root@zookeeper2 tmp]# ls
hsperfdata_root  systemd-private-fcd7259fd6534958b7a2c4d011b6802b-chronyd.service-W1bB8M  vmware-root_713-4290166671
[root@zookeeper2 tmp]# mkdir zookeeper
[root@zookeeper2 tmp]# cd zookeeper/
[root@zookeeper2 zookeeper]# vi myid
2
[root@zookeeper2 zookeeper]# cat myid
2
[root@zookeeper3 ~]# cd /tmp
[root@zookeeper3 tmp]# ls
hsperfdata_root  systemd-private-8729f6a12051421f8573e6efbd244e2c-chronyd.service-39stLG  vmware-root_692-2696942994
[root@zookeeper3 tmp]# mkdir zookeeper
[root@zookeeper3 tmp]# cd zookeeper/
[root@zookeeper3 zookeeper]# vi myid
3
[root@zookeeper3 zookeeper]# cat myid 
3

【任务八】用脚本启动zookeeper服务

[root@zookeeper1 ~]# sh zookeeper-3.4.14/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[root@zookeeper2 ~]# sh zookeeper-3.4.14/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[root@zookeeper3 ~]# sh zookeeper-3.4.14/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

【任务九】安装net-tools工具


[root@zookeeper1 ~]# yum install -y net-tools
[root@zookeeper2 ~]# yum install -y net-tools
[root@zookeeper3 ~]# yum install -y net-tools 

【任务十】查看端口(出现2181端口)

[root@zookeeper1 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      991/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1197/master         
tcp6       0      0 :::22                   :::*                    LISTEN      991/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1197/master         
tcp6       0      0 :::36865                :::*                    LISTEN      1848/java           
tcp6       0      0 :::2181                 :::*                    LISTEN      1848/java           
tcp6       0      0 192.168.100.10:3888     :::*                    LISTEN      1848/java           
tcp6       0      0 :::21                   :::*                    LISTEN      1498/vsftpd         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           709/chronyd         
udp6       0      0 ::1:323                 :::*                                709/chronyd 


[root@zookeeper2 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      995/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1229/master         
tcp6       0      0 :::2181                 :::*                    LISTEN      1763/java           
tcp6       0      0 :::46534                :::*                    LISTEN      1763/java           
tcp6       0      0 192.168.100.20:2888     :::*                    LISTEN      1763/java           
tcp6       0      0 192.168.100.20:3888     :::*                    LISTEN      1763/java           
tcp6       0      0 :::22                   :::*                    LISTEN      995/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1229/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           728/chronyd         
udp6       0      0 ::1:323                 :::*                                728/chronyd     


[root@zookeeper3 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      997/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1191/master         
tcp6       0      0 :::36402                :::*                    LISTEN      1784/java           
tcp6       0      0 :::22                   :::*                    LISTEN      997/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1191/master         
tcp6       0      0 :::2181                 :::*                    LISTEN      1784/java           
tcp6       0      0 192.168.100.30:3888     :::*                    LISTEN      1784/java           
udp        0      0 127.0.0.1:323           0.0.0.0:*                           716/chronyd         
udp6       0      0 ::1:323                 :::*                                716/chronyd         

【任务十一】查看状态

[root@zookeeper1 ~]# sh zookeeper-3.4.14/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower



[root@zookeeper2 ~]# sh zookeeper-3.4.14/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: leader


[root@zookeeper3 ~]# sh zookeeper-3.4.14/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower

Kafka集群搭建:

【任务一】修改server.properties配置文件

[root@zookeeper1 ~]# cd kafka_2.11-1.1.1
[root@zookeeper1 kafka_2.11-1.1.1]# ls
\bin  config  libs  LICENSE  NOTICE  site-docs
[root@zookeeper1 kafka_2.11-1.1.1]# cd config/
[root@zookeeper1 config]# ls
connect-console-sink.properties    connect-file-source.properties  log4j.properties        zookeeper.properties
connect-console-source.properties  connect-log4j.properties        producer.properties
connect-distributed.properties     connect-standalone.properties   server.properties
connect-file-sink.properties       consumer.properties             tools-log4j.properties
[root@zookeeper1 config]# vi server.properties


broker.id=0                      >>>>>>修改为  broker.id=1

#listeners=PLAINTEXT://:9092     >>>>>>修改为  listeners=PLAINTEXT://192.168.100.10:9092 

【任务二】将kafka_2.11-1.1.1配置文件传到第二、三节点

[root@zookeeper1 ~]# scp -r kafka_2.11-1.1.1 root@zookeeper2://root
[root@zookeeper1 ~]# scp -r kafka_2.11-1.1.1 root@zookeeper3://root

【任务三】修改第二、三节点server.properties配置文件

[root@zookeeper2 ~]# cd kafka_2.11-1.1.1
[root@zookeeper2 kafka_2.11-1.1.1]# ls
\bin  config  libs  LICENSE  NOTICE  site-docs
[root@zookeeper2 kafka_2.11-1.1.1]# cd config/
[root@zookeeper2 config]# ls
connect-console-sink.properties    connect-file-source.properties  log4j.properties        zookeeper.properties
connect-console-source.properties  connect-log4j.properties        producer.properties
connect-distributed.properties     connect-standalone.properties   server.properties
connect-file-sink.properties       consumer.properties             tools-log4j.properties
[root@zookeeper2 config]# vi server.properties


broker.id=0                      >>>>>>修改为  broker.id=2

#listeners=PLAINTEXT://:9092     >>>>>>修改为  listeners=PLAINTEXT://192.168.100.20:9092



[root@zookeeper3 ~]# cd kafka_2.11-1.1.1
[root@zookeeper3 kafka_2.11-1.1.1]# ls
\bin  config  libs  LICENSE  NOTICE  site-docs
[root@zookeeper3 kafka_2.11-1.1.1]# cd config/
[root@zookeeper3 config]# ls
connect-console-sink.properties    connect-file-source.properties  log4j.properties        zookeeper.properties
connect-console-source.properties  connect-log4j.properties        producer.properties
connect-distributed.properties     connect-standalone.properties   server.properties
connect-file-sink.properties       consumer.properties             tools-log4j.properties
[root@zookeeper3 config]# vi server.properties


broker.id=0                      >>>>>>修改为  broker.id=3

#listeners=PLAINTEXT://:9092     >>>>>>修改为  listeners=PLAINTEXT://192.168.100.30:9092

【任务四】用脚本运行文件

[root@zookeeper1 ~]# sh kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon kafka_2.11-1.1.1/config/server.properties
[root@zookeeper2 ~]# sh kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon kafka_2.11-1.1.1/config/server.properties
[root@zookeeper3 ~]# sh kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon kafka_2.11-1.1.1/config/server.properties

【任务五】查看端口(出现9092端口)

[root@zookeeper1 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      991/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1197/master         
tcp6       0      0 :::22                   :::*                    LISTEN      991/sshd            
tcp6       0      0 :::38328                :::*                    LISTEN      10406/java          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1197/master         
tcp6       0      0 :::36865                :::*                    LISTEN      1848/java           
tcp6       0      0 192.168.100.10:9092     :::*                    LISTEN      10406/java          
tcp6       0      0 :::2181                 :::*                    LISTEN      1848/java           
tcp6       0      0 192.168.100.10:3888     :::*                    LISTEN      1848/java           
tcp6       0      0 :::21                   :::*                    LISTEN      1498/vsftpd         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           709/chronyd         
udp6       0      0 ::1:323                 :::*                                709/chronyd         



[root@zookeeper2 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      995/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1229/master         
tcp6       0      0 192.168.100.20:9092     :::*                    LISTEN      2104/java           
tcp6       0      0 :::2181                 :::*                    LISTEN      1763/java           
tcp6       0      0 :::46534                :::*                    LISTEN      1763/java           
tcp6       0      0 192.168.100.20:2888     :::*                    LISTEN      1763/java           
tcp6       0      0 :::33100                :::*                    LISTEN      2104/java           
tcp6       0      0 192.168.100.20:3888     :::*                    LISTEN      1763/java           
tcp6       0      0 :::22                   :::*                    LISTEN      995/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1229/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           728/chronyd         
udp6       0      0 ::1:323                 :::*                                728/chronyd   





[root@zookeeper3 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      997/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1191/master         
tcp6       0      0 :::36402                :::*                    LISTEN      1784/java           
tcp6       0      0 :::22                   :::*                    LISTEN      997/sshd            
tcp6       0      0 :::34648                :::*                    LISTEN      2789/java           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1191/master         
tcp6       0      0 192.168.100.30:9092     :::*                    LISTEN      2789/java           
tcp6       0      0 :::2181                 :::*                    LISTEN      1784/java           
tcp6       0      0 192.168.100.30:3888     :::*                    LISTEN      1784/java           
udp        0      0 127.0.0.1:323           0.0.0.0:*                           716/chronyd         
udp6       0      0 ::1:323                 :::*                                716/chronyd         

到了这里,关于Zookeeper和kafka集群搭建步骤(超详细,易理解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • kafka 集群 ZooKeeper 模式搭建

    kafka 集群 ZooKeeper 模式搭建

    Apache Kafka是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序 Kafka 官网:Apache Kafka 关于ZooKeeper的弃用 根据 Kafka官网信息,随着Apache Kafka 3.5版本的发布,Zookeeper现已被标记为已弃用。未来计划在Apache Kafka(4.0版)的下一

    2024年02月05日
    浏览(13)
  • zookeeper + kafka集群搭建详解

    2023年04月11日
    浏览(10)
  • Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文)

    Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文)

    说明: 本篇将详细介绍用二进制安装包部署hadoop等组件,注意事项,各组件的使用,常用的一些命令,以及在部署中遇到的问题解决思路等等,都将详细介绍。 ip hostname 192.168.1.11 node1 192.168.1.12 node2 192.168.1.13 node3 1.2.1系统版本 1.2.2内存建议最少4g、2cpu、50G以上的磁盘容量 本次

    2024年02月12日
    浏览(20)
  • jdk+zookeeper+kafka 搭建kafka集群

    jdk+zookeeper+kafka 搭建kafka集群

    环境准备 环境资源包: jdk-8u341-linux-x64.tar.gz kafka_2.12-2.2.0.tgz zookeeper-3.4.14.tar.gz server-id ip 状态 server1 10.206.120.10 leader server2 10.206.120.2 follower server3 10.206.120.3 follower 一、安装jdk 因为kafka需要Java环境,所以优先配置jdk环境,若已经配置了java环境,此步骤可以忽略 二、zookeeper集群

    2024年02月04日
    浏览(15)
  • Docker 搭建 zookeeper、kafka 集群

    Docker 搭建 zookeeper、kafka 集群

    首先创建一个自定义网络,后续的所有容器都放入同一个内网中,容器之间还可以通过容器名称进行直接访问,在后续的配置中只需要写明容器名称即可,会自动找到对应的IP地址,防止重启容器后IP地址发生变化时,还要去修改配置文件的操作 创建目录 启动zookeeper 进入zo

    2024年02月10日
    浏览(14)
  • 基于Zookeeper搭建Kafka高可用集群(实践可用)

    基于Zookeeper搭建Kafka高可用集群(实践可用)

    目录 一、Zookeeper集群搭建 1.1 下载  解压 1.2 修改配置 1.3 标识节点 1.4 启动集群 1.5 集群验证 二、Kafka集群搭建 2.1 下载解压 2.2 拷贝配置文件 2.3 修改配置 2.4 启动集群 2.5 创建测试主题 2.6 写入数据测试 为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有

    2024年02月09日
    浏览(11)
  • kafka3.4.0集群搭建(无zookeeper)

    kafka3.4.0集群搭建(无zookeeper)

    注意:低版本需要安装zookeeper,在2.8及以上可移除zookeeper 前往官网下载 !!!不要下载src文件 1.解压文件 tar xzf kafka_2.13-3.4.0.tgz 进入文件 cd kafka_2.13-3.4.0 进入 cd config/kraft 2.修改server.properties以下属性 vim server.properties 3.我们需要在启动服务器之前创建kafka集群id。执行下列命令

    2024年02月03日
    浏览(14)
  • CentOS7中新版本自带zookeeper搭建Kafka集群

    CentOS7中新版本自带zookeeper搭建Kafka集群

    一、zookeeper在kafka中的具体作用     它是一个分布式协调框架。很好的将消息生产、消息存储、消息消费的过程结合在一起。在典型的Kafka集群中,Kafka通过Zookeeper管理集群控制,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Con

    2024年02月08日
    浏览(28)
  • 【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

    【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

    本文主要介绍了 kafka raft集群架构: 与旧架构的不同点,有哪些优势,哪些问题 架构成员有哪些,怎么规划。 三节点集群安装、启动与测试 在旧的架构中 Kafka集群包含 多个broker节点和一个ZooKeeper 集群 。如上图集群结构:4个broker节点和3个ZooKeeper节点。Kafka 集群的controller在

    2024年02月03日
    浏览(11)
  • 在Windows上搭建Kafka环境的步骤,包括安装Java、下载Kafka、配置Zookeeper和Kafka、启动Zookeeper和Kafka、创建主题和生产者/消费者等

    1. 安装Java Kafka需要Java环境支持。可以从Oracle官网下载JDK,或者使用OpenJDK。 2. 下载Kafka 可以从Kafka官网下载Kafka二进制压缩包。解压后可以看到bin、config、libs等目录。 3. 配置Zookeeper Kafka依赖Zookeeper实现分布式协作。可以使用Kafka自带的Zookeeper,也可以独立安装Zookeeper。 如果使

    2024年02月11日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包