本地安装
创建启动用户
elasticsearch不能由root用户启动
安全性:以root用户身份启动Elasticsearch会增加系统受到攻击的风险。Elasticsearch的进程可能会受到来自外部的恶意攻击,如果以root用户身份启动,攻击者可能会获取到root权限,从而对系统造成严重的损害。
最小权限原则:根据最小权限原则,任何程序都应该以最低权限来运行。以root用户身份启动Elasticsearch意味着它拥有了系统上的最高权限,这可能导致意外的权限问题和系统不稳定。
# 创建es
adduser es
# 设置密码
passwd es
# 切换到es用户
su es
下载
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz
解压安装
tar -zxf elasticsearch-7.10.2-linux-x86_64.tar.gz
基础配置
进入elasticsearch-root/config目录,进行基础配置,包括集群名、节点名、文件存储目录等。
cd /elasticsearch-root/config
vi elasticsearch.yml
# 集群名字
cluster.name: es-cluster
# 单节点
discovery.type: single-node
# 节点名字
node.name: node-1
bootstrap.memory_lock: true
# 数据文件存储目录,可以设置多个地址,逗号分隔
# 默认为/elasticsearch-root/data,可不配置
#path.data: /path/to/data
# 日志文件存储目录
# 默认为/elasticsearch-root/logs,可不配置
#path.logs: /path/to/logs
网络配置
根据实际网络环境,进行网络配置。假设现在只有一个网络接口A,IP地址为176.22.6.101,http通信端口9200,transport通信端口9300。
编辑elasticsearch.yml,新增以下配置
# 用于指定节点监听的网络接口地址。这个配置项定义了节点用于通信的网络接口地址,
# 包括HTTP REST接口、内部节点之间的通信接口、跨集群通信接口等。
# 0.0.0.0表示监听本机上所有的网络接口,可以指定为ip地址、主机名等
network.host: 0.0.0.0
# 集群与外部客户端通信端口,使用http协议
http.port: 9200
# 集群内部通信端口,使用es特定的传输协议。
# 这种内部通信是集群中各个节点之间进行数据传输、协调和协作的基础,比如复制数据、协调分片分配等
transport.port: 9300
跨域配置
如果需要跨域访问,编辑elasticsearch.yml,新增以下配置
# 允许跨域访问
http.cors.enabled: true
# 指定允许跨域请求的来源。当浏览器发起跨域请求时,会在请求头中包含Origin字段,指示请求的来源地址
# 在使用一些浏览器插件连接es时需要设置以允许访问,若没有需求则不配置
http.cors.allow-origin: "*"
# 指定允许跨域请求的自定义请求头,从而允许跨域请求中包含指定的自定义请求头
http.cors.allow-headers: "Authorization"
JVM配置
JVM有两种配置方式,一是修改config目录下面的jvm.options文件;而是在config/jvm.options.d目录下新建配置文件。这里使用第二种,只修改Xms、Xmx这两个堆内存配置。
cd elasticsearch-root/config/jvm.options.d
vi jvm.options
# 设置启动堆内存和最大堆内存,推荐将两个堆内存设置相同、各节点尽量一致,大小为可用物理内存的一半,但是最大不超过30GB。
# 超过30GB的堆内存可能会导致垃圾回收的停顿时间过长,因为垃圾回收需要处理更大的内存空间。
# 这可能会对es的性能和稳定性和产生负面影响。
-Xms4g
-Xmx4g
系统配置
切换到root账号,给es用户单独修改系统资源配置,elasticsearch启动时会检查系统配置,如果不符合要求无法启动。
文件打开数量限制
vi /etc/security/limits.conf
# 新增如下配置
es - nofile 65536
创建线程数限制
vi /etc/security/limits.conf
# 新增如下配置
es - nproc 4096
启用内存锁定
vi elasticsearch.yml
# 新增如下配置
bootstrap.memory_lock: true
vi /etc/security/limits.conf
# 新增如下配置
es - memlock unlimited
虚拟内存区域限制
vi /etc/sysctl.conf
# 新增如下配置
vm.max_map_count=262144
刷新配置
sysctl -p
查看虚拟内存区域数量限制
sysctl vm.max_map_count
启动实例
通过es用户启动elasticsearch
cd elasticsearch-root/bin && ./elasticsearch -d
访问实例
http://127.0.0.1:9200/