• 基于dc/os上搭建kafka开发集群


    1.环境介绍
     
    当前构建的kafka集群IP地址和端口:
    172.19.32.68:9292,172.19.32.69:9292,172.19.32.70:9292
    采用固定ip的方式访问
    当前环境需要组件包含:3个kafka节点、1个KafkaManager、3个zookeeper;
     
    2.集群搭建过程
    2.1首先构建zookeeper集群
    具体参考zookeeper集群构建(已有相应的具体附件);
    2.1 构建kafka集群
    (注意:前提是zookeeper搭建并无误之后,因为kafka依赖于zookeeper)
    kafka集群的构建json脚本,如下所示:
    (1)kafka01
    {
        "env": {
            "HOSTNAME_COMMAND": "ip route | awk '/172.19.32.0/{print $7}'",
            "KAFKA_MESSAGE_MAX_BYTES": "100000000",
            "KAFKA_ADVERTISED_LISTENERS": "PLAINTEXT://_{HOSTNAME_COMMAND}:9292",
            "KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS": "3",
            "KAFKA_LISTENERS": "PLAINTEXT://0.0.0.0:9292",
            "TZ": "Asia/Shanghai",
            "KAFKA_ZOOKEEPER_CONNECT": "cluster-poc-trial-production- zk.marathon.l4lb.thisdcos.directory:21815/trial-kafkacluster",
            "KAFKA_NUM_PARTITIONS": "3",
            "KAFKA_DEFAULT_REPLICATION_FACTOR": "3",
            "KAFKA_BROKER_ID": "0",
            "JMX_PORT": "29998",
            "KAFKA_REPLICA_FETCH_MAX_BYTES": "100000000",
            "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR": "3"
        },
        "id": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/trial-kafkacluster/kafka01",
        "backoffFactor": 1.15,
        "backoffSeconds": 1,
        "constraints": [
            ["hostname", "IS", "172.19.32.68"]
        ],
        "container": {
            "type": "DOCKER",
            "volumes": [{
                "containerPath": "/kafka",
                "hostPath": "/data/poc/trial-production/kafka-cluster/trial-broker-data",
                "mode": "RW"
            }, {
                "containerPath": "/etc/localtime",
                "hostPath": "/etc/localtime",
                "mode": "RO"
            }],
            "docker": {
                "image": "registry.marathon.l4lb.thisdcos.directory:5000/wurstmeister-kafka:2.12-2.2.0",
                "forcePullImage": false,
                "privileged": false,
                "parameters": []
            }
        },
        "cpus": 1,
        "disk": 0,
        "instances": 1,
        "maxLaunchDelaySeconds": 3600,
        "mem": 2048,
        "gpus": 0,
        "networks": [{
            "mode": "host"
        }],
        "portDefinitions": [{
            "labels": {
                "VIP_0": "trial-kafkacluster-kafka01:9292"
            },
            "name": "kafka-endpoint-fct",
            "protocol": "tcp",
            "port": 9292
        }, {
            "labels": {
                "VIP_1": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/trial- kafkacluster/kafka01:29998"
            },
            "name": "kafka-monitor-endpoint1",
            "protocol": "tcp",
            "port": 29998
        }],
        "requirePorts": true,
        "upgradeStrategy": {
            "maximumOverCapacity": 1,
            "minimumHealthCapacity": 1
        },
        "killSelection": "YOUNGEST_FIRST",
        "unreachableStrategy": {
            "inactiveAfterSeconds": 0,
            "expungeAfterSeconds": 0
        },
        "healthChecks": [],
        "fetch": []
    }

    (2)Kafka02

    {
        "env": {
            "HOSTNAME_COMMAND": "ip route | awk '/172.19.32.0/{print $7}'",
            "KAFKA_MESSAGE_MAX_BYTES": "100000000",
            "KAFKA_ADVERTISED_LISTENERS": "PLAINTEXT://_{HOSTNAME_COMMAND}:9292",
            "KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS": "3",
            "KAFKA_LISTENERS": "PLAINTEXT://0.0.0.0:9292",
            "TZ": "Asia/Shanghai",
            "KAFKA_ZOOKEEPER_CONNECT": "cluster-poc-trial-production- zk.marathon.l4lb.thisdcos.directory:21815/trial-kafkacluster",
            "KAFKA_NUM_PARTITIONS": "3",
            "KAFKA_DEFAULT_REPLICATION_FACTOR": "3",
            "KAFKA_BROKER_ID": "1",
            "JMX_PORT": "29998",
            "KAFKA_REPLICA_FETCH_MAX_BYTES": "100000000",
            "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR": "3"
        },
        "id": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/trial-kafkacluster/kafka02",
        "backoffFactor": 1.15,
        "backoffSeconds": 1,
        "constraints": [
            ["hostname", "IS", "172.19.32.69"]
        ],
        "container": {
            "type": "DOCKER",
            "volumes": [{
                "containerPath": "/kafka",
                "hostPath": "/data/poc/trial-production/kafka-cluster/trial-broker-data",
                "mode": "RW"
            }, {
                "containerPath": "/etc/localtime",
                "hostPath": "/etc/localtime",
                "mode": "RO"
            }],
            "docker": {
                "image": "registry.marathon.l4lb.thisdcos.directory:5000/wurstmeister-kafka:2.12-2.2.0",
                "forcePullImage": false,
                "privileged": false,
                "parameters": []
            }
        },
        "cpus": 1,
        "disk": 0,
        "instances": 1,
        "maxLaunchDelaySeconds": 3600,
        "mem": 2048,
        "gpus": 0,
        "networks": [{
            "mode": "host"
        }],
        "portDefinitions": [{
            "labels": {
                "VIP_0": " trial-kafkacluster-kafka02:9292"
            },
            "name": "kafka-endpoint-fct",
            "protocol": "tcp",
            "port": 9292
        }, {
            "labels": {
                "VIP_1": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/trial- kafkacluster/kafka02:29998"
            },
            "name": "kafka-monitor-endpoint1",
            "protocol": "tcp",
            "port": 29998
        }],
        "requirePorts": true,
        "upgradeStrategy": {
            "maximumOverCapacity": 1,
            "minimumHealthCapacity": 1
        },
        "killSelection": "YOUNGEST_FIRST",
        "unreachableStrategy": {
            "inactiveAfterSeconds": 0,
            "expungeAfterSeconds": 0
        },
        "healthChecks": [],
        "fetch": []
    }

    (3)kafka03

    {
        "env": {
            "HOSTNAME_COMMAND": "ip route | awk '/172.19.32.0/{print $7}'",
            "KAFKA_MESSAGE_MAX_BYTES": "100000000",
            "KAFKA_ADVERTISED_LISTENERS": "PLAINTEXT://_{HOSTNAME_COMMAND}:9292",
            "KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS": "3",
            "KAFKA_LISTENERS": "PLAINTEXT://0.0.0.0:9292",
            "TZ": "Asia/Shanghai",
            "KAFKA_ZOOKEEPER_CONNECT": "cluster-poc-trial-production- zk.marathon.l4lb.thisdcos.directory:21815/trial-kafkacluster",
            "KAFKA_NUM_PARTITIONS": "3",
            "KAFKA_DEFAULT_REPLICATION_FACTOR": "3",
            "KAFKA_BROKER_ID": "2",
            "JMX_PORT": "29998",
            "KAFKA_REPLICA_FETCH_MAX_BYTES": "100000000",
            "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR": "3"
        },
        "id": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/trial-kafkacluster/kafka- 03",
        "backoffFactor": 1.15,
        "backoffSeconds": 1,
        "constraints": [
            ["hostname", "IS", "172.19.32.70"]
        ],
        "container": {
            "type": "DOCKER",
            "volumes": [{
                "containerPath": "/kafka",
                "hostPath": "/data/poc/trial-production/kafka-cluster/trial-broker-data",
                "mode": "RW"
            }, {
                "containerPath": "/etc/localtime",
                "hostPath": "/etc/localtime",
                "mode": "RO"
            }],
            "docker": {
                "image": "registry.marathon.l4lb.thisdcos.directory:5000/wurstmeister-kafka:2.12-2.2.0",
                "forcePullImage": false,
                "privileged": false,
                "parameters": []
            }
        },
        "cpus": 1,
        "disk": 0,
        "instances": 1,
        "maxLaunchDelaySeconds": 3600,
        "mem": 2048,
        "gpus": 0,
        "networks": [{
            "mode": "host"
        }],
        "portDefinitions": [{
            "labels": {
                "VIP_0": " trial-kafkacluster-kafka03:9292"
            },
            "name": "kafka-endpoint-fct",
            "protocol": "tcp",
            "port": 9292
        }, {
            "labels": {
                "VIP_1": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/trial- kafkacluster/kafka03:29998"
            },
            "name": "kafka-monitor-endpoint1",
            "protocol": "tcp",
            "port": 29998
        }],
        "requirePorts": true,
        "upgradeStrategy": {
            "maximumOverCapacity": 1,
            "minimumHealthCapacity": 1
        },
        "killSelection": "YOUNGEST_FIRST",
        "unreachableStrategy": {
            "inactiveAfterSeconds": 0,
            "expungeAfterSeconds": 0
        },
        "healthChecks": [],
        "fetch": []
    }
    2.3搭建kafkaManger
    kafkaManger提供管理、查看kafka的topic的信息等功能;代替了shell界面命令行,提供了便捷的可视化操作。
    {
        "env": {
            "KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS": "3",
            "ZK_HOSTS": "cluster-poc-trial-production-zk.marathon.l4lb.thisdcos.directory:21815",
            "KAFKA_MANAGER_USERNAME": "admin",
            "KAFKA_MANAGER_PASSWORD": "123456",
            "KAFKA_DEFAULT_REPLICATION_FACTOR": "3",
            "KAFKA_MANAGER_AUTH_ENABLED": "true",
            "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR": "3"
        },
        "id": "/cms-poc/trial-production/components/msg-queue/nodes-kafka/kafka-manager",
        "backoffFactor": 1.15,
        "backoffSeconds": 1,
        "constraints": [
            ["hostname", "IS", "172.19.32.68"]
        ],
        "container": {
            "portMappings": [{
                "containerPort": 9000,
                "hostPort": 9082,
                "protocol": "tcp",
                "servicePort": 10102
            }],
            "type": "DOCKER",
            "volumes": [],
            "docker": {
                "image": "registry.marathon.l4lb.thisdcos.directory:5000/hlebalbau-kafka-manager:2.0.0.2",
                "forcePullImage": false,
                "privileged": false,
                "parameters": []
            }
        },
        "cpus": 1,
        "disk": 0,
        "instances": 1,
        "maxLaunchDelaySeconds": 3600,
        "mem": 1024,
        "gpus": 0,
        "networks": [{
            "mode": "container/bridge"
        }],
    
        "requirePorts": false,
        "upgradeStrategy": {
            "maximumOverCapacity": 1,
            "minimumHealthCapacity": 1
        },
        "killSelection": "YOUNGEST_FIRST",
        "unreachableStrategy": {
            "inactiveAfterSeconds": 0,
            "expungeAfterSeconds": 0
        },
        "healthChecks": [],
        "fetch": []
    }
    注意事项:此处修改同步修改kafkaManager的链接zookeeper的服务目录地址;
    具体来说,环境变量需要修改对应的zookeeper地址;
    "ZK_HOSTS": "cluster-poc-trial-production-zk.marathon.l4lb.thisdcos.directory:21815",
    3.使用kafkaManager可视化UI管理kafka集群
    访问地址: http://172.19.32.68:9082/
      
  • 相关阅读:
    我眼中的SCRUM
    文本转换程序
    免费接口
    看板,敏捷的另一种实现方式
    Android Asynchronous Http Client-Android异步网络请求客户端接口
    hdu4753 Fishhead’s Little Game 状态压缩,总和一定的博弈
    dbcp、c3p0、jdbc常用连接配置
    IE安全分析
    redis入侵小结
    heartbleed漏洞利用
  • 原文地址:https://www.cnblogs.com/crdhm12040605/p/15003835.html
Copyright © 2020-2023  润新知