当前位置: 首页 > news >正文

Elasticsearch 安装和配置脚本文档

Elasticsearch 安装和配置脚本文档

目录

  • **Elasticsearch 安装和配置脚本文档**
    • 0.**概述**
    • 1.**使用方法:**
    • 2.**脚本步骤:**
    • 3. **完整代码如下:**

0.概述

此Bash脚本用于自动化在CentOS 7系统上安装和配置Elasticsearch(ES)分布式搜索引擎。脚本包括了创建集群、配置节点、安装Java环境、以及设置必要的系统和ES参数。执行脚本后,将会完成Elasticsearch的安装、配置和启动。

1.使用方法:

  1. 确保脚本具有执行权限:
    chmod +x elasticsearch_setup_script.sh
    
  2. 执行脚本:
    ./elasticsearch_setup_script.sh
    

2.脚本步骤:

脚本步骤:

  1. 变量定义:
  • CLUSTER_NAME:Elasticsearch集群的名称。
  • NODE_NAME:当前节点的名称。
  • IPS:节点的IP地址列表。
  • HOSTS:节点对应的主机名列表。
  • 其他路径和配置变量。
  1. 更新 /etc/hosts 文件:
  • 自动检查并添加节点IP地址和主机名到 /etc/hosts 文件。
  1. 检查并创建 elasticsearch 用户:
  • 检查是否已存在 elasticsearch 用户,如果不存在则创建。
  1. 检查和创建 ES 目录:
  • 检查数据和日志目录是否存在,如果不存在则创建。
  1. 检查 Java 环境:
  • 检查Java环境是否已安装,如果未安装则退出脚本。
  1. 安装 Elasticsearch:
  • 安装指定版本的 Elasticsearch。
  1. 修改 elasticsearch.yml 配置文件:
  • 替换配置文件中的集群名、节点名、数据和日志路径等参数。
  1. 添加 X-Pack 配置:
  • 启用安全特性和 SSL。
  1. 修改系统配置:
  • 调整系统参数以满足 Elasticsearch 的需求。
  1. 授权目录权限和配置 ES_JAVA_HOME:
  • 授予数据和日志目录以 elasticsearch 用户的权限。
  • 配置 ES_JAVA_HOME。
  1. 启动 Elasticsearch:
  • 启用并启动 Elasticsearch 服务。
  1. 防火墙配置:
  • 允许 9200 端口通过防火墙。
  1. 设置密码:
  • 使用交互式命令设置 Elasticsearch 密码。
  1. 完成消息:
  • 显示安装和配置完成的消息。
    注意:
  • 该脚本假定在CentOS 7环境中运行,可能需要根据其他发行版进行调整。
  • 在生产环境中运行脚本之前,请检查脚本并根据需要调整变量.
    此脚本按原样提供,使用时请小心。建议在部署之前了解其功能并根据具体要求进行调整。用户负责确保在其环境中设置的安全性和兼容性。

3. 完整代码如下:

#!/bin/bashset -e# 定义变量
CLUSTER_NAME="tech-es"
## 节点名称修改
NODE_NAME="node-2"
IPS=("192.168.2.49" "192.168.2.50" "192.168.2.51")
HOSTS=("node-1" "node-2" "node-3")SEED_HOSTS=$(printf ',"%s"' "${IPS[@]}")
SEED_HOSTS=[${SEED_HOSTS:1}]
INITIAL_MASTER_NODES=$(printf ',"%s"' "${HOSTS[@]}")
INITIAL_MASTER_NODES=[${INITIAL_MASTER_NODES:1}]ES_PKG="/usr/local/dhtech/autoinstall/lib/elasticsearch-7.17.8-x86_64.rpm"
ES_CONFIG="/etc/elasticsearch/elasticsearch.yml"
LIMITS_CONF="/etc/security/limits.conf"
PROC_CONF="/etc/security/limits.d/20-nproc.conf"
SYSCTL_CONF="/etc/sysctl.conf"
ES_DIR="/dhxdata/es"
PROFILE="/etc/profile"
JAVA_HOME_DIR="/usr/local/java/jdk1.8"# 更新 /etc/hosts 文件
for (( i=0; i<${#IPS[@]}; i++ ));
doif ! grep -q "${IPS[i]} ${HOSTS[i]}" /etc/hosts; thenecho "${IPS[i]} ${HOSTS[i]}" >> /etc/hostsfi
done
# 检查并创建用户
if id "elasticsearch" >/dev/null 2>&1; thenecho "elasticsearch user exists"
elseuseradd elasticsearchecho "elasticsearch user has been created"
fi
# 检查ES的存储目录和日志目录是否存在,不存在则创建
if [ ! -d "$ES_DIR/data" ]; thenmkdir -p "$ES_DIR/data"
fi
if [ ! -d "$ES_DIR/logs" ]; thenmkdir -p "$ES_DIR/logs"
fi
# 检查Java环境
java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ ! -n "${java_version}" ]]; thenecho "未安装Java开发环境:${java_version}"exit 1
fi# 安装
if [ ! -f "$ES_PKG" ]; thenecho "Elasticsearch安装包不存在,确认文件后请重新运行脚本。"exit 1
firpm -ivh "$ES_PKG"# 修改elasticsearch.yml配置
sed -i "s|^[#]*\s*cluster.name:.*|cluster.name: $CLUSTER_NAME|" "$ES_CONFIG"
sed -i "s|^[#]*\s*node.name:.*|node.name: $NODE_NAME|" "$ES_CONFIG"
sed -i "s|path.data:.*|path.data: $ES_DIR/data|" "$ES_CONFIG"
sed -i "s|path.logs:.*|path.logs: $ES_DIR/logs|" "$ES_CONFIG"
sed -i "s|^[#]*\s*network.host:.*|network.host: 0.0.0.0|" "$ES_CONFIG"
sed -i "s|^[#]*\s*http.port:.*|http.port: 9200|" "$ES_CONFIG"
sed -i "s|^[#]*\s*discovery.seed_hosts:.*|discovery.seed_hosts: $SEED_HOSTS|" "$ES_CONFIG"
# sed -i "s|^[#]*\s*cluster.initial_master_nodes:.*|cluster.initial_master_nodes: $INITIAL_MASTER_NODES|" "$ES_CONFIG"
sed -i "s|^[#]*\s*cluster.initial_master_nodes:.*|cluster.initial_master_nodes: [\"node-1\"]|" "$ES_CONFIG"# 添加以下三行
echo "xpack.security.enabled: true" >> "$ES_CONFIG"
echo "xpack.license.self_generated.type: basic" >> "$ES_CONFIG"
echo "xpack.security.transport.ssl.enabled: true" >> "$ES_CONFIG"# 修改系统配置
echo "elasticsearch soft nofile 65536
elasticsearch hard nofile 65536" >> "$LIMITS_CONF"
echo "elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
* hard nproc 4096" >> "$PROC_CONF"
echo "vm.max_map_count=655360" >> "$SYSCTL_CONF"sysctl -p# 创建数据和日志的目录,并授予权限
chown -R elasticsearch:elasticsearch "$ES_DIR"# 配置ES_JAVA_HOME
echo "ES_JAVA_HOME=$JAVA_HOME_DIR
export ES_JAVA_HOME" >> "$PROFILE"
source "$PROFILE"# 启动Elasticsearch
systemctl enable elasticsearch
systemctl start elasticsearch# 允许9200端口通过防火墙
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 重新加载防火墙配置
firewall-cmd --reload# 设置密码
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
echo "Elasticsearch安装已完成!"

相关文章:

  • 【C语言】案例:输出n位水仙花数
  • Python学习路线 - Python高阶技巧 - PySpark案例实战
  • Java Jackson库使用教程
  • 1.0 Zookeeper 分布式配置服务教程
  • 性能实测:分布式存储 ZBS 与集中式存储 HDS 在 Oracle 数据库场景表现如何
  • 【数据分享】1929-2023年全球站点的逐月平均风速(Shp\Excel\免费获取)
  • powershell 接收一个端口udp数据复制转发到多个目的
  • 【Linux】线程池线程安全的单例模式和STL读者写者问题
  • l + r >> 1; 的含义
  • Python入门:常用模块—os模块及sys模块
  • 探索未来:集成存储器计算(IMC)与深度神经网络(DNN)的机遇与挑战
  • 服务器与电脑的区别?
  • Conda历史版本下载地址和python对应关系
  • 【C#】.net core 6.0 创建默认Web应用,以及默认结构讲解,适合初学者
  • 飞天使-k8s知识点14-kubernetes散装知识点3-Service与Ingress服务发现控制器
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Android交互
  • Angular6错误 Service: No provider for Renderer2
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • DataBase in Android
  • ES6系列(二)变量的解构赋值
  • Laravel 菜鸟晋级之路
  • laravel5.5 视图共享数据
  • 高性能JavaScript阅读简记(三)
  • 给github项目添加CI badge
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 开源地图数据可视化库——mapnik
  • 聊聊redis的数据结构的应用
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 区块链分支循环
  • 硬币翻转问题,区间操作
  • 最简单的无缝轮播
  • 数据可视化之下发图实践
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • !!Dom4j 学习笔记
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (排序详解之 堆排序)
  • (三)模仿学习-Action数据的模仿
  • (四)Controller接口控制器详解(三)
  • .net mvc 获取url中controller和action
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET上SQLite的连接
  • .考试倒计时43天!来提分啦!
  • /3GB和/USERVA开关
  • @Import注解详解
  • []Telit UC864E 拨号上网
  • [autojs]逍遥模拟器和vscode对接
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [CF]Codeforces Round #551 (Div. 2)