Linux 系统 ElasticSearch的安装和启动
安装环境
Linux(centos)
下载地址
https://www.elastic.co/cn/downloads/elasticsearch
安装步骤
- 切换到ES安装目录,如 /www;
- 在www目录下,创建elasticsearch文件夹,并进入文件夹内;
mkdir elasticsearch
cd elasticsearch
- 获取elasticearch安装包;
可以使用在线下载命令,下载安装包。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-linux-x86_64.tar.gz
也可以将之前已经下载好的安装包上传到当前目录下。
- 解压elasticsearch安装包;
tar -zvxf elasticsearch-8.17.0.tar.gz
- 进入elasticsearch-8.17.0/config文件夹内,修改配置文件;
cd elasticsearch-8.17.0/config
定位到#network.host: 192.168.0.1位置,在下面增加一行:
network.host: 0.0.0.0
保存并退出(先按esc键,输入:wq!,按回车键即可)
-
配置JVM ;
设置 es 启动内存、根据系统配置需要来配置。
-
配置分词器;
添加ik分词器,分词器下载地址 IK Analysis for Elasticsearch
把elasticsearch-analysis-ik-x.x.x.zip在解压的文件夹elasticsearch-analysis-ik-x.x.x复制到 elasticsearch安装目录下的plugins中
analysis-ik 分词器配置文件 IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
- 提高系统资源限制
增加最大文件描述符数量:编辑 /etc/security/limits.conf 文件,添加或修改以下行:
* soft nofile 65535
* hard nofile 65535
elasticsearch soft nofile 65535
elasticsearch hard nofile 65535
增加虚拟内存区域限制:编辑 /etc/sysctl.conf 文件,添加或修改以下行:
vim /etc/sysctl.conf
#加入以下内容
vm.max_map_count = 262144
保存后执行sysctl -p命令刷新生效
- 注册服务,创建配置文件;
1).service文件
vim /usr/lib/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch
After=network.target
[Service]
Type=forking
User=elasticsearch
Group=elasticsearch
ExecStart=/usr/local/elasticsearch/elasticsearch-8.17.0/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
启动脚本
在 /etc/init.d 目录下创建一个名为 elasticsearch 的脚本
#!/bin/bash
# Elasticsearch environment variables
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export ES_HOME=/usr/share/elasticsearch
export ES_PATH_CONF=/etc/elasticsearch
# Start the service
case "$1" in
start)
echo "Starting Elasticsearch..."
su -c "/usr/share/elasticsearch/bin/elasticsearch" elasticsearch
;;
stop)
echo "Stopping Elasticsearch..."
pkill -f 'elasticsearch'
;;
restart|force-reload)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 3
;;
esac
exit 0
设置脚本可执行
sudo chmod +x /etc/init.d/elasticsearch
10.非 Root 用户运行 Elasticsearch
由于安全原因,Elasticsearch 不允许以 root 用户运行。需要创建一个专用的用户来运行 Elasticsearch。
创建用户和组:
sudo groupadd elasticsearch
sudo useradd -g elasticsearch elasticsearch
- 启动并启用服务;
服务相关命令
# 启动服务
systemctl start elasticsearch
查看服务状态:
systemctl status elasticsearch
# 重启服务
systemctl restart elasticsearch
# 停止服务
systemctl stop elasticsearch
# 禁止开机启动
systemctl disable elasticsearch
# 启用开机启动
systemctl enable elasticsearch
- 打开 9200,访问 ip:9200 查看是否启动成功;
设置密码
- 启动elasticsearch服务
systemctl start elasticsearch
- 切换到 elasticsearch 安装文件目录 bin 下
cd /xxx/elasticsearch/elasticsearch-8.17.0/bin
- 使用 elasticsearch-certutil 命令生成证书
./elasticsearch-certutil ca -out config/certs/elastic-certificates.p12 -pass
保证 elasticsearch 正常运行时才可以运行此命令,运行后显示
Enter password for CA Private key :
不要输入直接按回车就行,按完回车后会出来
Directory /www/elasticsearch/elasticsearch-8.17.10/config/certs does not exist. Do you want to create it? [Y/n]
直接输入y,然后回车
- 修改 elasticsearch.yml 配置
加入下面内容
# 开启xpack
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
# 证书配置
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
- 重启 elasticsearch
systemctl restart elasticsearch
- 设置用户密码
# 手动配置每个用户密码模式(需要一个一个的输入)
./elasticsearch-setup-passwords interactive
#自动配置每个用户密码(随机生成并返回字符串密码,需要保存好)
./elasticsearch-setup-passwords auto
部分内置账号的角色权限解释如下:
elastic 账号:拥有 superuser 角色,是内置的超级用户。
kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。
logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用
- 修改密码
以 elastic 账号为例,注意需要在 elasticsearch 服务已启动的情况下进行
curl -H 'Content-Type: application/json' -u elastic:123456 -XPOST 'http://localhost:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "1234567" }'