首页 > 系统相关 >部署多节点elasticsearch集群的shell脚本

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

时间:2023-04-18 11:58:04浏览次数:39  
标签:shell 目录 echo elasticsearch ES Elasticsearch 节点 DIR

以下是一个部署多个节点的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集群信息。

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

标签:shell,目录,echo,elasticsearch,ES,Elasticsearch,节点,DIR
From: https://www.cnblogs.com/mliu/p/17329062.html

相关文章

  • 动力节点2023最新MybatisPlus学习笔记(一)入门篇
    MyBatis是很火的框架,一般的项目都是基于ssm,虽然mybatis可以直接在xml中通过SQL语句操作数据库,很灵活,但其操作都要通过SQL语句进行,就必须写大量的xml文件,非常麻烦。而MyBatis-Plus可以很好的解决了这个问题,比Mybatis简单太多了,不用搞那么多xml文件的配置,直接与Springboot整合,开发效......
  • DolphinDB 计算节点使用指南
    导读为了提升DolphinDB在高并发读写场景下的性能与稳定性,DolphinDB在架构上引入了计算节点(computenode) 。计算节点接管了数据节点的部分职能,负责响应客户端的请求并返回结果。在架构层面,将集群的计算与存储进行分离,保证数据节点的软硬件资源有效服务于IO过程,从而提升集群写......
  • 华为OD机试 最小叶子节点
    本期题目:最小叶子节点题目二叉树也可以用数组来存储,给定一个数组,树的根节点的值储存在下标1,对于储存在下标n的节点,他的左子节点和右子节点分别储存在下标2*n和2*n+1,并且我们用-1代表一个节点为空,给定一个数组存储的二叉树,试求从根节点到最小的叶子节点的路径,路径由节点的值组......
  • 动力节点2023最新MybatisPlus学习笔记(二)基础篇
    2【基础篇】2.1通用Mapper接口介绍有关于通用Mapper接口,之前我们已经看到了,我们自己编写的Mapper接口继承自BaseMapper接口,由BaseMapper接口提供了很多单表的增删改查相关的操作方法,在入门案例中,我们测试了查询所有的操作。在这一章节,我们介绍一些简单的Mapper接口中的方法,主要......
  • elasticsearch优化思路
    一、优化方案调整并发线程数在高并发场景下,Elasticsearch服务的并发线程数需要调整到合适的值,避免线程数过多导致CPU资源浪费和内存开销增加。同时也需要避免线程数过少导致请求响应时间过长。可以通过调整Elasticsearch的线程池参数来实现。调整分片数量Elasticsearch的......
  • shell 编写脚本的一些细节心得:流程控制
    流程控制用得最多的,无非也就是老三样,if、for、while。if其中if作为判断的函数使用,其中也是有很多小细节的。例如你要判断两个值是否相等的时候,有两种方式,代码如下:test=2if((${test}==2))thenecho"yes"fiif[${test}-eq2]thenecho"yes"fi其实两段代码的......
  • Shell脚本--重定向
    0.从终端输入一个命令时,通常会将该命令的结果输出到终端。例如,在终端执行 pwd 命令会在屏幕上显示当前目录:#pwd/root大多数UNIX系统中,命令通常从一个叫标准输入的地方读取输入。同样,命令通常将其输出写入到标准输出。标准输入和标准输出默认情况下都是终端。那如果想......
  • Shell脚本--变量
    1. 定义变量Shell 支持一下三种定义变量的方式:variable=valuevariable='value'variable="value"variable是变量名,value是赋给变量的值。如果value不包含任何空白符,那么可以不用引号;否则就必须使用引号。注意,赋值号=的周围不能有空格。Shell变量的命名规范和大......
  • shell正则之Grep
    1.shell正则之Grep通配符及特殊符号 正则表达式 ......
  • Shell之bash脚本的编写
    下面是我写的一段部署脚本。#!/bin/bashcontainerID=`dockerps|grepkapok-admin|awk'{print$1}'`dockerstop$containerIDecho"dockerstop$containerID"imageID=`dockerimages|grepkapok-admin|awk'{print$3}'`foridin$im......