部署多节点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集群信息。
请注意,该脚本假设每个节点都在同一个网络中,并且可以通过主机名相互访问。如果您的节点不在同一个网络中或无法通过主机名相互访问,则需要进行相应的修改。