前言

也不想前言了,作为一名非专业运维,各种bug层出不穷,不过好在功夫不负有心人,终于是成功了搭建了ES单机集群

准备工作

首先就是一个巨坑,我在使用docker-compose内写了挂载,他自动创建,然后,就没有然后了,他自动创建的文件夹和文件是没有读写权限的,所以我们手动创建。

# 创建数据/日志目录 这里我们部署2个节点
# 由于服务器辣鸡,所以只部署两个,如果想增多的话,就手动加着建就行了
mkdir /opt/elasticsearch/data/{node0,node1,node2} -p
mkdir /opt/elasticsearch/logs/{node0,node1,node2} -p
mkdir /opt/elasticsearch/node
cd /opt/elasticsearch/node
mkdir es1
mkdir es2

cd /opt/elasticsearch
# 给予777最大权限
chmod 0777 data/* -R && chmod 0777 logs/* -

把该创建完成的都创建完成,之后,又是一个坑,系统参数不足导致的内存一直不够用,这里我们直接修改/etc/sysctl.conf

echo vm.max_map_count=655360 >> /etc/sysctl.conf
# 在root账户执行这一句 作用是重新载入sysctl系统参数
sysctl -p

Docker-compose文件

然后进入到/opt/elasticsearch目录下,建立docker-compose.yml文件即docker-compose使用的主模板文件:

version: '3'
services:
  es1:
    image: elasticsearch:7.2.0
    container_name: es1
    privileged: true
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/node0:/usr/share/elasticsearch/data
      - ./node/es1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/node0:/usr/share/elasticsearch/logs
    ports:
      - 9200:9200
    networks:
      - esnet
  es3:
    image: elasticsearch:7.2.0
    container_name: es2
    privileged: true
    environment:
      - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/node2:/usr/share/elasticsearch/data
      - ./node/es2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./logs/node2:/usr/share/elasticsearch/logs
    ports:
      - 9202:9200
    links:
      - es1
    networks:
      - esnet
# 使用桥接的网络连接方式
networks:
  esnet:
    driver: bridge

然后cd node/es1/elasticsearch.yml配置文件

# 集群名称 EsCluster
cluster.name: yawp
# 节点名称
node.name: es1
# 是否为主节点
node.master: true
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200

# 回环地址
network.host: 0.0.0.0

discovery.zen.ping.unicast.hosts: ["es1"]

bootstrap.memory_lock: true

# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"

# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1

xpack.security.enabled: false


cluster.initial_master_nodes: ["es1"]

从节点的配置文件elasticsearch.yml

# 集群名称 EsCluster
cluster.name: yawp
# 节点名称
node.name: es2
# 是否为主节点
node.master: false
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200
# 回环地址
network.host: 0.0.0.0

# 有资格成为主节点的资格列表
discovery.zen.ping.unicast.hosts: ["es1"]

# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"

# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1

xpack.security.enabled: false


cluster.initial_master_nodes: ["es1"]

然后回到/opt/elasticsearch启动集群 docker-compose up -d

启动成功后通过docker-compose ps查看集群情况,如果你的容器在运行,但是输入这个命令却找不到,请不用担心,停掉容器,重新启动一下就好了。