一、 准备条件
机器(三台不同机器,IP瞎写的):
192.168.1.1
192.168.1.2
192.168.1.3jdk: jdk-8u202-linux-x64.tar.gz
es版本:elasticsearch-7.10.1-linux-x86_64.tar.gz
下载地址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch
二、关闭防火墙
关闭
systemctl stop firewalld禁止开机启动防火墙
systemctl disable firewalld查看是否关闭防火墙
systemctl status firewalld
三、创建es普通用户
ES不能使用root用户来启动,必须使用普通用户来安装启动
useradd es
passwd es
四、 ES配置
解压
tar xf elasticsearch-7.10.1-linux-x86_64.tar.gz -C /data/
改名
mv /data/elasticsearch-7.10.1/ /data/elasticsearch
创建存放日志路径
mkdir /data/elasticsearch/startlogs
配置elasticsearch.yml文件内容
备份elasticsearch.yml
cp /data/elasticsearch/config/elasticsearch.yml /data/elasticsearch/config/elasticsearch.yml.bak
elasticsearch.yml 内容
cluster.name: escluster
node.name: es1
network.host: 192.168.1.1
http.port: 9200
discovery.seed_hosts: [“192.168.1.1:9300”,“192.168.1.2:9300”,“192.168.1.3:9300”]
cluster.initial_master_nodes: [“es1”, “es2”,“es3”]
gateway.recover_after_nodes: 2
node.master: true
node.data: true
http.cors.enabled: true
http.cors.allow-origin: “*”
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
cluster.routing.allocation.same_shard.host: true
http.max_content_length: 500mb
配置解释
cluster.name 集群名称,这个名字必须一致
node.name: 节点名称,每台都不能相同,这个名字会在 谷歌的elasticsearch head插件中看到标记
network.host: 当前机器的IP地址
http.port: es的端口
#发现和形成集群需要配置两个重要的参数 discovery.seed_hosts及cluster.initial_master_nodes 以便集群中的节点能发现彼此并选出一个主节点
discovery.seed_hosts: 发现和集群形成设置,以便集群中的节点可以相互发现并选举一个主节点
cluster.initial_master_nodes: 机器的node.name名称
gateway.recover_after_nodes: 设置当指定数量的data或者master(node.master: true)节点加入集群后才开始进行恢复操作
node.master:是否是主节点
node.data: 是否为数据节点
http.cors.enabled: 启动跨域
path.data: 数据存放目录
path.logs: 日志存放目录
cluster.routing.allocation.same_shard.host: 默认值是false,如果设置为true,那么就不允许将一个primary shard和replica shard分配到同一个物理机上。
http.max_content_length: 内容的最大容量
五、JVM调优
vi /data/elasticsearch/config/jvm.options
设置为物理内存一半最佳,可根据服务器内存去选择调-Xms1g 修改为 ===> -Xms2g
-Xmx1g 修改为 ===> -Xmx2g
六、设置权限
chown -R es:es /data/elasticsearch
七、内存优化
vi /etc/sysctl.conf
fs.file-max=655360
vm.max_map_count=655360
执行
sysctl -p 生效
解释:
(1)vm.max_map_count=655360
系统最大打开文件描述符数
(2)vm.max_map_count=655360
限制一个进程拥有虚拟内存区域的大小
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft memlock unlimited
* hard memlock unlimited
解释:
(nofile)最大开打开文件描述符
(nproc)最大用户进程数
(memlock)最大锁定内存地址空间
修改用户进程数,普通用户默认是1024个
vi /etc/security/limits.d/90-nproc.conf
# 修改/etc/security/limits.d/90-nproc.conf
将1024修改为65536
* soft nproc 1024 修改前
.
* soft nproc 65536 修改后
ctrl +d从进终端
ulimit -a查看
八、启动
+d代表后台启动
./elasticsearch -d
查看是否启动
http://192.168.1.1:9200/
九、配置es密码
# 生成CA证书
bin/elasticsearch-certutil ca
# 生成p12密钥: 直接回车: 会多出两个文件
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
# 在config目录下,新建 certs 文件夹
# 将elastic-certificates.p12文件,复制到config/certs文件夹下。
# 将主机es目录下生成的elastic-certificates.p12和elastic-stack-ca.p12复制到从机ES目录下,从机目录下config中创建certs文件夹,将elastic-certificates.p12复制到config/certs文件夹下。
# 添加 elasticsearch.yml 配置,主机和从机上都要加
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
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
#确保所有机器下的config/certs目录下的elastic-certificates.p12用户权限是es用户和es用户组
# 初始化密码: 会有很多的密码要填,直接全写同一个密码,一路填下去
bin/elasticsearch-setup-passwords interactive
# 启动es,再网址中输入密码即可
# 问题:如果密码忘记了,导致连不上
# 1. 把三台机器下的logs都删了,密码配置会在这里面
# 2. 删主节点的这个文件 elasticsearch.keystore
# 3. 删掉nodes节点(可以不删,删掉指定的.security-7索引)
# 4. 然后重新执行 bin/elasticsearch-setup-passwords interactive 重新生成密码
十、分词器
分词器是es中一个组件,它会将一段文本按照一定的逻辑,分析成多个词语,同时对这些词语进行常规化的一种工具;ES会将text格式的字段按照分词器进行分词,并编排成倒排索引,正是因为如此,es的查询才如此之快
# 1. 下载指定版本的分词,根据TAG选版本
https://github.com/medcl/elasticsearch-analysis-ik/tree/v7.10.1
或
https://github.com/medcl/elasticsearch-analysis-ik
# 2. 在/data/elasticsearch/plugins/ 目录下新建 ik 目录, 确保这个目录是es用户和用户组
mkdir /data/elasticsearch/plugins/ik
# 3. 将下载的文件放入ik文件夹下并解压,解压完后删掉压缩文件
unzip elasticsearch-analysis-ik-7.10.1.zip
# 4. 进入到解压后的elasticsearch-analysis-ik-7.10.1文件夹下
yum install maven -y
执行
mvn clean install
# 5.1 会在target目录下的release目录中有生成一个zip包,7.10.1版本生成的是一个后缀为ik-7.4.0.zip的压缩包
# 5.2 将该zip包转移到ik目录下,并且将其它文件夹删掉,生成这个文件后就不需要其它文件了
# 5.3 将改zip包解压, 使用unzip命令
# 6. 更改 plugin-descriptor.properties 文件,将下面两个变量改成自己的es版本号即可
version=7.10.1
elasticsearch.version=7.10.1
# 重启es即可,直接kill杀掉重启就行
十一、Kibana安装
#下载对应版本的kibana
https://www.elastic.co/cn/downloads/past-releases#kibana
# 解压
tar -zxvf kibana-7.10.1-linux-x86_64.tar.gz
# 迁移
mv kibana-7.10.1-linux-x86_64 /data/elasticsearch/kibana-7.10.1
# 修改配置
cd /config
vi kibana.yml
server.port: 5601 #对外端口
server.host: "0.0.0.0" #绑定的IP,0.0.0.0支持外网所有主机访问
elasticsearch.hosts: ["http://192.168.1.1:9200", "http://192.168.1.2:9200","http://192.168.1.3:9200"] #配置elasticsearch服务器地址,开启Xpack时用https
i18n.locale: "zh-CN" #使用中文展示
# 因为kibana不能root启动,设置成es用户
chown -R es:es /data/elasticsearch/kibana-7.10.1
# 启动
nohup ./kibana &