1.服务器
192.168.1.240 es1
192.168.1.125 es2
192.168.1.141 es3

2.es镜像自行下载

3.es配置文件
#es1
[root@wx-host-0029 config]# cat elasticsearch.yml
# 集群名称
cluster.name: qz-escluster

# 集群初始化 选择该节点为主节点 master
cluster.initial_master_nodes : "es1"
# 节点名称
node.name: es1

# 是否允许该节点参加master 选举
node.master: true

# 允许该节点存储数据(默认开启)
node.data: true

# 默认情况下,ElasticSearch使用0.0.0.0地址,并为http传输开启9200-9300端口,为节点到节点的通信开启9300-9400端口,也可以自行设置IP地址
network.host: 0.0.0.0

# publish_host设置其他节点连接此节点的地址,如果不设置的话,则自动获取,publish_host的地址必须为真实地址
network.publish_host: 192.168.1.240

# 该节点与其他节点交互的端口
transport.tcp.port: 29300

# Http传输监听端口
http.port: 29200

# 是否支持跨域,默认为false
http.cors.enabled: true

# 当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-origin: "*"

# 跨域允许设置的头信息
http.cors.allow-headers: Authorization

# 节点内部通信地址 9200 是默认端口 ,如有修改则补全端口号
discovery.zen.ping.unicast.hosts: ["192.168.1.240:29300","192.168.1.125:29300","192.168.1.141:29300"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 5s
#cluster.initial_master_nodes: ["192.168.1.240:29300","192.168.1.125:29300","192.168.1.141:29300"]

# 最大子查询个数 ,默认1024 目前系统是以相机为主要检索 如果超过 1024个相机 将会检索不到结果
indices.query.bool.max_clause_count: 10240


#es2
[root@wx-host-0030 config]# cat elasticsearch.yml
# 集群名称
cluster.name: qz-escluster

# 集群初始化 选择该节点为主节点 master
#cluster.initial_master_nodes : "es1"

# 节点名称
node.name: es2

# 是否允许该节点参加master 选举
node.master: true

# 允许该节点存储数据(默认开启)
node.data: true

# 默认情况下,ElasticSearch使用0.0.0.0地址,并为http传输开启9200-9300端口,为节点到节点的通信开启9300-9400端口,也可以自行设置IP地址
network.host: 0.0.0.0

# publish_host设置其他节点连接此节点的地址,如果不设置的话,则自动获取,publish_host的地址必须为真实地址
network.publish_host: 192.168.1.125

# 该节点与其他节点交互的端口
transport.tcp.port: 29300

# Http传输监听端口
http.port: 29200

# 是否支持跨域,默认为false
http.cors.enabled: true

# 当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-origin: "*"

# 跨域允许设置的头信息
http.cors.allow-headers: Authorization

# 节点内部通信地址 9200 是默认端口 ,如有修改则补全端口号
discovery.zen.ping.unicast.hosts: ["192.168.1.240:29300","192.168.1.125:29300","192.168.1.141:29300"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 5s

# 最大子查询个数 ,默认1024 目前系统是以相机为主要检索 如果超过 1024个相机 将会检索不到结果
indices.query.bool.max_clause_count: 10240

 

#es3

[root@wx-host-0031 config]# cat elasticsearch.yml
# 集群名称
cluster.name: qz-escluster

# 集群初始化 选择该节点为主节点 master
#cluster.initial_master_nodes : "es1"

# 节点名称
node.name: es3

# 是否允许该节点参加master 选举
node.master: true

# 允许该节点存储数据(默认开启)
node.data: true

# 默认情况下,ElasticSearch使用0.0.0.0地址,并为http传输开启9200-9300端口,为节点到节点的通信开启9300-9400端口,也可以自行设置IP地址
network.host: 0.0.0.0

# publish_host设置其他节点连接此节点的地址,如果不设置的话,则自动获取,publish_host的地址必须为真实地址
network.publish_host: 192.168.1.141

# 该节点与其他节点交互的端口
transport.tcp.port: 29300

# Http传输监听端口
http.port: 29200

# 是否支持跨域,默认为false
http.cors.enabled: true

# 当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-origin: "*"

# 跨域允许设置的头信息
http.cors.allow-headers: Authorization

# 节点内部通信地址 9200 是默认端口 ,如有修改则补全端口号
discovery.zen.ping.unicast.hosts: ["192.168.1.240:29300","192.168.1.125:29300","192.168.1.141:29300"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 5s

# 最大子查询个数 ,默认1024 目前系统是以相机为主要检索 如果超过 1024个相机 将会检索不到结果
indices.query.bool.max_clause_count: 10240

 

4.docker-compose启动es

#es1
[root@wx-host-0029 elastic]# cat docker-compose.yaml 
version: '3.9'
services:
  es1:
    image: 192.168.1.1:8090/public/elastic:7.1.1
    restart: always
    deploy:
      resources:
        limits:
          memory: '4G'
        reservations:
          memory: '3G'
    container_name: es1
    environment:
      - TZ=Asia/Shanghai
      - ELASTIC_PASSWORD=ytx@1234
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/aibox-common/elastic/data:/usr/share/elasticsearch/data
      - /data/aibox-common/elastic/config:/usr/share/elasticsearch/config
      - /data/elasticsearch/log:/usr/share/elasticsearch/log
    ports:
      - 29200:29200
      - 29300:29300
    network_mode: "host"


#es2
[root@wx-host-0030 elastic]# cat docker-compose.yaml
version: '3.9'
services:
  es2:
    image: 192.168.1.1:8090/public/elastic:7.1.1
    restart: always
    deploy:
      resources:
        limits:
          memory: '4G'
        reservations:
          memory: '3G'
    container_name: es2
    environment:
      - TZ=Asia/Shanghai
      - ELASTIC_PASSWORD=ytx@1234
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/aibox-common/elastic/data:/usr/share/elasticsearch/data
      - /data/aibox-common/elastic/config:/usr/share/elasticsearch/config
      - /data/elasticsearch/log:/usr/share/elasticsearch/log
    ports:
      - 29200:29200
      - 29300:29300
    network_mode: "host"

#es3
[root@wx-host-0031 elastic]# cat docker-compose.yaml
version: '3.9'
services:
  es3:
    image: 192.168.1.1:8090/public/elastic:7.1.1
    restart: always
    deploy:
      resources:
        limits:
          memory: '4G'
        reservations:
          memory: '3G'
    container_name: es3
    environment:
      - TZ=Asia/Shanghai
      - ELASTIC_PASSWORD=ytx@1234
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/aibox-common/elastic/data:/usr/share/elasticsearch/data
      - /data/aibox-common/elastic/config:/usr/share/elasticsearch/config
      - /data/elasticsearch/log:/usr/share/elasticsearch/log
    ports:
      - 29200:29200
      - 29300:29300
    network_mode: "host"

5.证书创建
##(0)下载工具包
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.tar.gz
##(1)创建证书
$ pwd
/alidata1/admin/tools/elasticsearch-6.8.6
$ ./bin/elasticsearch-certutil ca --pem --out ca.zip --days 36500 -s ## 会生成ca.zip文件
$ unzip ca.zip
$ openssl x509 -in ca/ca.crt -noout -dates ## 查看证书有效期
notBefore=Jun 9 02:15:46 2020 GMT
notAfter=May 16 02:15:46 2120 GMT
$ ./bin/elasticsearch-certutil cert --ca-cert ca/ca.crt --ca-key ca/ca.key --pem --name ks-es --out ks-es.zip --days 36500 -s ## 会生成ks-es.zip文件
$ unzip za-test.zip
$ openssl x509 -in za-test/za-test.crt -noout -dates ## 查看证书有效期
notBefore=Jun 9 02:24:27 2020 GMT
notAfter=May 16 02:24:27 2120 GMT

##(2)将证书拷贝到对应目录
$ mkdir config/certs
$ cp ca/* za-test/* config/certs
#(3)将新证书拷贝到集群所有机器
$ scp config/certs/* xxxx

#(3)修改配置
...
# ssl
xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: certs/za-test.key
xpack.security.transport.ssl.certificate: certs/za-test.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca.crt

6.常用命令
(1)查看es节点个数
curl -XGET -uelastic:123456 "http://192.168.1.240:29200/_cat/nodes?v"
(2)查看es集群状态

  curl -XGET -uelastic:123456 "http://192.168.1.240:29200/_cluster/health?pretty"