本教程节点都在同一个机器上部署,在不同机器上部署可以直接将对应ip改掉就可以了。
1. 安装前系统环境准备(安装几台机器就准备几台机器,重复此操作)
由于ElasticSearch无法使用root用户进行启动(基本上该公司的全家桶都不能用root启动,就算是启动了也有莫名的错误,所以建议该公司相关的软件全部使用普通用户启动),所以这里我们新建一个用户,并修改该用户权限。
- 新建用户
useradd es
- 修改用户相关权限
- 修改用户可创建文件数目
vi /etc/security/limits.conf
# 然后添加如下内容
es soft nproc 5000
es hard nproc 5000
es soft nofile 65536
es hard nofile 65536
- 修改最大内存限制
vi /etc/sysctl.conf
# 添加下面的配置
vm.max_map_count=655360
# 保存好后执行命令
sysctl -p
- JDK环境配置
- 如果JDK已经配好,那么要确定的是es用户是否可以访问,jdk安装在root目录下则要重新安装,要配置好JDK
- 推荐使用yum来安装jdk
- 进入es用户输入java -vsrsion 如无则需要安装过jdk
2. 节点部署启动
- 下载安装包到指定目录下。
可以提前下载好安装包移到需要部署的地方进行解压部署也可以执行在想部署的机器上执行该命令
# 进入安装目录
cd /opt
# 下载该文件
wget 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz'
# 解压该文件
tar -zxf elasticsearch-7.5.1-linux-x86_64.tar.gz
# 依次拷贝
cp -R elasticsearch-7.5.1 elasticsearch-01
cp -R elasticsearch-7.5.1 elasticsearch-02
cp -R elasticsearch-7.5.1 elasticsearch-03
# 给文件夹改变权限
chown -R es:es elasticsearch-01
chown -R es:es elasticsearch-02
chown -R es:es elasticsearch-03
# 进入es用户
su es
- 解压后有以下三个文件夹
3. 安装插件
在各es分别都要执行
- 安装ik分词器
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip
- 安装pinyin
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.5.1/elasticsearch-analysis-pinyin-7.5.1.zip
4. 依次修改配置文件(config目录下的elasticsearch.yml)
如果配置好一个节点,然后启动再拷贝另一个节点时,务必移除··拷贝后目录··下的data文件夹(拷贝后,新节点目录下,不是已启动节点!),如果不删除则会报错
节点node-1
# 配置es集群名称,相同名称的集群会自动识别
cluster.name: cluster01
# 集群节点名称会自动获取本机hostname,如果不是多实例部署,可不配置该项
node.name: node-1
# 是否为主节点
node.master: true
# 是否开启数据节点
node.data: true
# 预处理数据
node.ingest: true
# 指定数据存放目录,多目录逗号分隔,可以配置相对ES根目录路径
path.data: data
# 指定日志存放目录,可以配置相对ES根目录路径
path.logs: logs
# 指定本机ip地址
network.host: 0.0.0.0
# 指定http协议端口,默认9200,多实例部署时需要修改
http.port: 9201
# 是否允许跨域请求
http.cors.enabled: true
# 允许跨域请求的地址,*代表所有
http.cors.allow-origin: "*"
# 指定tcp协议端口,默认9300,多实例部署时需要修改
transport.port: 9301
# 广播节点
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
# 指定主节点列表,需要在每个节点上配置该参数,可以是节点名称,也可以是IP地址
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 在完全群集重新启动后阻止初始恢复,直到n个节点启动
gateway.recover_after_nodes: 3
# 设置许可证(基础版)
xpack.license.self_generated.type: basic
节点node-2
# 配置es集群名称,相同名称的集群会自动识别
cluster.name: cluster01
# 集群节点名称会自动获取本机hostname,如果不是多实例部署,可不配置该项
node.name: node-2
# 是否为主节点
node.master: true
# 是否开启数据节点
node.data: true
# 预处理数据
node.ingest: true
# 指定数据存放目录,多目录逗号分隔,可以配置相对ES根目录路径
path.data: data
# 指定日志存放目录,可以配置相对ES根目录路径
path.logs: logs
# 指定本机ip地址
network.host: 0.0.0.0
# 指定http协议端口,默认9200,多实例部署时需要修改
http.port: 9202
# 是否允许跨域请求
http.cors.enabled: true
# 允许跨域请求的地址,*代表所有
http.cors.allow-origin: "*"
# 指定tcp协议端口,默认9300,多实例部署时需要修改
transport.port: 9302
# 广播节点
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
# 指定主节点列表,需要在每个节点上配置该参数,可以是节点名称,也可以是IP地址
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 在完全群集重新启动后阻止初始恢复,直到n个节点启动
gateway.recover_after_nodes: 3
# 设置许可证(基础版)
xpack.license.self_generated.type: basic
节点node-3
# 配置es集群名称,相同名称的集群会自动识别
cluster.name: cluster01
# 集群节点名称会自动获取本机hostname,如果不是多实例部署,可不配置该项
node.name: node-3
# 是否为主节点
node.master: true
# 是否开启数据节点
node.data: true
# 预处理数据
node.ingest: true
# 指定数据存放目录,多目录逗号分隔,可以配置相对ES根目录路径
path.data: data
# 指定日志存放目录,可以配置相对ES根目录路径
path.logs: logs
# 指定本机ip地址
network.host: 0.0.0.0
# 指定http协议端口,默认9200,多实例部署时需要修改
http.port: 9203
# 是否允许跨域请求
http.cors.enabled: true
# 允许跨域请求的地址,*代表所有
http.cors.allow-origin: "*"
# 指定tcp协议端口,默认9300,多实例部署时需要修改
transport.port: 9303
# 广播节点
discovery.seed_hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
# 指定主节点列表,需要在每个节点上配置该参数,可以是节点名称,也可以是IP地址
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 在完全群集重新启动后阻止初始恢复,直到n个节点启动
gateway.recover_after_nodes: 3
# 设置许可证(基础版)
xpack.license.self_generated.type: basic
优化配置(可选)
# 设置为true锁住内存,当服务混合部署了多个组件及服务时,应开启此操作,允许es占用足够多的内存。
bootstrap.memory_lock: true
# 设置单个request请求的内存熔断限制,默认是jvm堆的60%(es7后引入了新的内存熔断机制,会智能判断,规避OOM)。
indices.breaker.request.limit: 10%
# 设置segment合并时占用的线程数,配置线程数越多对磁盘io消耗就越大(SSD忽略)。
#index.merge.scheduler.max_thread_count: 1
# query请求可使用的jvm内存限制,默认是10%。
indices.queries.cache.size: 20%
# 查询request请求的DSL语句缓存,被缓存的DSL语句下次请求时不会被二次解析,可提升检索性能,默认值是1%。
indices.requests.cache.size: 2%
# 设置字段缓存的最大值,默认无限制。
indices.fielddata.cache.size: 30%
# 用来对索引数据进行冷热分离,需要注意的是 setting 中也要进行相关配置 "index.routing.allocation.require.box_type": "hot"
node.attr.box_type: hot
5. 依次启动后,在浏览器上输入该地址,检查一下是否成功
相关资源下载
链接:https://pan.baidu.com/s/1EpZqZxYTaloWoLTWNcBjmw 密码:hbpw