docker安装es集群(三台)

1、防火墙设置,开启所需端口

firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp
firewall-cmd --permanent --zone=public --add-port=9100/tcp

2、创建目录,并更改目录权限

mkdir -p /data/docker_data/elasticsearch7.13.3/logs /data/docker_data/elasticsearch7.13.3/data /data/docker_data/elasticsearch7.13.3/docker-compose

chmod 777 -R logs data

3 设置系统参数

[root@localhost ~]# vi /etc/security/limits.conf
在文件的末尾加上
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096

4 创建docker-compose目录

/data/docker_data/elasticsearch7.13.3/下创建docker-compose目录,创建
docker-compose.yml文件,es-node1在其他服务器上用es-node2、es-node3
需要注意的是discovery.zen.ping.unicast.hosts参数和discovery.seed_hosts参数不能同时配置,新旧版本问题
配置cluster.name(每个服务器上的都是一样的) 配置node.name(每个节点的服务器都是不一样的) 跨域的设置
node.master = true // 代表有可能被选举成master节点 node.data = true //
代表可以对数据的增删改查 禁止 swap,一旦允许内存与磁盘的交换,会引起致命的性能问题。可以通过在 elasticsearch.yml 中
bootstrap.memory_lock: true,以保持 JVM 锁定内存,保证 ES 的性能
-discovery.zen.minimum_master_nodes=2#本次没有配置这项,因为在最新版7.x中, minimum_master_node 这个参数已经被移除了,这一块内容完全由es自身去管理,这样就避免了脑裂的问题,选举也会非常快。

docker-compose.yml文件如下:

version: '3'
services:
  es-node1:
    image: elasticsearch:7.13.3
    container_name: es-node1
    restart: always
    environment:
      - cluster.name=elasticsearch-cluster
      - node.name=es-node1
      - network.publish_host=131.0.4.11
      - node.master=true
      - node.data=true
      - bootstrap.memory_lock=true
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - cluster.initial_master_nodes=131.0.4.11,131.0.4.12,131.0.4.13
      - discovery.seed_hosts=131.0.4.11,131.0.4.12,131.0.4.13
      - xpack.monitoring.collection.enabled=true
      - xpack.monitoring.enabled=true
      - "ES_JAVA_OPTS=-Xms16g -Xmx16g"
      - network.host=0.0.0.0
      - http.port=9200
      - transport.tcp.port=9300
    ulimits:
      nproc: 65535
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/docker_data/elasticsearch7.13.3/data:/usr/share/elasticsearch/data
      - /data/docker_data/elasticsearch7.13.3/logs:/usr/share/elasticsearch/logs
    ports:
      - 9200:9200
      - 9300:9300

4 启动

docker-compose up -d

5 安装ik分词器

1)下载分词器压缩包(和es的版本要相同)

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.3/elasticsearch-analysis-ik-7.13.3.zip

2)将压缩包拷贝到容器中

docker cp ./elasticsearch-analysis-ik-7.13.3.zip es-node1:/usr/share/elasticsearch/plugins

3)进入容器

docker exec -it es-node1 bash

4)创建目录

mkdir /usr/share/elasticsearch/plugins/ik

5)将文件压缩包移动到ik中

mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.13.3.zip /usr/share/elasticsearch/plugins/ik

6)进入目录

cd /usr/share/elasticsearch/plugins/ik

7)解压

unzip elasticsearch-analysis-ik-7.13.3.zip

8)删除压缩包

rm -rf elasticsearch-analysis-ik-7.13.3.zip

9)退出容器,重启es容器

exit;
docker restart es-node1

每一台都要装,装三次ik分词器

6 配置

1)进入elasticsearch容器

docker exec -it es-node1 bash

2)修改elasticsearch.yml文件

vi config/elasticsearch.yml

在最下面添加2行
http.cors.enabled: true
http.cors.allow-origin: "*"

3)退出,重启容器

exit;
docker restart es-node1

4)设置自启动

docker update es-node1 --restart=always

7 安装elasticsearch-head(用于访问es,界面化工具)

1)下载镜像

docker pull mobz/elasticsearch-head:5

2 )创建\启动容器

docker run -itd --name elasticsearch-head --restart=always -p 9100:9100 mobz/elasticsearch-head:5

3) 设置解决elasticsearch-head查询406问题
将elasticsearch-head容器内vendor.js拷贝出来

docker cp elasticsearch-head:/usr/src/app/_site/vendor.js /data/docker_data/elasticsearch7.13.3

修改vendor.js

1)6886行 contentType: "application/x-www-form-urlencoded
改成
contentType: "application/json;charset=UTF-8"
2) 7574/7573行 var inspectData = s.contentType === "application/x-www-form-urlencoded"
改成
var inspectData = s.contentType === "application/json;charset=UTF-8"

将改完的vendor.js拷贝回镜像

docker cp /data/docker_data/elasticsearch7.13.3/vendor.js elasticsearch-head:/usr/src/app/_site

重启:

docker restart elasticsearch-head

浏览器打开测试: http://ip:9100,可以访问

8、 修改es中每次返回的数据数量参数(默认10000),解决分页不全问题,修改为100万,按需设置,海量数据那就不设置。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在三台机器上搭建 Elasticsearch 集群,可以按照以下步骤进行: 1. 在每台机器安装 Docker:根据操作系统的不同,安装对应的 Docker 版本。 2. 创建一个共享网络:在 Docker 中,创建一个共享网络,以便容器可以相互通信。可以使用以下命令在每台机器上创建一个名为 "es_net" 的网络: ```shell docker network create es_net ``` 3. 在第一台机器上创建 Elasticsearch 容器: ```shell docker run -d --name es01 --net es_net -p 9200:9200 -p 9300:9300 -e "discovery.type=zen" -e "cluster.initial_master_nodes=es01" docker.elastic.co/elasticsearch/elasticsearch:7.14.0 ``` 这将创建一个名为 "es01" 的 Elasticsearch 容器,并将其连接到 "es_net" 网络。容器将通过端口映射将 Elasticsearch 的 9200 和 9300 端口暴露到主机上。设置 "discovery.type" 为 "zen",并通过 "cluster.initial_master_nodes" 参数指定自己作为初始主节点。 4. 在第二台机器上创建 Elasticsearch 容器: ```shell docker run -d --name es02 --net es_net -e "discovery.type=zen" -e "cluster.initial_master_nodes=es01" docker.elastic.co/elasticsearch/elasticsearch:7.14.0 ``` 使用上述命令在第二台机器上创建一个名为 "es02" 的容器,并将其连接到同一网络。通过设置 "discovery.type" 为 "zen",并通过 "cluster.initial_master_nodes" 参数指定已存在的主节点 "es01",将新容器加入到已有的集群中。 5. 在第三台机器上创建 Elasticsearch 容器: ```shell docker run -d --name es03 --net es_net -e "discovery.type=zen" -e "cluster.initial_master_nodes=es01" docker.elastic.co/elasticsearch/elasticsearch:7.14.0

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值