linux中的ES集群部署

172 阅读2分钟

准备

  1. 获取ES的软件包,官网下比较慢,可以找国内的镜像。笔者使用的是7.4.2版本
  2. 准备3台服务器,没有这么多设备就只能装在一台机器中。笔者使用三台云服务器 100.106.204.181
    100.120.199.61
    100.106.205.9

开始

  1. 将软件包上传到服务器的/usr/local目录,并解压。
  2. 在linux中启动es不用使用root用户,因此需要创建一个非root用户 useradd -U es 创建es用户以及es用户组
  3. 将ES的目录用户和用户组修改为es chown -R es:es elasticsearch-7.4.2
  4. 修改config目录下的elasticsearch.yml文件
  • cluster.name:集群名称
  • node.name: 节点名称,不同机器需要不同,三台机器分别使用node-1 node-2 node-3
  • path.logs: 数据路径,用户自己指定,为了方便笔者直接放在了工程目录下,不建议
  • network.host: 本机绑定IP,笔者使用服务器的外部IP,不设置默认绑定127.0.0.1,无法在生产环境中使用
  • http.port: 端口,保持9200默认值
  • discovery.seed_hosts: 候选主节点,之后的主节点在这些节点中进行选举,建议填入所有可能成为主节点的节点,若端口不是9200,要以host:port的形式填写
  • cluster.initial_master_nodes: 首次选举时参与投票的节点,官方建议在生产环境中使用该配置。
  1. 调用bin/elasticsearch启动进程

常见问题

  1. 启动时报 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
    该问题是由于文件句柄数不足导致,es需要大量的文件句柄。使用ulimit -u 65535临时修改,用户登出后不生效。需要永久生效执行echo "es - nofile 65535" >> /etc/security/limits.conf,其中的es为用户名

  2. 启动时max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

该问题是由于虚拟内存不足,执行echo "vm.max_map_count=262144" >> /etc/sysctl.conf;sysctl -p进行修改