一、环境说明
   1、物理机信息(主要):
      内存:8G
      系统/主频:Win7(旗舰版)64位/3.70GHZ 
   2、虚拟机信息: 
      VMware Workstation 14 Pro
      下载地址: 链接:https://pan.baidu.com/s/1X4RtZdQxL6HWGH1pAYyBhg 提取码:26iv 
   3、镜像信息:
      CentOS-7-x86_64-DVD-1804.iso
      下载地址:http://ftp.sjtu.edu.cn/centos/7/isos/x86_64/
   4、ElasticSearch:
      版本:elasticsearch-6.5.3.tar.gz
      下载地址:https://www.elastic.co/downloads/elasticsearch
二、安装步骤
    1、安装VMware/系统镜像
       具体安装步骤参考:
       说明:
       <1> 为后期操作方便建议将"GONME桌面"安装上
       <2> 如果在内网环境安装,建议全量安装(即"开发工具"、"安全性工具"、"传统X Windows系统的兼容性"、"调试工具"等安装上)
       <3> 本次需要3个ES节点,故需要创建3个虚拟机
       
    2、配置通信网络(root用户登录操作)
       最终目标:物理机与3个虚拟机之间互相ping通、3个虚拟机之间互相ping通
       <1> 设置网络连接模式为 NAT
       <2> 设置IP(实际环境文件名:ifcfg-eth0  文件示例) 
           vi /etc/sysconfig/network-scripts/ifcfg-ens33
           生效:重启系统 命令:reboot
           假设配置的三台虚拟机地址分别为:192.168.1.1  192.168.1.2 192.168.1.3 
       <3> 设置主机名  
           vi /etc/hostname  新增如下内容 (若没生效则需要重启)
           如果当前主机IP为192.168.1.1,则新增es1
           如果当前主机IP为192.168.1.2,则新增es2
           如果当前主机IP为192.168.1.3,则新增es3
       <4> 配置主机名、IP映射关系
           vi /etc/hosts  新增如下内容
           192.168.1.1 es1
           192.168.1.2 es2
           192.168.1.3 es3
       <5> 开放端口(9200:与ES通信的http端口 5601:与kibana通信的http端口)       
           查询端口是否开放:firewall-cmd --query-port=9200/tcp
           开放9200端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
           生效:firewall-cmd --relaod
           解决问题:通过curl或者浏览器不能访问ES(集群)节点
       
    
    3、虚拟机系统配置
       说明:a、3个虚拟机都需要配置  b、以root用户登录操作
       <1> limits.conf
           vi /etc/security/limits.conf   新增如下内容
           *    soft nofile 65536
           *    hard nofile 131072
           *    soft nproc  4096
           *    hard nproc  4096
           避免问题: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
       <2> 20-nproc.conf
           vi /etc/security/limits.d/20-nproc.conf  修改
           *    soft nproc  4096
           *    hard nproc  4096       
           避免问题: max number of threads [3764] for user [xx] is too low, increase to at least [4096];
       <3> sysctl.conf
           vi /etc/sysctl.conf 新增如下内容
           vm.max_map_count = 655360
           执行操作,更新生效:sysctl -p
           避免问题:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]   
       <4> 关闭防火墙
           查看防火墙状态:firewall-cmd --state
           关闭防火墙:systemctl stop firewalld.service
           参考:
           避免问题:org.elasticsearch.discovery.MasterNotDiscoveredException: waited for [30s]
           
    4、创建用户
       说明:a、3个虚拟机都需要配置  b、以root用户登录操作
       创建用户组:groupadd es
       创建用户:   useradd es -g es    
       更改密码:  passwd es            
    
    5、创建安装包、数据、日志存放目录
       说明:a、3个虚拟机都需要配置  b、以root用户登录操作
       <1> 创建软件包存放位置,如 
            mkdir /app/es
       <2> 创建数据存放目录,如 
            mkdir /app/es/data
       <3> 创建日志存放目录,如 
           mkdir /app/es/log
           说明: <2> <3> 可以一起创建 
           命令:mkdir /app/es/data /app/es/log
       <4> 为上述目录赋es用户相关权限
           chown -R es:es /app
           
    6、上传、解压软件包(elasticsearch-6.5.3.tar.gz)至上述目录(es用户操作)
       解压elasticsearch-6.5.3.tar.gz
       cd /app/es/
       tar -zxvf elasticsearch-6.5.3.tar.gz elasticsearch-6.5.3

    7、配置elasticsearch.yml(es用户操作)
       <1> 进入elasticsearch解压后的目录
           cd /app/es/elasticsearch-6.5.3/config
           vi elasticsearch.yml 
           编辑内容 参见附件:
           说明:
               a、改一个节点的elasticsearch.yml,其他节点可直接远程复制,只用修改节点名称、节点IP2个地方即可
               b、远程复制命令:scp -r 用户名@主机名:源文件路径  源文件存放路径
        <2> 主要配置项说明
            cluster.name: 集群名(一个集群所有节点的集群名称必须一致)
node.name: 节点名(不同节点,名称不能一致)
node.master: 主节点(true:是 false:不是)
node.data: 存储数据(true:存储 false:不存储)
node.ingest: 参与选举(true:参与 false:不参与)
            path.data: 数据存放路径
            path.logs: 日志存放路径
            bootstrap.memory_lock: 避免内存交换(需设置为false),参考:https://elasticsearch.cn/article/149
            bootstrap.system_call_filter: Centos6不支持SecComp---需设置为false,如果为CentOS7则可设置为true
network.host: 节点ip
http.port: 节点端口
transport.tcp.port: 节点之间通信端口
http.cors.enabled: 跨域访问(一般为true)
http.cors.allow-origin: 跨域访问(一般为"*")
discovery.zen.ping.unicast.hosts: 主节点:节点通信端口 数组形式呈现 示例["192.168.1.1:9300","192.168.1.2:9300"] 
注意:示例中 192.168.1.1和192.168.1.2 两个节点node.master、node.ingest这两个属性都得为true
discovery.zen.minimum_master_nodes: 设置最小主节点个数,一般为:(master_node_count+1)/2  说明:master_node_count:设置node.master=true的节点个数
8、启动ES集群(es用户操作)
       <1> 进入es1(节点1)elasticsearch解压目录bin路径下,示例:
           cd /app/es/elasticsearch-6.5.3/bin   
       <2> 启动 
           ./elasticsearch &
       <3> 启动另外两个节点

 

三、验证   
   <1>方式一:浏览器
         http://192.168.1.1:9200/_cat/nodes?v
         示例:
<2>方式二:安装ElasticSearch-Head.crx查看
         示例: