安装
下载
最新版本下载地址:https://www.elastic.co/cn/downloads/elasticsearch
直接下载需要自行将使用远程连接工具上传到服务器
我们这里使用wget方式下载
前言,因为在elasticsearch8版本之后不再兼任 jdk1.8所以我们这里下载的是 elasticsearch7的一个版本
-
安装 wget(centos一般都已经下载好了 wget)
yum install wget -y
-
下载压缩包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.1-linux-x86_64.tar.gz
地址复制方式为鼠标移动到下载按钮上,右键复制连接地址
-
解压缩
tar -zxvf elasticsearch-7.16.1-linux-x86_64.tar.gz
-
进入到 elasticsearch 目录中
-
修改 elasticsearch.yml 配置
cd config/
vim elasticsearch.yml
# 修改网卡 127.0.0.1表示只允许当前系统访问,如果想要对外访问则可以改为 0.0.0.0 network.host: 0.0.0.0 # 访问端口,默认也是9200 http.port: 9200
-
修改es内存问题
修改配置文件 vim config/jvm.options # 修改前 ## -Xms4g ## -Xmx4g # 修改后 -Xms1g -Xmx1g
启动elasticsearch
./bin/elasticsearch
出现错误
-
不建议使用JAVA_HOME,请使用ES_JAVA_HOME``Elasticsearch的未来版本将需要Java 11;您的Java版本[/usr/local/jdk1.8.0_351/jre]不符合此要求。考虑切换到带有捆绑JDK的Elasticsearch发行版。如果您已经在使用带有绑定JDK的发行版,请确保没有设置JAVA_HOME环境变量。警告:不支持使用JAVA_HOME,请使用ES_JAVA_HOME
这个时候我们就需要使用 jdk11版本,并告诉我们需要使用
ES_JAVA_HOME
不建议使用JAVA_HOME
,我们这个时候就可以使用es给我们自带的jdk配置到环境变量中 -
配置环境变量
-
# 打开配置文件 vim /etc/profile
-
# 在最后添加一下内容 /mydata/elasticsearch/elasticsearch-7.16.1/jdk是你es存放的路径 export ES_JAVA_HOME=/mydata/elasticsearch/elasticsearch-7.16.1/jdk export PATH=$ES_JAVA_HOME/bin:$PATH
-
# 刷新资源 source /etc/profile
-
第二次启动 es
# 进入es目录
cd /mydata/elasticsearch/elasticsearch-7.16.1/
# 启动es
./bin/elasticsearch
新错误出现
因为 es 处于安全考虑,不允许使用 root 用户运行es,我们就需要单独创建一个用户来运行es
# 创建用户组
groupadd es
# 创建 es 用户 并指定用户组
adduser -g es es
# 给 es 用户设置密码
passwd es
# 将当前目录交给 es 用户来操作(也可以理解为赋予权限)
chown -R es:es .
修改前
修改后
第三次启动
用户创建完毕之后再次尝试启动
# 切换用户
su es
# 启动 es
./bin/elasticsearch
使用 ps 命令再次查看
ps -ef | grep elasticsearch
后台启动
./bin/elasticsearch -d
隔了一段时间后再次出现错误
引导检查失败[3]的[1]:elasticsearch进程的最大文件描述符[4096]太低,增加到至少[65535]
这个问题是因为 ES需要大量的创建索引文件,需要大量打开系统的文件,所以我们需要解除linux系统当中打开文件最大数限制,不然ES启动就会抛错。
# 切换到root用户
su root
# 编辑 limits.conf 配置文件
vim /etc/security/limits.conf
# 末尾添加如下配置(报错至少有多少就配置多少,我这里是65535):
es soft nofile 65535
es hard nofile 65535
es soft nproc 4096
es hard nproc 4096
在这里第四次启动的错误已经出现了可以直接也一起配置了
第四次尝试启动
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# 切换 root 用户
su root
# 修改sysctl.conf配置
vim /etc/sysctl.conf
# 追加以下内容
vm.max_map_count=262144
# 保存后执行下面命令
sysctl -p
第五次启动
默认的发现设置不适合生产使用;至少有一个[发现]。seed_hosts,发现。seed_providers,集群。必须配置Initial_master_nodes
-
discovery. seed_hosts 集群主机列表
-
discovery.seed_providers 基于配置文件配置集群机列表
-
cluster. initial_master_nodes 启动时初始化的参数与选主的node,生产环境必填
vim config/elasticsearch.yml # 添加配置 discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"] # 注意前面不允许有空格,否则也会出现错误
第六次启动
./bin/elasticsearch -d
最终在五次失败后,在第六次启动成功
权限问题
启动一段时间后出现权限不够路径为 (/mydata/elasticsearch/elasticsearch-7.16.1/logs/elasticsearch.log
,但是es是正常运行的。
# 进入目录查看
cd /mydata/elasticsearch/elasticsearch-7.16.1/logs/
这里我们看到 elasticsearch.log 权限属于root用户
因为 logs 日志文件是es后面生成的。所以再次赋予权限
那我们在这个目录下在赋予一次权限
chown -R es:es .
赋予权限之后再次启动就没问题了
外部访问查看elasticsearch
# 开放9200端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 查看9200端口
firewall-cmd --query-port=9200/tcp
# 重启防火墙
firewall-cmd --reload
访问 http://ip:9200