Support #891
Updated by Daniel Curtis over 7 years ago
This is a guide for setting up Apache Kafka on FreeBSD 10. h2. Prepare the Environment * Make sure the system is up to date: <pre> pkg update && pkg upgrade </pre> * Install a few dependencies: <pre> pkg install bash git gradle openjdk7 </pre> * Create a symlink of bash: <pre> ln -s /usr/local/bin/bash /bin/bash </pre> * Install Zookeeper and ensure its running, refer to issue #890 <pre> service zookeeper start </pre> * Download Kafka from GitHub: <pre> git clone https://github.com/apache/kafka.git /usr/local/kafka </pre> * Bootstrap Kafka: <pre> cd /usr/local/kafka gradle </pre> * Build the Kafka jar: <pre> ./gradlew jar </pre> * Create log file directory for Kafka: <pre> mkdir /var/log/kafka </pre> * Edit the Kafka config: <pre> vi /usr/local/kafka/config/server.properties </pre> #* And modify the following parameters: <pre> # The id of the broker. This must be set to a unique integer for each broker. broker.id=1 # Increase the message size limit message.max.bytes=20000000 replica.fetch.max.bytes=30000000 log.dirs=/var/log/kafka listeners=PLAINTEXT://192.168.1.104:9092 zookeeper.connect=localhost:2181 #zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181 </pre> * Test start the Kafka server: <pre> /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties </pre> #* Once finished testing press CTRL+C to stop the kafka server. h3. Init Script System service * Install supervisor: <pre> pkg install py27-supervisor </pre> * Create a kafka init script: supervisor config directory: <pre> vi /usr/local/etc/rc.d/kafka mkdir /usr/local/etc/supervisord.conf.d </pre> * Add a folder inclusion statement: #* And add the following: <pre> #!/bin/sh echo '[include]' >> /usr/local/etc/supervisord.conf # echo 'files = supervisord.conf.d/*.ini' >> /usr/local/etc/supervisord.conf # PROVIDE: </pre> * Create a kafka supervisord config: # REQUIRE: zookeeper LOGIN <pre> # vi /usr/local/etc/supervisord.conf.d/kafka.ini # Add </pre> #* And add the following lines to /etc/rc.conf to enable odoo server following: # <pre> # [program:kafka] # kafka_enable (bool): Set to "NO" by default, directory=/usr/local/kafka # Set it to "YES" to enable odoo server # # kafka_config (str): The path to the kafka server configuration file # (defaults to /usr/local/kafka/config/server.properties) . /etc/rc.subr name=kafka command=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties rcvar=kafka_enable load_rc_config $name kafka_enable="${kafka_enable-"NO"}" kafka_config="${kafka_config-"/usr/local/kafka/config/server.properties"}" kafka_user="${kafka_user-"root"}" kafka_flags="${kafka-"${kafka_config}"}" # /etc/rc.subr use $pidfile (not ${name}_pidfile) autostart=true pidfile="${kafka_pidfile}" required_files="${kafka_config}" start_cmd="su - ${kafka_user} -c '${command} ${kafka_flags}' &" stop_cmd="${name}_stop" status_cmd="${name}_status" getval_cmd="${name}_getval" kafka_stop() autorestart=true { kafka_pid=$(pgrep -f "kafka") echo "Stopping ${name}." kill -s TERM "$(cat "${kafka_pid}")" } kafka_status() startsecs=6 { kafka_pid=$(pgrep -f "kafka") if [ -n "${kafka_pid}" ] then echo "${name} running with pid: $kafka_pid" else echo "${name} not running? (pid not found)" fi startretries=20 } command_args=" >/dev/null 2>&1 &" load_rc_config $name run_rc_command "$1" </pre> * Make the script executable: <pre> chmod +x /usr/local/etc/rc.d/kafka </pre> * Start and enable kafka supervisord at boot: <pre> echo 'kafka_enable="YES"' 'supervisord_enable="YES"' >> /etc/rc.conf service kafka supervisord start </pre> * Run the supervisord control prompt: <pre> supervisorctl </pre> #* h2. Resources * https://github.com/apache/kafka * http://kafka.apache.org/documentation.html#quickstart * https://github.com/btccom/btcpool/blob/master/docs/INSTALL-Kafka.md *https://github.com/btccom/btcpool/blob/master/docs/INSTALL-Kafka.md