软件篇-kafka(五)-集群-kafka集群

1.前置

紧跟上文,还是选择相同的三台机器,操作系统为centos,且三台机器的ip如下:

  • 192.168.80.130
  • 192.168.80.131
  • 192.168.80.132

同时需要将kafka上传到这三台机器上,安装包跟之前讲解单机版安装版本一样

2.安装

  • 解压

    tar -zxvf kafka_2.12-2.8.0.tgz -C /opt/
    
    mv /opt/kafka_2.12-2.8.0/ /opt/kafka
    
    chown -R kafka:kafka /opt/kafka
    

    注意:三台机器都要操作

  • 创建数据目录,用于kafka存储数据

    mkdir -p /var/data/kafka
    
    chown -R kafka:kafka /var/data/kafka
    

    注意:三台机器都要操作

  • 配置

    修改配置文件,vim /opt/kafka/config/server.properties

    # broker id 集群唯一
    broker.id=130
    
    listeners=PLAINTEXT://192.168.80.130:9092
    advertised.listeners=PLAINTEXT://192.168.80.130:9092
    
    
    num.network.threads=3
    
    num.io.threads=8
    
    socket.send.buffer.bytes=102400
    
    
    socket.request.max.bytes=104857600
    
    log.dirs=/var/data/kafka
    
    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
    
    # zookeeper集群地址
    zookeeper.connect=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181
    
    # Timeout in ms for connecting to zookeeper
    zookeeper.connection.timeout.ms=18000
    
    group.initial.rebalance.delay.ms=0
    

    配置文件的内容在之前单机版时已经详细解释过了,这里不再解释

    这是在192.168.80.130机器上的配置,其他机器上也要进行相对应的配置

  • 防火墙

    关闭防火墙或者将端口加入到防火墙里面

    systemctl stop  firewalld
    
    firewall-cmd --add-port 9092/tcp --permanent
    firewall-cmd --reload
    

    注意: 三台机器都要操作

  • 配置环境变量

    vim /etc/profile,在文件末尾追加一下内容

    export KAFKA_HOME=/opt/kafka
    export PATH=$PATH:$KAFKA_HOME/bin
    

    让配置生效

    source /etc/profile
    

    注意:三台都要配置

  • 服务

    /etc/systemd/system新建kafka.service文件

    touch kafka.service
    chmod u+x,o+x,g+x kafka.service
    

    文件内容如下:

    [Unit]
    Description=kafka
    Requires=network.target remote-fs.target
    After=network.target remote-fs.target zookeeper.service
     
    [Service]
    Type=forking
    User=kafka
    Group=kafka
    Environment=JAVA_HOME=/opt/jdk
    ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
    ExecStop=/opt/kafka/bin/kafka-server-stop.sh
    # 启动失败后重启
    Restart=on-failure
    # 每次尝试重启间隔60秒
    StartLimitInterval=60
    # 最终尝试重启3000次
    StartLimitBurst=3000
    [Install]
    WantedBy=multi-user.target
    

    注意三台机器都需要操作

  • 命令

    # 配置生效
    systemctl daemon-reload
    
    # 启动
    systemctl start kafka
    
    # 查看启动状态
    systemctl status kafka
    
    # 查看启动日志
    journalctl -xe
    
    # 关闭
    systemctl stop kafka
    
    # 开启自启动
    systemctl enable kafka
    

3. 监控

kafka集群安装了以后,为了更加方便的管理集群,安装kafka-eagle,对集群信息一目了然,安装细节之前的章节已经介绍了,这里再去安装一次


  • 开启JMX监控

    编辑vim /opt/kafka/bin/kafka-server-start.sh

    在此处添加以下代码

    export JMX_PORT="9999"
    
    image-20210512112200223

    编辑vim /opt/kafka/bin/kafka-run-class.sh

    将此处代码修改为以下内容

    if [ -z "$KAFKA_JMX_OPTS" ]; then
      KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Djava.rmi.server.hostname=192.168.80.110 -Dcom.sun.anagement.jmxremote.local.only=false   -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false "
    fi
    
    image-20210511142335936

    重启kafka

    systemctl restart kafka
    

    注意:三台机器都要配置

  • 安装kafka-eagle

    在一台机器上安装kafka-eagle即可,不需要在所以的机器安装

    笔者这里是在192.168.80.130机器上安装

    解压

    tar xvf kafka-eagle-bin-2.0.0.tar.gz  -C .
    
    cd kafka-eagle-bin-2.0.0
     
    tar -xvf kafka-eagle-web-2.0.0-bin.tar.gz -C /opt/
    
    mv /opt/kafka-eagle-web-2.0.0 /opt/kafka-eagle
    
    chown -R kafka:kafka /opt/kafka-eagle
    

    修改配置文件 vim /opt/kafka-eagle/conf/system-config.properties

    内容如下:

    ######################################
    # multi zookeeper & kafka cluster list
    ######################################
    kafka.eagle.zk.cluster.alias=cluster1
    cluster1.zk.list=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181
    
    ######################################
    # zookeeper enable acl
    ######################################
    cluster1.zk.acl.enable=false
    
    ######################################
    # broker size online list
    ######################################
    cluster1.kafka.eagle.broker.size=20
    
    ######################################
    # zk client thread limit
    ######################################
    kafka.zk.limit.size=25
    
    ######################################
    # kafka eagle webui port
    ######################################
    kafka.eagle.webui.port=8048
    
    ######################################
    # kafka offset storage
    ######################################
    cluster1.kafka.eagle.offset.storage=kafka
    
    ######################################
    # kafka metrics, 15 days by default
    ######################################
    kafka.eagle.metrics.charts=true
    kafka.eagle.metrics.retain=15
    
    
    ######################################
    # kafka sql topic records max
    ######################################
    kafka.eagle.sql.topic.records.max=5000
    kafka.eagle.sql.fix.error=true
    
    ######################################
    # delete kafka topic token
    ######################################
    kafka.eagle.topic.token=keadmin
    
    ######################################
    # kafka sasl authenticate
    ######################################
    cluster1.kafka.eagle.sasl.enable=false
    
    ######################################
    # kafka ssl authenticate
    ######################################
    cluster1.kafka.eagle.ssl.enable=false
    
    ######################################
    # kafka sqlite jdbc driver address
    ######################################
    kafka.eagle.driver=org.sqlite.JDBC
    kafka.eagle.url=jdbc:sqlite:/opt/kafka-eagle/db/ke.db
    kafka.eagle.username=root
    kafka.eagle.password=www.kafka-eagle.org
    

    配置环境变量vim /etc/profile

    一台机器配置即可

    export KE_HOME=/opt/kafka-eagle
    export PATH=$PATH:$KE_HOME/bin
    

    让配置生效

    source /etc/profile
    

    将端口添加到防火墙或者关闭防火墙

    # 关闭防火墙
    systemctl stop firewalld
    
    # 添加端口
    firewall-cmd --add-port=8048/tcp --permanent
    firewall-cmd --reload
    

    创建服务文件vim /etc/systemd/system/kafka-eagle.service,内容如下:

    [Unit]
    Description=Kafka Eagle
    After=kafka.service
    
    [Service]
    Environment=KE_HOME=/opt/kafka-eagle
    Environment=JAVA_HOME=/opt/jdk
    User=kafka
    Group=kafka
    Type=forking
    
    ExecStart=/opt/kafka-eagle/bin/ke.sh start
    ExecReload=/opt/kafka-eagle/bin/ke.sh restart
    ExecStop=/opt/kafka-eagle/bin/ke.sh stop
    
    #启动失败后重启
    Restart=on-failure
    #每次尝试重启间隔60秒
    StartLimitInterval=60
    #最终尝试重启50次
    StartLimitBurst=50
    
    [Install]
    WantedBy=multi-user.target
    

    kafka-eagle命令操作如下

    # 配置生效
    systemctl daemon-reload
    
    # 启动
    systemctl start kafka-eagle
    
    # 查看启动状态
    systemctl status kafka-eagle
    
    # 查看启动日志
    journalctl -xe
    
    # 关闭
    systemctl stop kafka-eagle
    
    # 开启自启动
    systemctl enable kafka-eagle
    

    启动成功后,访问地址192.168.80.130:8048地址,即可看到监控网页

    image-20210512115149301

    账号:admin/123456

    image-20210512115534065

    也可以通过大屏展示监控kafka

    [图片上传失败...(image-53c984-1620823151774)]

    例如我创建了一个test_topic主题,且分区数为3,副本数为3

    image-20210512134113063

    查看该主题即可看到分区分布信息,如下:

    image-20210512134208188

    自此集群搭建完成

4. 安装(docker)

创建目录用来进行数据挂载

mkdir -p /root/kafka/data && chmod 777 /root/kafka/data
mkdir -p /root/kafka/config

当zookeeper集群创建好了以后就可以去创建kafka集群了,具体步骤如下:

192.168.80.130机器上输入以下指令

docker run -di --network=host --privileged=true \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.130:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-v /root/kafka/data:/bitnami/kafka/data \
-v /root/kafka/config:/bitnami/kafka/config \
bitnami/kafka:2.6.0

192.168.80.131机器上输入以下指令

docker run -di --network=host --privileged=true \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=2 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.131:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-v /root/kafka/data:/bitnami/kafka/data \
-v /root/kafka/config:/bitnami/kafka/config \
bitnami/kafka:2.6.0

192.168.80.132机器上输入以下指令

docker run -di --network=host --privileged=true \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=3 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.132:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-v /root/kafka/data:/bitnami/kafka/data \
-v /root/kafka/config:/bitnami/kafka/config \
bitnami/kafka:2.6.0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容