Docker极简部署Kafka+Zookeeper+ElasticStack
之前写ELK部分时有朋友问有没有能一键部署的Kafka+ELK,写本文主要是填这个坑,基本上配置已经集中在一两个文件中了,理论上此配置支持ElasticStack 7.x所有版本
本文所有配置与代码均在本人Github中可以找到:https://github.com/hellxz/QuickDeployElasticStack
测试环境
- Ubuntu 18.04 LTS
- Docker 18.09.7
- docker-compose 1.24.0
- 主机IP:192.168.87.139
- ElasticStack 7.5.2
端口号占用表
| 服务名称 | 默认端口号 |
|---|---|
| elasticsearch | 9200 |
| logstash | 9600 |
| kibana | 5601 |
| zookeeper | 2181 |
| kafka | 9090 |
| kafka-manager | 9001(防止与cerebro冲突) |
以上端口号本来想再提供自定义配置到
.env文件中的,有过度设计的嫌疑,所以就不放上去了
部署ElasticStack的主机的配置
为ES修改内存限制
$ sudo vim /etc/security/limits.conf
#添加如下内容并保存退出
* soft memlock unlimited
* hard memlock unlimited
修改系统限制文件打开数、线程数等
$ sudo vim /etc/systemd/system.conf
#最下方添加,参数值可以更大些
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
重启主机 或 执行命令:systemctl daemon-reexec
修改vm.map计数的操作系统限制 并 禁用swap
$ sudo vim /etc/sysctl.conf
#添加如下内容,如有配置,请修改
vm.max_map_count=262144
vm.swappiness=0
#保存退出
$ sudo sysctl -p
#立即永久生效
有兴趣的可以写Shell脚本自动配置,本人觉得这些配置最好还是对系统管理员或部署人员可见为好
Clone 仓库到本地
git clone https://github.com/hellxz/QuickDeployElasticStack.git
cd QuickDeployElasticStack
文件结构如下
.
├── docker-compose.yml
├── .env
├── logstash-pipeline
│ └── logstash.conf
└── README.md
修改配置文件.env
按需修改.env文件
#docker-compose.yml引用变量,便于单机部署ElasticStack
#Author: Hellxz
#=========================== 宿主机 配置项 ===================================
#宿主机ip
LOCALHOST_IP=192.168.87.139
#=========================== ElasticStack 共用配置 ===========================
#ELK Docker镜像版本号
ELASTIC_STACK_VERSION=7.5.2
#=========================== Elasticsearch 配置项 ============================
#Elastsearch JVM设置, Xms与Xmx保持相同,最大不要超过32G
ES_JVM_OPTS=-Xms8g -Xmx8g
#Elastsearch数据持载目录与日志目录,需要映射到主机上
ES_DATA_DIR=/data/elk/es-data
ES_LOGS_DIR=/data/elk/es-logs
#=========================== Logstash 配置项 =================================
#Logstash 流水线工作线程数
LOGSTASH_PIPELINE_WORKERS=5
#Logstash JVM设置
LS_JAVA_OPTS=-Xms4g -Xmx4g
#=========================== Kafka 配置项 ====================================
#Kafka主机名
#外部访问kafka时,只需将客户端主机hosts添加Kafka宿主机ip与此主机名的映射
#例如,"10.2.6.63 kafka1"
KAFKA_HOSTNAME=kafka1
#Kafka数据目录
KAFKA_DATA_DIR=/data/elk/kafka-data
#Kafka JVM设置
KAFKA_JVM_OPTS=-Xms4g -Xmx4g
#Kafka启动时创建的Topics
#格式为"topic名称:分区数:副本数[:清理策略]", 多个topic以','分开
KAFKA_BOOTSTRAP_CREATE_TOPICS=logsTopic:5:1:compact
#=========================== KafkaManager 配置项 =============================
#自定义KafkaManager端口号
KAFKA_MANAGER_PORT=9001
#============================ 自定义参数 =====================================
修改logstash-pipeline/logstash.conf
input {
kafka {
bootstrap_servers => "kafka1:9090" #替换为kafka映射hosts名称
topics => ["logsTopic"]
consumer_threads => 3
group_id => "logstash"
decorate_events => true
codec => json
}
}
filter {
#这里留给大家自由发挥
}
output {
elasticsearch {
hosts => ["192.168.87.139:9200"] #es地址
index => "logs-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
stdout {
codec => rubydebug
}
}
快速部署
配置完前边的部分后,只需要在docker-compose.yml的文件夹下执行一行命令即可启动
docker-compose up -d
部署后修改配置
部署后修改配置的问题再所难免,处理也较简单
修改 docker-compose.yml 的话,执行部署命令会检测变更
docker-compose up -d
非上述文件的话,需要判断变动配置会影响哪些容器,如:
Kafka依赖Zookeeper
Logstash依赖Es与Kafka
Kibana依赖Es
分别按依赖关系重启容器即可(被依赖的如果变动需要先重启)不被依赖的直接重启
docker restart 容器ID或Name
后续
本文源码直接去Github上看吧,技术含量不高,主要是为了方便大家部署ELK
最后,如果本文对你有帮助,欢迎推荐、评论,转载请注明出处。
源码地址:https://github.com/hellxz/QuickDeployElasticStack
Docker极简部署Kafka+Zookeeper+ElasticStack的更多相关文章
- .Net Core in Docker极简入门(下篇)
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 Docker-Compose 代码修改 yml file up & down 镜像仓库 最后 前言 上一篇[. ...
- 小白的docker极简入门(二)、5分钟教你玩转docker安装
0-前言 上一篇中,我们已经安装后Linux了,我们需要在Linux下安装docker,然后才能在docker中安装和部署各种应用 同样,5分钟教你完成docker正确安装和使用, 不是纸上谈兵,不是 ...
- .Net Core in Docker极简入门(上篇)
目录 前言 开始 环境准备 Docker基础概念 Docker基础命令 Docker命令实践 构建Docker镜像 Dockerfile bulid & run 前言 Docker 是一个开源 ...
- Docker极简入门:使用Docker运行Java程序
运行简单的Java程序 先在当前目录创建App.java文件 public class App{ public static void main(String[] args){ String os = ...
- Docker极简入门:使用Docker-Compose 运行网站浏览量统计Demo
Docker-Compose 是一个可以对 Docker 容器集群的快速编排的工具,能够减轻您心智和手指的负担. 简单的来说 Docker-Compose 就是将你运行多个容器的命令编写到了一起,类似 ...
- Docker极简入门:使用Docker-Compose 搭建redis集群
为了构建一个集群,我们首先要让 redis 启用集群模式 一个简单的配置文件如下redis.conf # redis.conf file port 6379 cluster-enabled yes c ...
- 在Docker环境下部署Kafka
参考:https://blog.csdn.net/u011537073/article/details/70767064
- asp.net core 发布到docker 极简步骤
1.使用dotnet命令发布项目 2.把发布成功的文件通过scp等工具发布到linux服务器上,在当前目录下新建一个dockerfile 3.使用asp.net core镜像为底包构建一个新的镜像 4 ...
- 转 docker 部署 kafka
原文链接 http://blog.csdn.net/snowcity1231/article/details/54946857 -e KAFKA_BROKER_ID=1 -e ZK=zk -p 909 ...
随机推荐
- 阿里云系统安装部署Freeswitch
1.安装vim apt-get install vim 2.修改镜像源 将/etc/apt/source.list的原有源注释掉,添加下面的源: deb http://mirrors.163.com/ ...
- 使用Spring AOP 实现日志管理(简单教程)
有时候,我们在做项目时会遇到这样的需求: 给XXX.java中的所有方法加上指定格式的日志输出. 针对这种指定类.或者指定方法进行共性操作的功能,我们完全可以使用Spring AOP来实现. 本文使用 ...
- python自动化测试之函数(匿名函数lambda和三目运算等(高级用法))
''' 匿名函数: lambda ''' def Add(a,b): print(a+b) Add(2,3) per = lambda a,b:a+b print(per(2,3)) ''' 三目运算 ...
- Data Binding on Android
Data Binbing框架是在2015年Google I/O大会上最早提出来的,一直在Android开发者中热议,但是很少有真正在项目中用到.本文简单介绍Data Binding框架的简单用法以及其 ...
- Servlet.service() for servlet [appServlet] in context with path [/item] threw exception [Request processing failed
以前犯过的一个小错误,不过忘记怎么修改了,所以还是记录下来好一点 严重: Servlet.service() for servlet [appServlet] in context with path ...
- cas单点登录打包时下载慢!
环境:win10 百度网盘下载 版本: cas-overlay-template-5.3 提取码 d1b6 添加阿里的到pom.xml 注意添加到第一列 <!--阿里云仓库--& ...
- mysql关系型数据库
参考:https://www.cnblogs.com/alex3714/articles/5950372.html 关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数 ...
- Linux IO多路复用
监听文件描述符的状态来进行相应的读写操作,3个函数: 123 selectpollepoll 123456789 int (int nfds, fd_set *readfds, fd_set *wri ...
- react ReactDOMServer
此文章是翻译ReactDOMServer这篇React(版本v15.4.0)官方文档. ReactDOMServer 如果你用script 标签来使用React,这些顶级APIs 将会在全局React ...
- TDA2050功率放大器研究
音频功率放大模块(以下简称功放)用于处理模拟信号,将功率较低的输入信号进行线性放大,输出大功率的信号以驱动换能器.通常,电子发烧友自己设计功放,与各类音源和喇叭匹配,以得到满意的音响效果.在测试中,实 ...