当前位置: 首页 > news >正文

Linux中使用Docker安装ElasticSearch7.10.x集群

使用Docker安装ElasticSearch7.10.x单节点请访问这里

一、集群环境说明

服务器IP地址
192.168.137.1,192.168.137.2,192.168.137.3

二、前期准备

1. 拉取镜像

docker pull elasticsearch:7.10.1

2. 首先需要创建一个用于生成秘钥的初始容器,如下是命令:

docker run -d --user=root --privileged=true --name elasticsearch-temp -p 9200:9200 \
-p 9300:9300 --ulimit nofile=65536:65536  \
-v /home/elasticsearch_temp/data:/usr/share/elasticsearch/data \
-v /home/elasticsearch_temp/logs:/usr/share/elasticsearch/logs \
-e ES_JAVA_OPTS="-Xms2G -Xmx2G" \
-e discovery.seed_hosts=["192.168.137.1"] elasticsearch:7.10.1

3. 进入容器内部,并执行如下命令生成秘钥:

#进入容器操作系统
1. docker exec -it elasticsearch-temp /bin/bash
#生成秘钥
2. bin/elasticsearch-certutil cert
#一路回车直到创建完成,生成的目录默认是(/usr/share/elasticsearch/config/elastic-certificates.p12)
#退出容器,并将容器内此秘钥文件复制出来(命令最后有个点,表示复制到当前目录)
3. docker cp elasticsearch-temp:/usr/share/elasticsearch/config/elastic-certificates.p12 .

说明(重要): 这里复制出来的elastic-certificates.p12文件,需要同时放到剩余两台服务器上。

三、开始部署

1. 创建ElasticSearch相关文件夹

说明: 以服务器192.168.137.1为例,其他两台服务器操作是一样的

#1.以/data目录为例
mkdir -p /data/elasticsearch7-10-1/{data,logs,plugins}

2. 创建配置文件

vim elasticsearch.yml

以下为配置文件内容(其他服务器仅需修改node.name的值和network.publish_host的值为本机ip即可)

cluster.name: es-cluster
node.name: node-1
node.master: true
node.data: true
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.1
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.minimum_master_nodes: 2
discovery.seed_hosts: ["192.168.137.1:9300","192.168.137.2:9300","192.168.137.3:9300"]
cluster.initial_master_nodes: ["node-1"]
xpack.sql.enabled: false
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

3. 将步骤1创建的文件夹授权,否则启动会报错无权限

#到ElasticSearch的根目录的上级目录,因为需要给整个elasticsearch7-10-1文件夹授权
cd /data/
#授权
chmod -R 777 elasticsearch7-10-1/

4. 编写启动脚本方便留痕

  1. 进入ElasticSearch主目录:
cd /home/elasticsearch7-10-1
  1. 创建脚本文件
vim create_es.sh
  1. create_es.sh内容如下:
docker run -d --user=root --privileged=true \
--name elasticsearch-1 -p 9200:9200 -p 9300:9300 --ulimit nofile=65536:65536 \
-v ${PWD}/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ${PWD}/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 \
-v ${PWD}/logs:/usr/share/elasticsearch/logs \
-v ${PWD}/plugins:/usr/share/elasticsearch/plugins \
-v ${PWD}/data:/usr/share/elasticsearch/data \
-e ES_JAVA_OPTS="-Xms2G -Xmx2G" elasticsearch:7.10.1

属性说明:

属性配置说明
ulimit nofile=65536:65536设置进程可用资源,如果不设置,启动会报错提示
discovery.type=single-node设置模式为单节点模式启动
ES_JAVA_OPTS=“-Xms2G -Xmx2G”设置ElasticSearch中的Java虚拟机环境变量
–user=root使用root用户
-v ${PWD}/xxxxx:/yyyyy表示将当前目录的xxxxx映射到docker容器的yyyyyy位置
  1. 将【前期准备-步骤3】中从docker容器中复制出来的elastic-certificates.p12放到/home/elasticsearch7-10-1目录下

四、启动测试

1. 分别启动三台服务器上的ElasticSearch服务

sh create_es.sh

注意: 如果提示max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 这个错误的话,需要进行如下设置:

#修改文件
sudo vim /etc/sysctl.conf
#添加参数
vm.max_map_count = 262144
#重新加载
sysctl -p

2. 打开浏览器访问http://192.168.137.1:9200地址

如果能正常打开ElasticSearch的登录页面并弹窗让你输入用户名密码,即表示启动成功

五、设置自定义密码

1.任选其中一台服务器,进入ElasticSearch的容器中

docker exec -it elasticsearch-1 /bin/bash

2. 执行设置密码命令(在任意一台中执行即可,其他节点会自动同步)

bin/elasticsearch-setup-passwords interactive

为每个用户设置密码
说明: 为每个用户设置密码,并且会让你输入两边密码,需要保持输入的两次密码保持一致。

3. 设置完成后,再次访问http://192.168.137.1:9200地址,在弹出的提示框中:

用户名:elastic
密 码:你在上一步中为elastic用户设置的密码

输入正确的用户名密码之后将看到如下界面:
登录成功之后的图示

4. 查看集群状态

访问地址http://192.168.137.1:9200/_cluster/health?pretty
在这里插入图片描述
上图红框中status状态为green表示健康,node.total表示节点数量为3个,node.data表示数据节点为3个。

如此ElasticSearch集群就搭建完成了 喜欢的就点个关注再走吧~

http://www.lryc.cn/news/166485.html

相关文章:

  • electron 左上角图标 dev(开发环境)可显示 build(打包)后无法显示
  • 全球与中国BGO晶体市场:增长趋势、竞争格局与前景展望
  • 华三路由交换技术基础——计算机网络基础
  • Docker搭建RK3568开发环境
  • 【GAMES202】Real-Time Ray Tracing 1—实时光线追踪1
  • Linux修复损坏的文件系统
  • 三分钟学会一个新技能——使用Java操作Redis
  • Java学习笔记------内部类
  • 面试题:问js的forEach和map的区别
  • Hadoop设置固定ip无效的解决办法
  • 论文解读 | 用于3D对象检测的PV-RCNN网络原创
  • kali安装volatility及插件mimikatz
  • 什么是阻塞队列?如何使⽤阻塞队列来实现⽣产者-消费者模型?哪个阻塞队列最常用?
  • Bean拷贝组件(注解驱动)方案设计与落地
  • hive的建表语句
  • 提升效率:PostgreSQL准确且快速的数据对比方法
  • 【轻NAS】Windows搭建可道云私有云盘,并内网穿透公网访问
  • 计算机网络 第一章:概述
  • centos7 firewalld ip转发设置、安装docker-compose出现错误、docker-compose部署Yapi
  • Cglib代理和JDK代理原理的区别
  • 论文阅读-A General Language for Modeling Social Media Account Behavior
  • Python中的异常处理4-3
  • Swift学习内容精选(一)
  • Marin说PCB之封装设计系列---(02)--异形焊盘的封装设计总结
  • SpringBoot使用AOP详解
  • 【Qt】QGroundControl入门1:介绍
  • 第36章_瑞萨MCU零基础入门系列教程之步进电机控制实验
  • 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
  • msvcp140.dll是什么东西,如何解决msvcp140.dll丢失的问题的方法分享
  • 音视频 SDL vs2017配置