基于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/
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号