← 返回博客列表

linux部署ElasticSearch集群

集群服务器是三台,每台都需要按以下步骤操作,有区别配置会单独标注

安装包已上传服务器

//解压到目录 /usr/local

sudo tar -zxvf elasticsearch-7.13.0-linux-x86_64.tar.gz  -C /usr/local

将jdk修改为es中自带jdk的配置目录

cd /usr/local/elasticsearch-7.13.0

vi ./bin/elasticsearch-env

#添加到头部 (#!/bin/bash后)

export JAVA_HOME=/usr/local/elasticsearch-7.13.0/jdk
export PATH=$JAVA_HOME/bin:$PATH

if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/usr/local/elasticsearch-7.13.0/jdk/bin/java"
else
        JAVA=`which java`
fi

修改elasticsearch 默认分配 jvm 内存 (设置服务器内存的50%),如32G则设置16G

 vi config/jvm.options

-Xms16G
-Xmx16G

ES 使用单独用户管理

# 添加单独的ES用户

useradd user-es  

设置端口、允许远程访问、ES节点名称、绑定集群IP(需要与IT确认)

vi  config/elasticsearch.yml

# 直接在底部添加  
cluster.name: audit-wiki
http.port: 9202
network.host: 0.0.0.0  
# 该节点是主节点
node.master: true
# 该节点存储数据
node.data: true
#注意此IP需要与IT确认,用于发现集群中的其他节点
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102", "192.168.1.103"]
# 指定可选主节点的名称
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

#注意 三台服务器节点 分别设置为node-1、node-2、node-3
node.name: node-1

注:与IT确定数据盘的路径,如何没有单独数据盘,可忽略

mkdir -p /data/es-data/
mkdir -p /data/es-logs/


chown user-es:user-es -R /data/es-data/
chown user-es:user-es -R /data/es-logs/

vi  config/elasticsearch.yml

#新增
path.data: /data/es-data
path.logs: /data/es-logs

解决 elasticsearch用户拥有的内存权限太小,至少需要 62144,解决办法:

在 /etc/sysctl.conf 文件最后添加如下内容,
 
vi /etc/sysctl.conf

#最后添加如下内容
vm.max_map_count=655360

#保存退出,刷新配置文件
sudo sysctl -p

解决 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

vi /etc/security/limits.conf
#结尾添加如下内容 

* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

安装IK分词器插件,


cd /usr/local/elasticsearch-7.13.0/plugins
mkdir ik
cd ik

//上传elasticsearch-analysis-ik-7.13.0.zip 到此路径
//解压 即可
unzip elasticsearch-analysis-ik-7.13.0.zip

以上操作每台服务器都需要执行

之后依次使用专用用户启动ES

 
chown user-es:user-es -R /usr/local/elasticsearch-7.13.0

su user-es
/usr/local/elasticsearch-7.13.0/bin/elasticsearch -d

设置登录密码,也需要每台都添加

vi ./config/elasticsearch.yml
# 最后添加

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

重新启动ES

再其中一台服务器中设置密码即可, 设置 elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user

./bin/elasticsearch-setup-passwords interactive

# 确认y后输入一直粘贴密码   qwertyu8J

设置默认中文分词,为所有新创建的索引设置默认的分词器,使用索引模板(index template),索引模板命令如下:

curl 'http://localhost:9202/_index_template/default_analyzers' --user elastic:qwertyu8J  -X PUT -H "Content-Type:application/json"  -d '
{
  "index_patterns": ["*"],
  "template": {
    "settings": {
      "analysis": {
        "analyzer": {
          "default": {
            "type": "ik_max_word"
          },
          "default_search": {
            "type": "ik_smart"
          }
        }
      }
    }
  },
  "priority": 1
}'

显示 {"acknowledged":true} 说明设置成功

其他:

因ES默认只显示10000条记录,所以站点启动完成后,需要手动设置ES索引的最大查询数量

curl 'http://localhost:9202/_all/_settings' --user elastic:qwertyu8J  -X PUT -H "Content-Type:application/json"  -d '{ "index": {"max_result_window":5000000}}'

ES安装完!