详解使用docker搭建kafka环境

Requirements

最近学习了下kafka,为方便搭建环境,使用docker进行部署。

需要首先安装docker的环境。要求操作系统是linux的64位系统。

docker的安装(适于rpm/deb安装):

curl -fsSL https://get.docker.com/ | sh

docker-compose的安装:

curl -L https://github.com/docker/compose/releases/download/1.7.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Kafka Image

Dockerfile

Dockerfile是用于描述镜像的制作过程。根据kafka的教程,编写对应的Dockerfile。

基础镜像使用了centos6的版本,当然根据需要也可以使用其他的版本。

FROM index.alauda.cn/tutum/centos:centos6
RUN yum install -y wget
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm
RUN rpm -ivh jdk-8u91-linux-x64.rpm
RUN mkdir -p /kafka && cd /kafka && wget http://mirrors.cnnic.cn/apache/kafka/0.9.0.0/kafka_2.11-0.9.0.0.tgz && tar -xzf kafka_2.11-0.9.0.0.tgz && cd kafka_2.11-0.9.0.0
WORKDIR /kafka/kafka_2.11-0.9.0.0

有了这样的一个Dockerfile,可以在本地,也可以使用公有云进行镜像制作。在本地制作的话,可以使用该命令:

docker build -t index.alauda.cn/xuxinkun/kafka .

我使用了灵雀云的镜像服务进行build。

Docker-Compose

有了镜像之后,现在需要对服务进行启动。这里使用了docker的编排服务docker-compose,进行编排。

kafka主要包括两个服务,zookeeper和kafka。所以需要分别启动两个服务。这里将两个服务直接使用宿主机的网络。编写docker-compose.yaml如下:

zk:
 image: index.alauda.cn/xuxinkun/kafka
 net: host
 stdin_open: true
 tty: true
 command: bin/zookeeper-server-start.sh config/zookeeper.properties
kafka:
 image: index.alauda.cn/xuxinkun/kafka
 net: host
 stdin_open: true
 tty: true
 command: bin/kafka-server-start.sh config/server.properties

启动服务

现在可以一条命令启动所有的服务:

[root@node1 Dockerfile]# docker-compose up -d
Creating dockerfile_kafka_1
Creating dockerfile_zk_1

查看服务状态

对服务状态进行查看。

[root@node1 Dockerfile]# docker-compose ps
    Name            Command        State  Ports
----------------------------------------------------------------------
dockerfile_kafka_1   bin/kafka-server-start.sh ...  Up
dockerfile_zk_1     bin/zookeeper-server-start ...  Up 

当然也可以使用docker ps -a进行查看。

停止服务

[root@node1 Dockerfile]# docker-compose stop zk kafka
Stopping dockerfile_kafka_1 ... done
Stopping dockerfile_zk_1 ... done

删除服务

[root@node1 Dockerfile]# docker-compose rm zk kafka

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2017-03-24

Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境

秒杀活动可以说在互联网上随处可见,从12306抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影.秒杀的架构设计也是对于一个架构师架构设计能力的一次考验.本文的目的并不在于提供一个可以直接落地的设计方案,而是意在提供一个简单的方法,一个思路,使大家能够对于秒杀背后的一些设计有更感性的认识, 并且可以自己亲自动手实践一下.所有的配置及源码都在本文最后的GitHub repository中可以找到. 首先,先简单介绍下本文中会涉及到的一些组件,如下图所示: JMeter:用JMeter来模拟

Apache+PHP+MySQL搭建PHP开发环境图文教程

简介:总结在Windows环境搭建PHP开发环境(Apache+PHP+MySQL) 安装Apache 1.下载Apache,地址:http://www.apachelounge.com/download/,如下图: 2.解压压缩包,最好放到磁盘根目录,不然配置时容易报路径错误,我这里改了文件夹名,方便以后配置,如下图: 安装PHP 1.下载PHP压缩包,地址:https://windows.php.net/download,我下载的是PHP7.0 Thread Safe 版本,如下图: 2.解

基于redis分布式锁实现秒杀功能

最近在项目中遇到了类似"秒杀"的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓"秒杀"的基本思路. 业务场景 所谓秒杀,从业务角度看,是短时间内多个用户"争抢"资源,这里的资源在大部分秒杀场景里是商品:将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确. 一些可能的实现 刚才提到过,实现秒杀的关键点是控制线程对资源的争抢,根据基本的线程知识,可

Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)

Ubuntu 搭建基于Docker的LNMP+Redis的开发环境 服务器环境:Ubuntu 14.04 1.安装Docker 1.1 执行update命令,和服务器同步软件包,执行apt-get install * 时可以下载最新的软件. 1.2 安装Docker和创建软链接   1.3 启用Docker服务 2. 获取搭建环境所需镜像 2.1 MySQL镜像 2.2 Redis镜像   2.3 nginx-php-fpm镜像 2.4 查看已下载的镜像 对于Docker初学者来说,可以使用现有

Docker搭建简单的应用栈与容器Hello World访问详解

本文实例讲述了Docker搭建简单的应用栈与容器Hello World访问.分享给大家供大家参考,具体如下: 这里参考<Docker容器和容器云> 2.3.2章节应用栈搭建过程,对原书中出现的问题 -镜像不断的更新导致- 做了修改,特此说明. 系统环境 操作系统版本 $ cat /etc/issue Debian GNU/Linux 8 \n \l 内核版本 $ uname -r 3.16.0-4-amd64 Docker版本 docker version Client: Version: 1

Nodejs 搭建简单的Web服务器详解及实例

使用 Nodejs 搭建简单的Web服务器 使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向问题,下面我们就简单讲一下如何来搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容

搭建简单的nodejs http服务器详解

搭建简单的nodejs服务器 通过一些简单配置我们就可以搭建一台基于nodejs的http服务器 通过switch配置url路由的方法 // 这是一个简单的Node HTTP服务器,能处理当前目录的文件 // 并能实现两种特殊的URL用于测试 // 用HTTP://localhost:8000或http://127.0.0.1:8000连接这个服务器 // 首先加载所有需要用到的模块 var http = require('http'); // 加载http服务api模块 var fs = re

nodejs连接mysql数据库简单封装示例-mysql模块

本人最近在学习研究nodejs,下面我来记录一下,有需要了解nodejs连接mysql数据库简单封装的朋友可参考.希望此文章对各位有所帮助. 安装mysql模块 npm install mysql 测试是否连接成功 mysql.js代码: var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', da

springboot集成redis实现简单秒杀系统

本文实例为大家分享了springboot集成redis实现简单秒杀系统的具体代码,供大家参考,具体内容如下 项目是有地址的,我会放到文章的最后面 1. 直接service,我们会介绍两种秒杀模式 public interface GoodsService { /** * 通过lua脚本实现的秒杀 * @param skuCode 商品编码 * @param buyNum 购买数量 * @return 购买数量 */ Long flashSellByLuaScript(String skuCode

一文教你如何通过 Docker 快速搭建各种测试环境

今天给大家分享的主题是,如何通过 Docker 快速搭建各种测试环境,本文列举的,也是作者在工作中经常用到的,其中包括 MySQL.Redis.Elasticsearch.MongoDB 安装步骤,通过几行命令秒秒钟就能轻松搞定. 友情提示:搭建之前,你需要先安装 Docker 哟,本文基于您已经安装好 Docker 的基础上!如果你想和更多Docker技术专家交流,可以加我微信liyingjiese,备注『加群』.群里每周都有全球各大公司的最佳实践以及行业最新动态. 废话少说,正文开始! 一.