Kafka
类型: 单角色节点、带应用参数设置
该示例根据应用模版规范开发 Kafka 应用的配置包
config.json
{
"type": "array",
"properties": [{
"key": "cluster",
"description": "Kafka cluster properties",
"type": "array",
"properties": [{
"key": "name",
"label": "Name",
"description": "The name of the Kafka service",
"type": "string",
"default": "Kafka",
"required": "no"
}, {
"key": "description",
"label": "Description",
"description": "The description of the Kafka service",
"type": "string",
"default": "",
"required": "no"
}, {
"key": "vxnet",
"label": "VxNet",
"description": "Choose a vxnet to join",
"type": "string",
"default": "",
"required": "yes"
}, {
"key": "zk_service",
"label": "ZooKeeper",
"description": "Choose a ZooKeeper to use",
"type": "service",
"tag": ["ZK", "ZooKeeper"],
"default": "",
"required": "yes"
}, {
"key": "nodes",
"description": "Kafka nodes",
"type": "array",
"properties": [{
"key": "cpu",
"label": "CPU",
"description": "CPUs of each node",
"type": "integer",
"default": 1,
"range": [1, 2, 4, 8, 12, 16],
"required": "yes"
}, {
"key": "memory",
"label": "Memory",
"description": "Memory of each node (in MiB)",
"type": "integer",
"default": 2048,
"range": [1024, 2048, 4096, 8192, 16384, 32768],
"required": "yes"
}, {
"key": "count",
"label": "Count",
"description": "Number of nodes for the cluster to create",
"type": "integer",
"default": 3,
"range": [1, 3, 5, 7, 9],
"required": "yes"
}, {
"key": "instance_class",
"label": "Instance Class",
"description": "The instance type for the cluster to run, such as high performance, high performance plus",
"type": "integer",
"default": 0,
"range": [0, 1],
"required": "yes"
}, {
"key": "volume_size",
"label": "Volume Size",
"description": "The volume size for each instance",
"type": "integer",
"default": 10,
"required": "yes"
}]
}]
}, {
"key": "env",
"description": "Kafka service properties",
"type": "array",
"properties": [{
"key": "log_retention_bytes",
"label": "log.retention.bytes",
"description": "The maximum size of the log before deleting it",
"type": "integer",
"default": 9663676416,
"required": "yes"
}, {
"key": "log_retention_hours",
"label": "log.retention.hours",
"description": "The number of hours to keep a log file before deleting it (in hours)",
"type": "integer",
"default": 168,
"required": "yes"
}, {
"key": "auto_create_topics_enable",
"label": "auto.create.topics.enable",
"description": "Enable auto creation of topic on the server",
"type": "boolean",
"default": true,
"required": "yes"
}, {
"key": "default_replication_factor",
"label": "default.replication.factor",
"description": "default replication factors for automatically created topics",
"type": "integer",
"default": 1,
"required": "yes"
}, {
"key": "delete_topic_enable",
"label": "delete.topic.enable",
"description": "default replication factors for automatically created topics",
"type": "boolean",
"default": true,
"required": "yes"
}, {
"key": "message_max_bytes",
"label": "message.max.bytes",
"description": "This is largest message size Kafka will allow to be appended to this topic.",
"type": "integer",
"default": 1000000,
"required": "yes"
}, {
"key": "num_io_threads",
"label": "num.io.threads",
"description": "The number of io threads that the server uses for carrying out network requests.",
"type": "integer",
"default": 8,
"required": "yes"
}, {
"key": "num_partitions",
"label": "num.partitions",
"description": "The default number of log partitions per topic.",
"type": "integer",
"default": 1,
"required": "yes"
}, {
"key": "num_replica_fetchers",
"label": "num.replica.fetchers",
"description": "Number of fetcher threads used to replicate messages from a source broker.",
"type": "integer",
"default": 1,
"required": "yes"
}, {
"key": "queued_max_requests",
"label": "queued.max.requests",
"description": "The number of queued requests allowed before blocking the network threads.",
"type": "integer",
"default": 500,
"required": "yes"
}, {
"key": "socket_receive_buffer_bytes",
"label": "socket.receive.buffer.bytes",
"description": "The SO_RCVBUF buffer of the socket sever sockets.",
"type": "integer",
"default": 102400,
"required": "yes"
}, {
"key": "socket_send_buffer_bytes",
"label": "socket.send.buffer.bytes",
"description": "The SO_RCVBUF buffer of the socket sever sockets.",
"type": "integer",
"default": 102400,
"required": "yes"
}, {
"key": "advertised_host_name",
"label": "advertised.host.name",
"description": "This is the hostname that will be given out to other workers to connect to.",
"type": "string",
"default": "",
"required": "no"
}, {
"key": "advertised_port",
"label": "advertised.port",
"description": "This is the port that will be given out to other workers to connect to.",
"type": "integer",
"default": 9092,
"required": "yes"
}]
}]
}
cluster.json.mustache
{
"name": {{cluster.name}},
"description": {{cluster.description}},
"vxnet": {{cluster.vxnet}},
"links": {
"zk_service": {{cluster.zk_service}}
},
"nodes": [{
"container": {
"zone": "sh1a",
"type": "kvm",
"image": "img-kafka821"
},
"instance_class": {{cluster.nodes.instance_class}},
"count": {{cluster.nodes.count}},
"cpu": {{cluster.nodes.cpu}},
"memory": {{cluster.nodes.memory}},
"volume": {
"size": {{cluster.nodes.volume_size}},
"mount_point": "/data",
"filesystem": "xfs"
},
"services": {
"start": {
"cmd": "/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties"
},
"stop": {
"cmd": "/opt/kafka/bin/kafka-server-stop.sh"
}
}
}],
"env": {
"log.retention.bytes": {{env.log_retention_bytes}},
"log.retention.hours": {{env.log_retention_hours}},
"auto.create.topics.enable": {{env.auto_create_topics_enable}},
"default.replication.factor": {{env.default_replication_factor}},
"delete.topic.enable": {{env.delete_topic_enable}},
"message.max.bytes": {{env.message_max_bytes}},
"num.io.threads": {{env.num_io_threads}},
"num.partitions": {{env.num_partitions}},
"num.replica.fetchers": {{env.num_replica_fetchers}},
"queued.max.requests": {{env.queued_max_requests}},
"socket.receive.buffer.bytes": {{env.socket_receive_buffer_bytes}},
"socket.send.buffer.bytes": {{env.socket_send_buffer_bytes}},
"advertised.host.name": {{env.advertised_host_name}},
"advertised.port": {{env.advertised_port}}
},
"advanced_actions": ["change_vxnet", "scale_horizontal"],
"endpoints": {
"client": {
"port": "env.advertised.port",
"protocol": "tcp"
}
}
}