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> /etc/hostsfidone# 检查并创建用户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"fiif [ ! -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 1fi# 安装if [ ! -f "$ES_PKG" ]; thenecho "Elasticsearch安装包不存在,确认文件后请重新运行脚本。"exit 1firpm -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 65536elasticsearch hard nofile 65536" >> "$LIMITS_CONF"echo "elasticsearch soft nofile 65536elasticsearch 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_HOMEecho "ES_JAVA_HOME=$JAVA_HOME_DIRexport ES_JAVA_HOME" >> "$PROFILE"source "$PROFILE"# 启动Elasticsearchsystemctl enable elasticsearchsystemctl start elasticsearch# 允许9200端口通过防火墙firewall-cmd --zone=public --add-port=9200/tcp --permanent# 重新加载防火墙配置firewall-cmd --reload# 设置密码/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactiveecho "Elasticsearch安装已完成!"