使用 docker 进行 ElasticSearch + Kibana 集群搭建
在Docker容器中运行Elasticsearch Kibana和Cerebro
机器信息
10.160.13.139
10.160.9.162
10.160.11.171
1. 安装docker和docker compose
安装docker
# 安装 docker 社区版
yum -y install docker-ce docker-ce-cli containerd.io
# 启动 Docker
systemctl start docker
# 查看 docker 版本
docker version
# 开机启动 Docker
systemctl enable docker
安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` \
> /usr/local/bin/docker-compose
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose --version
docker-compose version 1.27.4, build 40524192
2. 下载镜像
docker pull elasticsearch:7.10.1
docker pull kibana:7.10.1
3. 将 kibana 上传到私有harbor
[@master software]# docker images |grep kibana
kibana 7.10.1 3e014820ee3f 3 weeks ago 992MB
[@master software]# docker tag 3e014820ee3f www.test.com/elk/kibana:7.10.1
[@master software]# docker login www.test.com
Username: song
Password:
Login Succeeded
[@master software]# docker push www.test.com/elk/kibana:7.10.1
The push refers to repository [www.test.com/elk/kibana]
00cfe116c0b3: Pushed
20889a7593bc: Pushed
d1409dea493d: Pushed
3448a6e61306: Pushed
f3a4630cb1b0: Pushed
0e3f51adbdfe: Pushed
7bb6eb357f15: Pushed
0263a48f9a3a: Pushed
5acb536ef82f: Pushed
58d51bd5abeb: Pushed
e116279745ca: Pushed
cc33c1bea858: Pushed
5ec5e9c8cf6f: Pushed
291f6e44771a: Pushed
7.10.1: digest: sha256:1731793b7f3e453c65ebaf92ec0b55f4029310ba8abae9e04753a4680dd8210b size: 3247
[@master software]#
4. 将 elasticsearch 上传到私有harbor
[@master software]# docker images |grep elastic
elasticsearch 7.10.1 558380375f1a 3 weeks ago 774MB
[@master software]# docker tag 558380375f1a www.test.com/elk/elasticsearch:7.10.1
[@master software]# docker push www.test.com/elk/elasticsearch:7.10.1
The push refers to repository [www.test.com/elk/elasticsearch]
d6208dd58075: Pushed
9117213e7470: Pushed
b662ef6f4fc1: Pushed
3f481e912123: Pushed
b456348ecd84: Pushed
e2834bada95f: Pushed
8f84abff69b8: Pushed
911490c8ab00: Pushed
291f6e44771a: Mounted from elk/kibana
7.10.1: digest: sha256:e9a1fe65f68b2d2b9583287d1190f67f23af08582eac4d2a8dc342e4219c7306 size: 2202
[@master software]#
5 .操作系统优化
操作系统以及JVM调优主要是针对安装elasticsearch的机器。对于操作系统,需要调整几个内核参数
vim /etc/sysctl.conf
# fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高
fs.file-max=655360
# vm.max_map_count影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小
# 系统默认是65530,建议修改成262144或者更高。
vm.max_map_count = 262144
sysctl -p
sysctl -a
另外,还需要调整进程最大打开文件描述符(nofile)、最大用户进程数(nproc)和最大锁定内存地址空间(memlock),
vim /etc/security/limits.conf
* soft nproc 20480
* hard nproc 20480
* soft nofile 65536
* hard nofile 65536
* soft memlock unlimited
* hard memlock unlimited
# 备注: * 代表Linux所有用户名称(比如es),保存,退出,重新登录才可生效
# 查看
ulimit -a
最后,还需要修改
# /etc/security/limits.d/90-nproc.conf(centos6.x系统)
# /etc/security/limits.d/20-nproc.conf(centos7.x系统)
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 4096
# 修改为:
* soft nproc 20480
或者直接删除/etc/security/limits.d/20-nproc.conf文件也行。
6. JVM调优
JVM调优主要是针对elasticsearch的JVM内存资源进行优化,elasticsearch的内存资源配置文件为jvm.options,7.1下载的默认设置是1GB
从ES 6开始,只支持64位的JVM(配置config/jvm.options)
配置的建议
- 将内存Xms和Xmx设置成一样,避免heap resize时引发停顿
- Xmx设置不要超过物理内存的50%,单个节点上,最大内存建议不要超过32G内存
- 生产环境,JVM必须使用Server模式
- 关闭JVM Swapping
vim /usr/local/elasticsearch/config/jvm.options
-Xms30g
-Xmx30g
7. 安装 elasticsearch
你可以先新建一个 elasticsearch 文件夹。然后在这个文件夹中,新建一个 docker-compose.yml 文件。
运行docker-compose,本地构建更高效的开发环境,更直观地了解 Elasticsearch 分布式特性
集成Cerebro,方便查看集群状态
mkdir -p /search/odin/elasticsearch/{data01,data02,data03}
mkdir -p /Users/song/study/elasticsearch/plugins/ik
# ES_JAVA_OPTS="-Xms64m -Xmx512m" 内存限制,最小64m,最大512m,可根据需要自行调整,除此之外其他的配置不用做修改
cat /search/odin/elasticsearch/docker-compose.yml
version: '2.2'
services:
cerebro:
image: lmenezes/cerebro:0.8.3
container_name: cerebro
ports:
- "9000:9000"
command:
- -Dhosts.0.host=http://elasticsearch:9200
networks:
- elastic
kibana:
image: kibana:7.10.1
container_name: kibana7
environment:
- I18N_LOCALE=zh-CN
- XPACK_GRAPH_ENABLED=true
- TIMELION_ENABLED=true
- XPACK_MONITORING_COLLECTION_ENABLED="true"
ports:
- "5601:5601"
networks:
- elastic
elasticsearch:
image: elasticsearch:7.10.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
ulimits:
nproc: 65535
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
- /Users/song/study/elasticsearch/plugins/ik:/usr/share/elasticsearch/plugins/ik
ports:
- 9200:9200
- 9300:9300
networks:
- elastic
elasticsearch2:
image: elasticsearch:7.10.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
ulimits:
nproc: 65535
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
- /Users/song/study/elasticsearch/plugins/ik:/usr/share/elasticsearch/plugins/ik
ports:
- 9201:9201
- 9301:9301
networks:
- elastic
elasticsearch3:
image: elasticsearch:7.10.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
ulimits:
nproc: 65535
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
- /Users/song/study/elasticsearch/plugins/ik:/usr/share/elasticsearch/plugins/ik
ports:
- 9202:9202
- 9302:9302
networks:
- elastic
elastichd:
image: containerize/elastichd:latest
container_name: elasticsearch-hd
networks:
- elastic
ports:
- 9800:9800
depends_on:
- "elasticsearch"
links:
- "elasticsearch:demo"
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
运行docker-compose,安装Elasticsearch
启动
screen
docker-compose up
访问测试
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
停止容器
docker-compose down
停止容器并且移除数据
docker-compose down -v
删除单个容器
$docker rm 容器名/容器ID
-f, –force=false;
-l, –link=false Remove the specified link and not the underlying container;
-v, –volumes=false Remove the volumes associated to the container
删除所有容器
$docker rm `docker ps -aq`
停止、启动、杀死、重启一个容器
$ docker stop 容器名/容器ID
$ docker start 容器名/容器ID
$ docker kill 容器名/容器ID
$ docker restart 容器名/容器ID
显示容器资源使用统计
docker stats 容器ID
使用 docker 进行 ElasticSearch + Kibana 集群搭建的更多相关文章
- Docker系列之swarm集群搭建
学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络 ...
- elasticsearch 分布式集群搭建
elasticsearch环境搭建及单节点搭建可参考我的上一篇:http://www.cnblogs.com/xuwenjin/p/8745624.html 本文以Elaticsearch 6.2.2 ...
- Elasticsearch冷热集群搭建
ES版本:6.2.4 集群环境:7台机器,每台部署一个master节点.其中3台部署2个hot节点,另外4台部署2个warm节点.共21个节点. 1. 挂盘 按实际情况分盘,一个机子上的2个data节 ...
- ElasticSearch入门 —— 集群搭建
一.环境介绍与安装准备 1.环境说明 2台虚拟机,OS为ubuntu13.04,ip分别为xxx.xxx.xxx.140和xxx.xxx.xxx.145. 2.安装准备 ElasticSearch(简 ...
- 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器
系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...
- Elasticsearch集群搭建及使用Java客户端对数据存储和查询
本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计. 一.Elastic集群搭建 1. 环境准备. 该集群环境基于VMware虚拟机.CentOS ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
- Elasticsearch(ELK)集群搭建
一.前言 Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据.Elasticsearch也使用 ...
- elasticsearch集群搭建实例
elasticsearch集群搭建实例 下个月又开始搞搜索了,几个月没动这块还好没有落下. 晚上在自己虚拟机上搭建了一个简易搜索集群,分享一下. 操作系统环境: Red Hat 4.8.2-16 el ...
随机推荐
- LeetCode 高效刷题路径
LeetCode 高效刷题路径 Hot 100 https://leetcode.com/problemset/hot-100/ https://leetcode-cn.com/problemset/ ...
- Flutter Demo: PageView横向使用
video import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends ...
- 精密进近OCH的计算
一.计算步骤 以I类精密进近为例,运行标准的制定大致分为以下几个步骤: 1)确定精密航段的超高障碍物. 2)计算当量高 3)计算高度损失 4)当量高与高度损失相加得到超障高OCH 5)对复飞段障碍物进 ...
- InnoDB 的记录结构和页结构
本文转载自InnoDB 的记录结构和页结构 概述 InnoDB将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,中页的大小一般为16KB.也就是在一般情况下,一次最少从磁盘中读取16KB的内 ...
- 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解
本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...
- 总结 接口 final关键字 abstract关键字 static 关键字
final关键字: * final 修饰的方法能被继承 不能被重写 * final修饰的类不能被继承 * final 修饰的变量(基本类型)不能被修改 * final 修饰的成员变量必须初始化 局部变 ...
- Echars统计图的使用
第一步去官网挑选自己需要的图形了. 官网地址:https://echarts.baidu.com/ 第二步按照官网的demo,下载需要的js组件并放到自己的项目中. 第三步仿照demo创建需要的div ...
- Django框架-cookie和session以及中间件
目录 一.cookie 和 session 1.为什么会有这些技术 2. cookie 2.1 Django如何设置cookie 2.2 Django如何获取cookie 2.3 Django如何设置 ...
- 基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本(支持多账号使用)
每日签到集合 基于[腾讯云函数]/[GitHub Actions]/[Docker]的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究 ...
- Android7.0无需FileProvide搞定URI拍照、应用安装问题
根据官方文档,从Android7.0版本开始 使用URI打开或安装文件需要单独在应用里配置了,问了度娘,有好多版本的结果,个人认为最靠谱的就是下边这个方法,只需在application的oncreat ...