部署多节点elasticsearch集群的shell脚本

以下是一个部署多个节点的elasticsearch集群的shell脚本示例:

#!/bin/bash

# 设置集群名称
CLUSTER_NAME="my_cluster"

# 设置elasticsearch版本号
ES_VERSION="7.10.2"

# 设置elasticsearch安装目录
ES_HOME="/usr/local/elasticsearch"

# 设置elasticsearch数据目录
DATA_DIR="/data/elasticsearch"

# 设置elasticsearch配置文件目录
CONF_DIR="/etc/elasticsearch"

# 设置elasticsearch日志目录
LOG_DIR="/var/log/elasticsearch"

# 设置elasticsearch插件目录
PLUGIN_DIR="$ES_HOME/plugins"

# 设置elasticsearch启动脚本
ES_START_SCRIPT="$ES_HOME/bin/elasticsearch"

# 设置elasticsearch配置文件
ES_CONFIG_FILE="$CONF_DIR/elasticsearch.yml"

# 设置elasticsearch节点列表
NODES=( "node1" "node2" "node3" )

# 创建elasticsearch安装目录
mkdir -p $ES_HOME

# 创建elasticsearch数据目录
mkdir -p $DATA_DIR

# 创建elasticsearch配置文件目录
mkdir -p $CONF_DIR

# 创建elasticsearch日志目录
mkdir -p $LOG_DIR

# 创建elasticsearch插件目录
mkdir -p $PLUGIN_DIR

# 下载elasticsearch安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ES_VERSION-linux-x86_64.tar.gz -P /tmp/

# 解压elasticsearch安装包
tar -xvf /tmp/elasticsearch-$ES_VERSION-linux-x86_64.tar.gz -C $ES_HOME --strip-components=1

# 设置elasticsearch配置文件
cat > $ES_CONFIG_FILE <<EOF
cluster.name: $CLUSTER_NAME
network.host: 0.0.0.0
path.data: $DATA_DIR
path.logs: $LOG_DIR
EOF

# 启动elasticsearch节点
for NODE in "${NODES[@]}"
do
    NODE_IP=$(nslookup $NODE | grep "Address" | tail -1 | awk '{print $2}')
    NODE_CONFIG_FILE="$CONF_DIR/elasticsearch_$NODE.yml"
    cp $ES_CONFIG_FILE $NODE_CONFIG_FILE
    echo "node.name: $NODE" >> $NODE_CONFIG_FILE
    echo "discovery.seed_hosts: ${NODES[@]}" >> $NODE_CONFIG_FILE
    echo "cluster.initial_master_nodes: ${NODES[0]}" >> $NODE_CONFIG_FILE
    echo "network.host: $NODE_IP" >> $NODE_CONFIG_FILE
    $ES_START_SCRIPT -d -Epath.conf=$CONF_DIR -Enode.name=$NODE -Enode.master=true -Enode.data=true
done

# 等待elasticsearch节点启动
sleep 30

# 输出elasticsearch集群信息
echo "Elasticsearch cluster name: $CLUSTER_NAME"
echo "Elasticsearch version: $ES_VERSION"
echo "Elasticsearch home directory: $ES_HOME"
echo "Elasticsearch data directory: $DATA_DIR"
echo "Elasticsearch configuration directory: $CONF_DIR"
echo "Elasticsearch log directory: $LOG_DIR"
echo "Elasticsearch plugin directory: $PLUGIN_DIR"
echo "Elasticsearch nodes: ${NODES[@]}"

可以将脚本保存为一个文件,例如elasticsearch_cluster_install.sh,并将其放置在要安装elasticsearch的服务器上。然后可以通过运行以下命令来执行脚本:

sudo sh elasticsearch_cluster_install.sh

该脚本将自动完成以下操作:

        设置elasticsearch集群名称、elasticsearch版本号、elasticsearch安装目录、elasticsearch数据目录、elasticsearch配置文件目录和elasticsearch日志目录。

        创建elasticsearch安装目录、数据目录、配置文件目录和日志目录。

        下载elasticsearch安装包并解压到elasticsearch安装目录。

        创建elasticsearch配置文件并设置集群名称、数据目录和日志目录。

        启动每个elasticsearch节点并等待30秒钟。

        输出elasticsearch集群信息。

请注意,该脚本假设每个节点都在同一个网络中,并且可以通过主机名相互访问。如果您的节点不在同一个网络中或无法通过主机名相互访问,则需要进行相应的修改。

posted on 2023-04-18 11:45  明.Sir  阅读(175)  评论(0编辑  收藏  举报

导航