概述

Elasticsearch简称ES,是一个基于Lucene构建的开源、分布式、Restful接口的全文搜索引擎,还是一个分布式文档数据库。天生就是分布式、高可用、可扩展的,可以在很短的时间内存储、搜索和分析大量的数据。

准备环境

服务器内存推荐2G及以上,否则性能将会受影响

JAVA
[root@master-all ~]# wget https://file.api.ym68.cc/java/jdk-8u241-linux-x64.rpm
[root@master-all ~]# rpm -ivh jdk-8u241-linux-x64.rpm 
Elasticsearch

官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch/

[root@master-all ~]# wget https://file.api.ym68.cc/Package/elasticsearch/elasticsearch-7.9.1-linux-x86_64.tar.gz
[root@master-all ~]# tar zxf elasticsearch-7.9.1-linux-x86_64.tar.gz -C /usr/src/
创建用户并授权
[root@master-all ~]# useradd es
[root@master-all ~]# chown -R es:es /usr/src/elasticsearch-7.9.1/
防火墙放通端口
[root@master-all ~]# firewall-cmd --zone=public --add-port=9200/tcp --permanent
success
[root@master-all ~]# firewall-cmd --zone=public --add-port=19300/tcp --permanent
success
[root@master-all ~]# firewall-cmd --reload
success
修改系统变量
[root@master-all ~]# vim /etc/security/limits.conf 
* soft nofile 65535
* hard nofile 65535
* soft memlock unlimited
* hard memlock unlimited
[root@master-all ~]# vim /etc/sysctl.d/101-elasticsearch.conf
vm.max_map_count = 262144
[root@master-all ~]# sysctl -p /etc/sysctl.d/101-elasticsearch.conf
[root@master-all ~]# reboot

开始部署

备份并编辑配置文件
[root@master-all ~]# cd /usr/src/elasticsearch-7.9.1/config/
[root@master-all config]# cp elasticsearch.yml{,.bak}
[root@master-all config]# vim elasticsearch.yml
node-1
# 设置集群名称,集群内所有节点的名称必须一致。
cluster.name: ymcc-app
# 设置节点名称,集群内节点名称必须唯一,且不可重复
node.name: node-1
# 表示该节点会不会作为主节点,是:true;否:false
node.master: true
# 当前节点是否用于存储数据,是:true;否:false
node.data: true
# 将自定义属性添加到节点
#node.attr.rack: r1

# 数据存储目录的路径(用逗号分隔多个位置):
path.data: /usr/src/elasticsearch-7.9.1/data
# 日志存储路径:
path.logs: /usr/src/elasticsearch-7.9.1/logs
# 启动时锁定内存,内存不足2G请勿开启:
bootstrap.memory_lock: true

# 将绑定地址设置为特定的IP(IPv4或IPv6)
network.host: 192.168.230.203
# 为HTTP设置自定义端口
http.port: 9200
# 集群内部通讯端口
transport.tcp.port: 19300

# 在启动此节点时,传递主机的初始列表以执行发现.主机的默认列表是: ["127.0.0.1", "[::1]"]
# 写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.230.202", "192.168.230.203"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5

# 初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: 192.168.230.202
node-2

slave节点只需变更如下内容

# 设置节点名称,集群内节点名称必须唯一,且不可重复
node.name: node-2
# 表示该节点会不会作为主节点,是:true;否:false
node.master: false
# 当前节点是否用于存储数据,是:true;否:false
node.data: true
# 启动时锁定内存,内存不足2G请勿开启:
bootstrap.memory_lock: true
# 将绑定地址设置为特定的IP(IPv4或IPv6)
network.host: 192.168.230.203
切换es用户并后台启动
[root@master-all config]# cd ../bin/
[root@master-all bin]# su es
[es@master-all bin]$ ./elasticsearch -d

验证

访问http://IP:9200 即可查看信息是否一致

验证集群状态

访问http://IP:9200/_cat/nodes 查看集群节点

其他选项
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
/_cat/ml/anomaly_detectors
/_cat/ml/anomaly_detectors/{job_id}
/_cat/ml/trained_models
/_cat/ml/trained_models/{model_id}
/_cat/ml/datafeeds
/_cat/ml/datafeeds/{datafeed_id}
/_cat/ml/data_frame/analytics
/_cat/ml/data_frame/analytics/{id}
/_cat/transforms
/_cat/transforms/{transform_id}

遇到的问题

主机默认文件数太低
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决方法:

[root@master-all ~]# vim /etc/security/limits.conf 
* soft nofile 65535
* hard nofile 65535
最大虚拟内存过低
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

[root@master-all ~]# vim /etc/sysctl.d/101-elasticsearch.conf
vm.max_map_count = 262144
[root@master-all ~]# sysctl -p /etc/sysctl.d/101-elasticsearch.conf

该文章采用「CC 协议」,转载必须注明作者和本文链接.
分类: Linux