部署ES集群

一、下载Elasticsearch

官方文档:https://www.elastic.co/guide/en/welcome-to-elastic/current/getting-started-general-purpose.html
下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

二、部署Elasticsearch(本次部署7.4.2)---所有节点

2.1 上传elasticsearch

# 新版本elk自带jdk,可以不需要单独配java环境。
mkdir /data
tar -xzf elasticsearch-7.4.2-linux-x86_64.tar.gz -C /data/

# 创建用户 elasticsearch 不允许使用root用户启动
useradd elsearch
echo "123456" | passwd --stdin "elsearch"

2.2 修改配置文件

cd /data/elasticsearch-7.4.2/config/
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml

# 集群名称
cluster.name: cluster-elasticsearch
# 节点名称,每个节点的名称不能重复
node.name: es-01
# ip 地址,每个节点的地址不能重复
network.host: 192.168.6.187
# 是不是有资格主节点
node.master: true
node.data: true
path.data: /data/elasticsearch-7.4.2/data
path.logs: /data/elasticsearch-7.4.2/logs
http.port: 9200
# head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
# 初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["es-01"]
# 节点发现
discovery.seed_hosts: ["192.168.6.187:9300","192.168.6.190:9300","192.168.6.191:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
# 集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
# 添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
# 初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16

2.3 创建ES数据及日志存储目录

mkdir -p /data/elasticsearch-7.4.2/data
mkdir -p /data/elasticsearch-7.4.2/logs
chown -R elsearch:elsearch /data/elasticsearch-7.4.2

2.4 参数优化

vim /etc/security/limits.conf
# 在文件末尾中增加下面内容 
# 每个进程可以打开的文件数的限制
* soft nofile 102400
* hard nofile 102400
* soft nproc 4096
* hard nproc 4096
注:* 带表 Linux 所有用户名称

vim /etc/sysctl.conf
# 在文件中增加下面内容 
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536 
vm.max_map_count=655360

sysctl -p

2.4 修改ES最大堆内存

vim jvm.options
JAVA默认堆内存是物理内存的1/4 
配置文件存放路径:$ES_HOME/config/jvm.options

-Xms4g
-Xmx4g

确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。
堆内存大小不要超过系统内存的50%

2.6 启动并测试

su - elsearch
cd /data/elasticsearch-7.4.2;nohup bin/elasticsearch &
tail -f nohup.out

浏览器中输入地址:http://IP:9200

三、配置es开机自启

# 先查看当前的开机启动服务
chkconfig --list
# 创建es 的系统启动服务文件,进入到 cd /etc/init.d 目录
cd /etc/init.d
# 编写启动脚本
vim elasticsearch

#!/bin/bash
#chkconfig: 345 63 37
#description: elasticsearch
#processname: elasticsearch-7.4.2
export ES_HOME=/data/elasticsearch-7.4.2
case $1 in
        start)
                su elsearch<

四、Elasticsearch定时清理

在部署es服务器执行这个命令就可以删除日志
curl -XDELETE 'http://192.168.5.51:9200/*2022.09.26'




# 定时清理索引脚本

#!/bin/bash
######################################################
# $Name:        clean_index.sh
# $Version:     v1.0
# $Function:    delete es index
# $Author:      Habits
# $Create Date: 2022-09-26
# $Description: shell
######################################################
#脚本的日志文件路径
CLEAN_LOG="/root/clean_index.log"
#es地址
SERVER_PORT=192.168.3.201:9200
#保留的时间,单位天
DELTIME=1
SECONDS=$(date -d  "$(date  +%F) -${DELTIME} days" +%s)
INDEXS=$(curl -s -u  elastic:changeme  "${SERVER_PORT}/_cat/indices?v"|awk '{print $3}')
echo "-------------------$(date +%F_%T)---------------"  >>${CLEAN_LOG}
for del_index in ${INDEXS}
do 
     timeString=$( echo ${del_index} |awk -F"-" '{print $NF}'|egrep "[2][0][0-9]*\.[0-9]*\.[0-9]*")
     if [ -n "$timeString" ]
     then
         indexDate=${timeString//./-}
         indexSecond=$( date -d ${indexDate} +%s )
         if [ $(( $SECONDS- $indexSecond )) -gt 0 ]
         then
             delResult=`curl -s -u elastic:changeme  -XDELETE "${SERVER_PORT}/"${del_index}"?pretty" |sed -n '2p'`
             echo "delete index:$del_index result:$delResult" >>${CLEAN_LOG}
         fi
     fi
     
done 

你可能感兴趣的:(部署ES集群)