代码编织梦想

1、配置虚拟机

1.1、设置内存

将虚拟机内存设置为4G,内存太小可能导致某个ES节点无法正常运行;

1.2、修改limits.conf

limits.conf文件可以设置用户最大可创建文件的数量

a、执行vi /etc/security/limits.conf命令—>文件末尾添加如下内容:

* soft nofile 65536
* hard nofile 131072

b、保存文件;

注意

如果不设置用户最大可创建文件的数量,则elasticsearch启动时出现如下信息:

…省略…
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
…省略…
1.3、修改sysctl.conf

sysctl.conf文件可以设置最大虚拟内存

a、执行vi /etc/sysctl.conf命令—>文件末尾添加如下内容:

vm.max_map_count=655360

b、保存文件;

c、执行sysctl -p命令,该命令用于在Linux内核处于运行状态时动态地修改内核的运行参数;-p用于从 “/etc/sysctl.conf”配置文件中加载内核参数设置;

注意

如果不设置最大虚拟内存,则elasticsearch启动时出现如下信息:

…省略…
ERROR: [3] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [655360] is too low, increase to at least [262144]
…省略…

2、创建目录

2.1、node_1
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_1/data
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_1/logs
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_1/plugins/ik
2.2、node_2
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_2/data
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_2/logs
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_2/plugins/ik
2.3、node_3
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_3/data
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_3/logs
[root@localhost ~]# mkdir -p /usr/local/es_cluster/node_3/plugins/ik
2.4、目录结构
[root@localhost ~]# yum -y install tree
[root@localhost ~]# tree /usr/local/es_cluster
[root@localhost ~]#

3、分词器

3.1、下载

访问https://github.com/medcl/elasticsearch-analysis-ik/releases—>由于elasticsearch版本为7.9.3,所以这里下载elasticsearch-analysis-ik-7.9.3.zip

3.2、上传

将压缩包上传至Linux系统/opt目录

3.3、解压
[root@localhost ~]# unzip /opt/elasticsearch-analysis-ik-7.9.3.zip -d /usr/local/es_cluster/node_1/plugins/ik
[root@localhost ~]# unzip /opt/elasticsearch-analysis-ik-7.9.3.zip -d /usr/local/es_cluster/node_2/plugins/ik
[root@localhost ~]# unzip /opt/elasticsearch-analysis-ik-7.9.3.zip -d /usr/local/es_cluster/node_3/plugins/ik
3.4、删除文件
[root@localhost ~]# rm -f /opt/elasticsearch-analysis-ik-7.9.3.zip

4、Docker环境

视频教程:https://www.bilibili.com/video/BV1xv4y1S7kA

5、ES集群

5.1、搜索镜像

镜像网址:https://hub.docker.com/r/elastic/elasticsearch/tags?page=1&ordering=last_updated

5.2、拉取镜像
[root@localhost ~]# docker pull elasticsearch:7.9.3
7.9.3: Pulling from library/elasticsearch
75f829a71a1c: Pull complete
...省略...
817feb91b55c: Pull complete
Digest: sha256:a13cd87cbf139fadbca64972ef2c8777222236887d303e4177c1ab7cff1b52f6
Status: Downloaded newer image for elasticsearch:7.9.3
docker.io/library/elasticsearch:7.9.3
[root@localhost ~]#
5.3、创建并启动ES容器:

node-1

docker run -d \
--name=es_node_1 \
--restart=always \
-p 9201:9200 \
-p 9301:9300 \
--privileged=true \
-v /usr/local/es_cluster/node_1/data:/usr/share/elasticsearch/data \
-v /usr/local/es_cluster/node_1/logs:/usr/share/elasticsearch/logs \
-v /usr/local/es_cluster/node_1/plugins:/usr/share/elasticsearch/plugins \
-e "cluster.name=my-cluster" \
-e "node.name=node-1" \
-e "node.master=true" \
-e "node.data=true" \
-e "network.host=0.0.0.0" \
-e "transport.tcp.port=9300" \
-e "http.port=9200" \
-e "cluster.initial_master_nodes=node-1" \
-e "discovery.seed_hosts=192.168.1.100:9301,192.168.1.100:9302,192.168.1.100:9303" \
-e "gateway.auto_import_dangling_indices=true" \
-e "http.cors.enabled=true" \
-e "http.cors.allow-origin=*" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "TAKE_FILE_OWNERSHIP=true" \
elasticsearch:7.9.3

说明:

-p:指定端口映射,格式:主机(宿主)端口:容器端口

-e:指定容器环境变量,上述各环境变量含义如下:

cluster.name:配置es集群名称,默认为elasticsearch,同一网段下的不同ES集群通过集群名来区分;
node.name:节点名称,一个或多个节点组成一个cluster集群,集群是一个逻辑的概念,节点是物理概念
node.master:是否可以成为master节点
node.data:是否允许该节点存储数据,默认开启
network.host:绑定主机的ip地址,允许外网访问,同一网段下的ES会自动加入该集群中
transport.tcp.port:设置集群节点之间交互的tcp端口
http.port:设置http端口
cluster.initial_master_nodes:设置哪些ES节点参与第一次master节点选举,其值可以是ES节点IP地址(如:192.168.1.100或192.168.1.100:9300),也可以是ES节点名称
discovery.seed_hosts:设置当前节点与哪些ES节点建立连接,其值可以是127.0.0.1
gateway.auto_import_dangling_indices:是否自动引入dangling索引,默认false
#支持跨域访问:kibana或elasticsearch-head插件作为客户端要连接ES服务(http://192.168.1.100:9200),此时存在跨域问题,elasticsearch默认不允许跨域访问
http.cors.enabled:开启cors跨域访问支持,默认为false
http.cors.allow-origin:跨域访问允许的域名地址:允许所有域名
ES_JAVA_OPTS=-Xms512m -Xmx512m:ES使用Java语言开发,默认jvm为2G,这里通过ES_JAVA_OPTS设置jvm最大最小内存。

node-2

docker run -d \
--name=es_node_2 \
--restart=always \
-p 9202:9200 \
-p 9302:9300 \
--privileged=true \
-v /usr/local/es_cluster/node_2/data:/usr/share/elasticsearch/data \
-v /usr/local/es_cluster/node_2/logs:/usr/share/elasticsearch/logs \
-v /usr/local/es_cluster/node_2/plugins:/usr/share/elasticsearch/plugins \
-e "cluster.name=my-cluster" \
-e "node.name=node-2" \
-e "node.master=true" \
-e "node.data=true" \
-e "network.host=0.0.0.0" \
-e "transport.tcp.port=9300" \
-e "http.port=9200" \
-e "discovery.seed_hosts=192.168.1.100:9301,192.168.1.100:9302,192.168.1.100:9303" \
-e "gateway.auto_import_dangling_indices=true" \
-e "http.cors.enabled=true" \
-e "http.cors.allow-origin=*" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "TAKE_FILE_OWNERSHIP=true" \
elasticsearch:7.9.3

node-3

docker run -d \
--name=es_node_3 \
--restart=always \
-p 9203:9200 \
-p 9303:9300 \
--privileged=true \
-v /usr/local/es_cluster/node_3/data:/usr/share/elasticsearch/data \
-v /usr/local/es_cluster/node_3/logs:/usr/share/elasticsearch/logs \
-v /usr/local/es_cluster/node_3/plugins:/usr/share/elasticsearch/plugins \
-e "cluster.name=my-cluster" \
-e "node.name=node-3" \
-e "node.master=true" \
-e "node.data=true" \
-e "network.host=0.0.0.0" \
-e "transport.tcp.port=9300" \
-e "http.port=9200" \
-e "discovery.seed_hosts=192.168.1.100:9301,192.168.1.100:9302,192.168.1.100:9303" \
-e "gateway.auto_import_dangling_indices=true" \
-e "http.cors.enabled=true" \
-e "http.cors.allow-origin=*" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "TAKE_FILE_OWNERSHIP=true" \
elasticsearch:7.9.3
5.4、容器状态
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                    NAMES
2a189b6ec877   elasticsearch:7.9.3   "/tini -- /usr/local…"   17 seconds ago   Up 15 seconds   0.0.0.0:9203->9200/tcp, :::9203->9200/tcp, 0.0.0.0:9303->9300/tcp, :::9303->9300/tcp   es_node_3
ccbd3ea5fcbc   elasticsearch:7.9.3   "/tini -- /usr/local…"   33 seconds ago   Up 30 seconds   0.0.0.0:9202->9200/tcp, :::9202->9200/tcp, 0.0.0.0:9302->9300/tcp, :::9302->9300/tcp   es_node_2
0ad78a6a5258   elasticsearch:7.9.3   "/tini -- /usr/local…"   48 seconds ago   Up 47 seconds   0.0.0.0:9201->9200/tcp, :::9201->9200/tcp, 0.0.0.0:9301->9300/tcp, :::9301->9300/tcp   es_node_1
[root@localhost ~]#

6、开放端口

6.1、添加端口
[root@localhost ~]# firewall-cmd --add-port=9201/tcp --add-port=9202/tcp --add-port=9203/tcp --permanent
[root@localhost ~]# firewall-cmd --add-port=9301/tcp --add-port=9302/tcp --add-port=9303/tcp --permanent
6.2、重新加载
[root@localhost ~]# firewall-cmd --reload
6.3、查看放行端口
[root@localhost ~]# firewall-cmd --list-ports

7、数据包转发

7.1、编辑文件:

[root@localhost ~]# vi /usr/lib/sysctl.d/50-default.conf

7.2、末尾添加net.ipv4.ip_forward = 1

7.3、重启network:

[root@localhost ~]# systemctl restart network

注意

Linux默认不允许数据包转发,此时执行docker run时出现如下警告:

...省略...
WARNING: IPv4 forwarding is disabled. Networking will not work. 
上面警告将导致无法远程访问该docker容器

8、验证

启动浏览器—>地址栏输入http://192.168.1.100:9201/_cat/nodes?pretty—>点击Enter键,如下图:

在这里插入图片描述

说明:节点名称带*表示为主节点;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gaohuanjie/article/details/127925949

使用docker 搭建elasticsearch集群_j_bean的博客-爱代码爱编程

1 安装环境     安装多机es集群时(分布式集群),在三台服务器分别安装一个es节点,这三个节点组成一个es集群。因为是小集群,因此设置这三个节点都可作为master节点和data节点。服务器的ip分别为192.168.1.111、192.168.1.112和192.168.1.113。     安装单机es集群时,在一台服务器192.168.1.1

使用docker搭建elasticsearch集群_wangxianf的博客-爱代码爱编程

前言: 你首先要有个Linux服务器(这里我的是centos7),而且已经安装了docker(可以参考http://www.runoob.com/docker/centos-docker-install.html) 1、拉取elasticsearch的镜像 去hub.docker.com可以搜到有很多个版本的es,我这里下载的是2.4.6.

使用docker搭建elasticsearch集群-爱代码爱编程

使用Docker搭建ElasticSearch集群 本文将详细介绍使用docker搭建ElasticSearch集群的过程,以及每一步的含义 一:Docker概念介绍及拉取ElasticSearch镜像 先有镜像,后

使用docker搭建elasticSearch集群-爱代码爱编程

一 、docker的安装 https://www.cnblogs.com/ghostdot/p/12410242.html 二、创建相关映射文件 cd /home/ mkdir node cd node mkdir es_node1 es_node2 es_node2 plugins cd es_node1 mkdir data touch e

使用docker搭建elasticsearch7集群-爱代码爱编程

文章目录 环境准备安装docker操作系统限制修改创建es配置启动es安装es-head(可选) 环境准备 节点名称ip地址node1192.168.130.20node2192.168.130.19node2192.168.130.21安装docker 略 操作系统限制修改 vim /etc/sysctl.conf 在最后面追加以

使用docker搭建es集群-爱代码爱编程

使用docker搭建es集群 一、安装es 1.1 拉取es镜像 docker pull elasticsearch:7.9.3(重点7.x开始不需要手动下载x-pack) 1.2 配置es并启动 mkdir -p data/es/config cd data/es mkdir -p node1/data chmod 777 data mkdi

docker搭建Elasticsearch集群-爱代码爱编程

之前一直想写用docker搭建es集群的方法,今天有时间,来写一写,欢迎讨论。 文章目录 拉取镜像配置配置文件启动容器查看集群启动情况避免脑裂的注意事项 拉取镜像 需要在dockerhub选择适合自己系统的镜像。(镜像适配的系统不同) docker pull es镜像 配置配置文件 # es1 # 主master配置样例子 # 集群的名称

基于Docker搭建Elasticsearch集群和Kibana-爱代码爱编程

基于Docker搭建Elasticsearch集群 集群规划,采用三个节点 # 准备3个es节点 es 9200 9300 - web 9201 tcp:9301 node-1 elasticsearch.yml - web 9202 tcp:9302 node-2 elasticsearch.yml - web 9203 tcp:9303 node-

【集群运维篇】使用docker搭建es(ElasticSearch)集群-爱代码爱编程

使用docker搭建es(ElasticSearch)集群 准备环境 在生产环境中在Docker中运行Elasticsearch时,以下要求和建议适用。 防止jvm报错:该vm.max_map_count内核设置必须至少设置为262144用于生产。 Linux系统: 该vm.max_map_count设置应在以下位置永久设置/etc/sysctl

docker搭建elasticsearch集群_、以吾之名的博客-爱代码爱编程

一、安装ElasticSearch 使用docker直接获取es镜像,执行命令docker pull elasticsearch:7.7.0 执行完成后,执行docker images即可看到上一步拉取的镜像。 二、创建数据挂在目录,以及配置ElasticSearch集群配置文件,调高JVM线程数限制数量 1.创建数据文件挂载目录,然后直接关闭防火

elasticsearch(一)docker搭建es集群_青木编码的博客-爱代码爱编程

文章目录 关闭防火墙安装Docker下载 Elastic Search 镜像集群部署结构准备虚拟网络和挂载目录设置 max\_map\_count启动 Elasticsearch 集群查看启动结果结果chrome浏览器插件:elasticsearch-head 关闭防火墙 后面我们要使用多个端口,为了避免繁琐的开放端口操作,我们关掉防火墙

docker搭建elasticsearch集群_自先沉稳丶的博客-爱代码爱编程

Docker搭建ElasticSearch集群 一、环境准备 Linux Verison(7.9)VMware(16)Docker(20.10.16)ElasticSearch(7.17.1)Docker-compose

基于docker搭建es集群_jiking233的博客-爱代码爱编程

一、部署三个节点 node1:9301 node2:9302 node3:9303 二、创建配置文件 1、节点1配置 vi /usr/etc/es/node1.yml cluster.name: hzq‐es node.name: node1 network.host: 0.0.0.0 # 外部访问es的端口 http.p

docker 搭建 elasticsearch 集群教程-爱代码爱编程

写在前面:为什么要用ElasticSearch? 我们的应用经常需要添加检索功能,开源的Elastic Search是目前全文检索引擎的首选。它可以快速的存储、搜索和分析海量数据。ElasticSearch是一个分布式搜索框架,提供RestfulAPI,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动r