首页 > 其他分享 >ELK - Win10上使用Docker搭建ES集群

ELK - Win10上使用Docker搭建ES集群

时间:2024-03-22 15:11:36浏览次数:23  
标签:ELK 自定义 share cluster elasticsearch usr Win10 Docker es

Win10上使用Docker搭建ES集群

Elastic Search离线镜像包

http://www.elastic-view.cn/index.html

ES可视化管理工具

http://www.elastic-view.cn/index.html

单机单节点

启动命令:

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e node.name=elasticsearch -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v 自定义绝对路径\es\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es\conf:/config docker.elastic.co/elasticsearch/elasticsearch:7.10.2

验证:

浏览器输入:localhost:9200

单机多节点

目录结构

配置文件
es_cluster\node1\conf\elasticsearch.yml

#集群名称
cluster.name: es_cluster
#当前该节点的名称
node.name: node-1
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#给当前节点自定义属性(可以省略)
#node.attr.rack: r1
#数据存档位置
path.data: /usr/share/elasticsearch/data
#日志存放位置
path.logs: /usr/share/elasticsearch/log
#是否开启时锁定内存(默认为是)
#bootstrap.memory_lock: true
#设置网关地址,这个地址我原先填写了自己的实际物理IP地址,
#然后启动一直报无效的IP地址,无法注入9300端口,这里只需要填写0.0.0.0
network.host: 0.0.0.0
#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址,设置当前物理机地址,
#如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
network.publish_host: 本机ip
#设置映射端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
#集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
discovery.seed_hosts: ["本机ip:9300","本机ip:9301","本机ip:9302"]
#当你在搭建集群的时候,选出合格的节点集群
#其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,
#如果你不设置,elasticsearch就会自己选举,这里我们把三个节点都写上
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
gateway.recover_after_nodes: 2
#删除索引是是否需要显示其名称,默认为显示
#action.destructive_requires_name: true

启动命令

docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -v 自定义绝对路径\es_cluster\node1\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v 自定义绝对路径\es_cluster\node1\plugins:/usr/share/elasticsearch/plugins -v 自定义绝对路径\es_cluster\node1\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es_cluster\node1\log:/usr/share/elasticsearch/log --name es-node-1 docker.elastic.co/elasticsearch/elasticsearch:7.10.2
docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9201:9201 -p 9301:9301 -v 自定义绝对路径\es_cluster\node2\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v 自定义绝对路径\es_cluster\node2\plugins:/usr/share/elasticsearch/plugins -v 自定义绝对路径\es_cluster\node2\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es_cluster\node2\log:/usr/share/elasticsearch/log --name es-node-2 docker.elastic.co/elasticsearch/elasticsearch:7.10.2
docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9202:9202 -p 9302:9302 -v 自定义绝对路径\es_cluster\node3\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v 自定义绝对路径\es_cluster\node3\plugins:/usr/share/elasticsearch/conf -v 自定义绝对路径\es_cluster\node3\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es_cluster\node3\log:/usr/share/elasticsearch/log --name es-node-3 docker.elastic.co/elasticsearch/elasticsearch:7.10.2

验证:
浏览器输入:本机ip:9200,本机ip:9201,本机ip:9202

ES集群设置密码

进入docker容器,生成节点证书,生成证书的密码可以不填

/usr/share/elasticsearch/bin/elasticsearch-certutil ca -out config/certs/elastic-certificates.p12 -pass

把生成的证书从docker容器中拷贝出来

docker cp es-node-1:/usr/share/elasticsearch/config/certs 自定义绝对路径\es_cluster\node1\conf\

在原有的配置文件中新增如下配置
es_cluster\node1\conf\elasticsearch.yml

# 开启xpack
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
# 证书配置
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

删除之前的容器,重新用新命令启动容器

docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -v 自定义绝对路径\es_cluster\node1\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v 自定义绝对路径\es_cluster\node1\conf\certs\elastic-certificates.p12:/usr/share/elasticsearch/config/certs/elastic-certificates.p12 -v 自定义绝对路径\es_cluster\node1\plugins:/usr/share/elasticsearch/plugins -v 自定义绝对路径\es_cluster\node1\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es_cluster\node1\log:/usr/share/elasticsearch/log --name es-node-1 docker.elastic.co/elasticsearch/elasticsearch:7.10.2
docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9201:9201 -p 9301:9301 -v 自定义绝对路径\es_cluster\node2\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v 自定义绝对路径\es_cluster\node2\conf\certs\elastic-certificates.p12:/usr/share/elasticsearch/config/certs/elastic-certificates.p12 -v 自定义绝对路径\es_cluster\node2\plugins:/usr/share/elasticsearch/plugins -v 自定义绝对路径\es_cluster\node2\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es_cluster\node2\log:/usr/share/elasticsearch/log --name es-node-2 docker.elastic.co/elasticsearch/elasticsearch:7.10.2
docker run -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9202:9202 -p 9302:9302 -v 自定义绝对路径\es_cluster\node3\conf\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v 自定义绝对路径\es_cluster\node3\conf\certs\elastic-certificates.p12:/usr/share/elasticsearch/config/certs/elastic-certificates.p12 -v 自定义绝对路径\es_cluster\node3\plugins:/usr/share/elasticsearch/plugins -v 自定义绝对路径\es_cluster\node3\data:/usr/share/elasticsearch/data -v 自定义绝对路径\es_cluster\node3\log:/usr/share/elasticsearch/log --name es-node-3 docker.elastic.co/elasticsearch/elasticsearch:7.10.2

不输入用户名密码就会401

进入容器生成密码

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

分别打开三个验证链接,均需要用户名和密码,登录后获得节点信息

增加了用户名密码的ES,在使用API调用时需要在Header中添加验证信息

验证

可用性验证

  • 在9200新增index,9201、9202均可查询到新增的index
  • 在9200新增doc(随机id&指定id两种情况),9201、9202均可查询到新增的doc
  • 在9200根据id修改doc,9201、9202均可查询到修改后的doc
  • 在9200根据id删除doc,9201、9202均删除doc
  • 在9200删除index,9201、9202上均删除index+doc

高可用验证

  • 停止某一个子节点
    • 分片会进行重新分配
    • 剩余主节点和子节点均进行增删改查
    • 重启子节点,分片重新分配
  • 停止主节点
    • 重新选举主节点
    • 分片会进行重新分配,这一步会比停止子节点时的重新分配慢很多
    • 剩余主节点和子节点均进行增删改查
    • 重启子节点,分片重新分配
  • 同时停止两个节点,集群不可用
  • 单节点磁盘使用率超过85%则停止分片

问题

ES启动的时候会报错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

原因:elasticsearch用户拥有的内存权限太小,至少需要262144。(查看当前值:sysctl -a|grep vm.max_map_count)
解决:编辑/etc/sysctl.conf(sudo vim /etc/sysctl.conf)文件,在最后添加一行:

vm.max_map_count=262144

运行 sysctl -p 重新加载配置

在Windows Docker Desktop下依次执行:

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144
exit

Windows单机集群搭建完毕之后,会因为“the node is above the low watermark cluster setting ”错误导致健康状态为yellow

原因:磁盘空间不足,导致无法指定副本分片位置
解决:增加磁盘空间。磁盘空间使用数量低于es设置预警水位,分片恢复正常,健康状态变为green

 

标签:ELK,自定义,share,cluster,elasticsearch,usr,Win10,Docker,es
From: https://www.cnblogs.com/helios-fz/p/18089500

相关文章

  • Deepin-安装Docker
    1deepin版本社区版20.7.12安装依赖包sudoapt-getupdatesudoapt-getinstall\apt-transport-https\ca-certificates\curl\gnupg-agent\software-properties-common-ycurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudo......
  • 在哪里打开win10备忘录?win10电脑备忘录如何固定在桌面上?
    对于国内大多数上班族来说,Windows10系统电脑已成为日常办公的必备工具。在处理各类工作任务时,经常需要随手记录一些重要信息或工作琐事。这时,如果能有一款方便易用的电脑备忘录软件,将大大提高工作效率。那么在哪里打开win10备忘录呢?win10电脑备忘录如何固定在桌面上?其实Windows10......
  • 定时备份docker日志(shell方式,可能存在丢部分日志)
    创建sh文件 vi~/backup_docker_log.sh #!bin/shif[!-d"/logs"];thenmkdir"/logs"ficd/logs/forfilein/var/lib/docker/containers/*doiftest-d$filethenecho$file是目录forlogfilein$file/*.log......
  • docker容器技术
    docker容器技术分享1.应用部署历史我们先来看看很久以前,服务器是怎么部署应用的。由于物理机部署的缺点,后来出现了虚拟机但是虚拟化也是有局限性的,每一个虚拟机都是一个完整的操作系统,要分配系统资源,虚拟机多到一定程度时,操作系统本身资源也就消耗殆尽,或者说必须扩容。2.......
  • <爬虫部署,进阶Docker>----第十章 探究一下Docker Compose
    前言:        DockerCompose是一个用于定义和运行多容器应用程序的工具,它提供了一种简化和自动化容器编排的方式。在理解DockerCompose的背景之前,让我们先回顾一下容器化技术的发展。容器化技术的出现使得应用程序的部署和管理变得更加轻松和灵活。容器化通过......
  • docker上安装上常用软件
    常用得几个安装为例:安装tomcatmysqlredis总体步骤如下:  一.安装tomcat 1.dockersearchtomcat命令search,获取取到dockerhub官网直接输入tomcat去查找也是一样得。2.dockerpulltomcat3.dockerimagestomcat4.dockerrun-it-ptomcat ......
  • 自动化构建Docker镜像的标准方法(一篇带你了解)
    Dockerfile是一个文本文件,开发者使用它来定义如何构建一个Docker镜像。它是自动化构建Docker镜像的标准方法,包含了用于构建镜像的一系列指令,这些指令会被Docker引擎按顺序逐行解析并执行。构建镜像时,通过在命令行中运行dockerbuild并指定Dockerfile所在的路径来创建......
  • Docker指令
    systemctlstartdocker启动dockersystemctlstopdocker关闭dockersystemctlstatusdocker查看运行状态systemctlrestartdocker重启dockersystemctlpull镜像名拉去镜像dockerrun镜像名运行镜像dockerrmi-f镜像名/镜像Iddockerrmi-f$(dockerimage-......
  • docker部署 Jira
    环境介绍使用docker-compose安装Jira项目管理系统。操作系统CentOSLinuxrelease7.9.2009(Core)资源配置CPU:2MEM:4gDISK:100gdocker版本docker版本不做统一限制,只要能够运行容器即可。root@localhost(192.168.199.152)~>dockerversionClient:D......
  • openwrt的docker编译环境
    version:'3'services:ubuntu-lxde-novnc:image:docker-ubuntu-lxde-novnc:latestcontainer_name:ubuntu-lxde-novncrestart:alwaysprivileged:trueenvironment:-TZ=Asia/Shanghai-HTTP_PASSWORD=password......