aboutsummaryrefslogtreecommitdiffstats
path: root/charms/trusty/kafka/README.md
blob: 31e8e4f5785c934aa27f7a3d8540d41f87b5cab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
## Overview
Apache Kafka is an open-source message broker project developed by the Apache
Software Foundation written in Scala. The project aims to provide a unified,
high-throughput, low-latency platform for handling real-time data feeds. Learn
more at [kafka.apache.org](http://kafka.apache.org/).


## Usage
Kafka requires the Zookeeper distributed coordination service. Deploy and
relate them as follows:

    juju deploy apache-zookeeper zookeeper
    juju deploy apache-kafka kafka
    juju add-relation kafka zookeeper

Once deployed, we can list the zookeeper servers that our kafka brokers
are connected to. The following will list `<ip>:<port>` information for each
zookeeper unit in the environment (e.g.: `10.0.3.221:2181`).

    juju action do kafka/0 list-zks
    juju action fetch <id>  # <-- id from above command

We can create a Kafka topic with:

    juju action do kafka/0 create-topic topic=<topic_name> \
     partitions=<#> replication=<#>
    juju action fetch <id>  # <-- id from above command

We can list topics with:

    juju action do kafka/0 list-topics
    juju action fetch <id>  # <-- id from above command

We can write to a topic with:

    juju action do kafka/0 write-topic topic=<topic_name> data=<data>
    juju action fetch <id>  # <-- id from above command

We can read from a topic with:

    juju action do kafka/0 read-topic topic=<topic_name> partition=<#>
    juju action fetch <id>  # <-- id from above command

And finally, we can delete a topic with:

    juju action do kafka/0 delete-topic topic=<topic_name>
    juju action fetch <id>  # <-- id from above command

## Deploying in Network-Restricted Environments
This charm can be deployed in environments with limited network access. To
deploy in this environment, you will need a local mirror to serve the packages
and resources required by this charm.

### Mirroring Packages
You can setup a local mirror for apt packages using squid-deb-proxy.
For instructions on configuring juju to use this, see the
[Juju Proxy Documentation](https://juju.ubuntu.com/docs/howto-proxies.html).

### Mirroring Resources
In addition to apt packages, this charm requires a few binary resources
which are normally hosted on Launchpad. If access to Launchpad is not
available, the `jujuresources` library makes it easy to create a mirror
of these resources:

    sudo pip install jujuresources
    juju-resources fetch --all /path/to/resources.yaml -d /tmp/resources
    juju-resources serve -d /tmp/resources

This will fetch all of the resources needed by this charm and serve them via a
simple HTTP server. The output from `juju-resources serve` will give you a
URL that you can set as the `resources_mirror` config option for this charm.
Setting this option will cause all resources required by this charm to be
downloaded from the configured URL.


## Contact Information
- <bigdata-dev@lists.launchpad.net>


## Help
- [Apache Kafka home page](http://kafka.apache.org/)
- [Apache Kafka issue tracker](https://issues.apache.org/jira/browse/KAFKA)
- [Juju mailing list](https://lists.ubuntu.com/mailman/listinfo/juju)
- [Juju community](https://jujucharms.com/community)