美文网首页
ES集群安装搭建

ES集群安装搭建

作者: _空格键_ | 来源:发表于2020-05-16 20:18 被阅读0次

    ES版本依赖: https://www.elastic.co/cn/support/matrix

    环境

    • Linux CentOS-7.6
    • JDK 8+

    三台服务器:

    IP hostname
    x.x.x.101 s01
    x.x.x.102 s02
    x.x.x.103 s03

    准备

    现在完成后上传至Linux服务器。比如通过ssh rz 命令上传到home目录

    [root@s01 ~]# rz 
    [root@s01 ~]# ls 
    elasticsearch-7.7.0-linux-x86_64.tar.gz 
    

    安装

    1. 创建es用户组 useradd es
      注意:ES不能运行在 root 用户下,需创建普通用户
    2. 解压es安装包到/opt目录下 tar -xzvf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /opt/
    3. 修改目录所属用户和组 chown -R es:es /opt/elasticsearch-7.7.0

    配置

    1. 创建存放数据与日志的目录并授权用户
    [root@s01 ~]# cd /srv/
    [root@s01 srv]# mkdir es
    [root@s01 es]# cd es/
    [root@s01 es]# mkdir {data,logs}
    [root@s01 es]# chown -R es:es /srv/es
    
    1. 修改Elasticsearch配置
      vim /opt/elasticsearch-7.7.0/config/elasticsearch.yml
    cluster.name: es    # ES集群名
    node.name: node-1   # 当前节点名,不同节点填写不同名称
    path.data: /srv/es/data # 数据存放路径
    path.logs: /srv/es/logs # 日志存放路径
    bootstrap.memory_lock: false # 锁定物理内存地址,防止es内存被交换(swap)出去。这里先不锁定
    network.host: 192.168.1.151 # 绑定IP地址,设置本节点IP
    http.port: 9200             # HTTP访问端口
    http.cors.enabled: true     # 开启跨域访问
    http.cors.allow-origin: "*" # 允许任何访问
    discovery.seed_hosts: ["s01.ts.com", "s02.ts.com", "s03.ts.com"] # 集群选举时,可通信的候选地址(hostname, ip, ip:port)
    cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] # 集群初始化的提供的master候选地址,第一次启动时将从该列表中获取master
    

    安装可视化工具

    这里选择 ElasticHD ,解压即可使用。

    [root@s01 ~]# firewall-cmd --permanent --zone=public --add-port=9800/tcp --permanent
    success
    [root@s01 ~]# firewall-cmd --reload      # 重启防火墙
    success
    [root@s01 ~]# cd /opt/elasticHD/
    [root@s01 elasticHD]# su es
    [es@s01 elasticHD]$ nohup ./ElasticHD > ./eshd.log 2>&1 &
    [1] 17317
    

    有关ES可视化工具,参见下面附录

    启动

    1. 切换到es安装目录 cd /opt/elasticsearch-7.7.0
    2. 切换用户 su es
    3. 启动
    ./bin/elasticsearch
    /bin/elasticsearch -d  # 后台启动
    
    1. 查看服务是否启动成功
      (1) 通过查看端口占用情况9200,9300
    [root@s01 ~]$ netstat -ntlp
    tcp6       0      0 192.168.200.101:9200    :::*                    LISTEN      15779/java          
    tcp6       0      0 192.168.200.101:9300    :::*                    LISTEN      15779/java
    
    • Java Api: java代码调用es的API方式,默认端口: 9300
    • RESTful API: 基于http协议,任何语言都可以交互,默认端口: 9200

    问题解答

    1. 不能使用root用户运行

    报错如下,切换至非root用户即可

    java.lang.RuntimeException: can not run elasticsearch as root
    

    2. JDK版本不符合要求

    future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk1.8.0_231/jre] does not meet this requirement
    

    ES未来的把版本要求匹配JDK 11,这里可以忽略。

    • 要使用自己的Java版本,设置JAVA_HOME环境变量即可,且Java是受支持的LTS版本。
    • 如果使用的版本不匹配,ES拒绝启动。
    • 使用自己的JVM时,可以删除捆绑的JVM目录(es解压目录下的jdk目录)。
      说明看这里

    3. ERROR: [3] bootstrap checks failed

    ERROR: [3] bootstrap checks failed
    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
    [2]: max number of threads [3795] for user [es] is too low, increase to at least [4096]
    [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    

    启动检查失败,这里有三个错误。
    [1] es进程的最大文件描述符[4096]太低,请至少增加到[65535]
    [2] 用户[es]的最大线程数[3795]太低,请至少增加到[4096]
    [3] 最大虚拟内存区域[65530]太低,请至少增加到[262144]

    修改limits.conf配置 vim /etc/security/limits.conf 在末尾添加如下内容:

    * soft nofile 65535
    * hard nofile 65535
    * soft nproc 4096
    * hard nproc 4096
    

    修改sysctl.conf配置 vim /etc/sysctl.conf 在末尾添加如下内容:

    vm.max_map_count = 655300
    

    修改保存之后重新加载配置

    sysctl -p
    

    4. 正常启动,外网访问不到

    查看防火墙状态,看防火墙是未开启此端口。

    [root@s01 ~]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
       Active: active (running) since 一 2020-05-11 11:26:54 CST; 5 days ago
         Docs: man:firewalld(1)
     Main PID: 6653 (firewalld)
       CGroup: /system.slice/firewalld.service
               └─6653 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
    
    5月 11 11:26:51 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
    5月 11 11:26:54 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
    
    [root@s01 ~]# firewall-cmd --permanent --query-port=9200/tcp
    no
    

    直接关闭防火墙(比较暴力)

    [root@s01 ~]# systemctl stop firewalld
    

    或者开启端口

    [root@s01 ~]# firewall-cmd --permanent --zone=public --add-port=9200/tcp --permanent
    success
    [root@s01 ~]# firewall-cmd --permanent --query-port=9200/tcp
    yes
    [root@s01 ~]# firewall-cmd --reload      # 重启防火墙
    success
    

    浏览器可以成功访问: http://192.168.200.101:9200

    image.png

    5. master not discovered yet

    日志不停的打印警告,主节点没有发现,原因是9300端口防火墙没有放开,因为节点通信、发现、选举master,默认使用9300端口。

    [2020-05-16T21:49:31,592][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-3] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [node-1, node-2, node-3] to bootstrap a cluster: have discovered [{node-3}{NiGARuh-SbC28_voF4ZHtQ}{RF26rHS2RACiqkYuqdOZ1Q}{192.168.200.103}{192.168.200.103:9300}{dilmrt}{ml.machine_memory=1019797504, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]; discovery will continue using [192.168.200.101:9300, 192.168.200.102:9300] from hosts providers and [{node-3}{NiGARuh-SbC28_voF4ZHtQ}{RF26rHS2RACiqkYuqdOZ1Q}{192.168.200.103}{192.168.200.103:9300}{dilmrt}{ml.machine_memory=1019797504, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}] from last-known cluster state; node term 0, last-accepted version 0 in term 0
    

    附录

    ES官网: https://www.elastic.co/cn/elasticsearch
    官网文档: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
    中文社区: https://elasticsearch.cn/

    ES常用工具清单: https://blog.csdn.net/laoyang360/article/details/80645710

    相关文章

      网友评论

          本文标题:ES集群安装搭建

          本文链接:https://www.haomeiwen.com/subject/qaicohtx.html