首页 > 其他分享 >3、Elasticsearch集群安装脚本

3、Elasticsearch集群安装脚本

时间:2023-06-28 20:33:02浏览次数:54  
标签:脚本 exit color echo ES 集群 elasticsearch Elasticsearch es

#!/bin/bash

ES_VERSION=7.17.5

UBUNTU_URL="https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/apt/pool/main/e/elasticsearch/elasticsearch-${ES_VERSION}-amd64.deb"
RHEL_URL="https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/${ES_VERSION}/elasticsearch-${ES_VERSION}-x86_64.rpm"

CLUSTER_NAME=es-cluster
NODE_LIST='["10.0.0.101","10.0.0.102","10.0.0.103"]'
ES_DATA=/data/es-data
ES_LOGS=/data/es-logs

. /etc/os-release

color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1" && $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "    
    elif [ $2 = "failure" -o $2 = "1"  ] ;then 
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}

check_mem () {
    MEM_TOTAL=`head -n1 /proc/meminfo |awk '{print $2}'`
    if [ ${MEM_TOTAL} -lt 1997072 ];then
        color '内存低于2G,安装失败!' 1
        exit
    elif [ ${MEM_TOTAL} -le 2997072 ];then
        color '内存不足3G,建议调整内存大小!' 2
    else
        return
    fi
}

set_node_id () {
    read -p "请输入node编号(默认为 1): " NODE_ID

    if [ -z "$NODE_ID" ] ;then
        NODE_ID=1
    elif [[ ! "$NODE_ID" =~ ^[0-9]+$ ]];then
        color  "请输入正确的node编号!" 1
        exit
    else
        true
    fi
    NODE_NAME=node-$NODE_ID
}

install_es() {
    if [ $ID = "centos" -o $ID = "rocky" ];then
        wget -P /usr/local/src/ $RHEL_URL || { color  "下载失败!" 1 ;exit ; } 
        yum -y install /usr/local/src/${RHEL_URL##*/}
    elif [ $ID = "ubuntu" ];then
        wget -P /usr/local/src/ $UBUNTU_URL || { color  "下载失败!" 1 ;exit ; }
        dpkg -i /usr/local/src/${UBUNTU_URL##*/}
    else
        color "不支持此操作系统!" 1
        exit
    fi
    [ $? -eq 0 ] ||  { color '安装软件包失败,退出!' 1; exit; }
}

config_es () {
    cp /etc/elasticsearch/elasticsearch.yml{,.bak}
    cat > /etc/elasticsearch/elasticsearch.yml  <<EOF
cluster.name: $CLUSTER_NAME
node.name: $NODE_NAME
path.data: $ES_DATA
path.logs: $ES_LOGS
bootstrap.memory_lock: true
network.host: 0.0.0.0
discovery.seed_hosts: $NODE_LIST
cluster.initial_master_nodes: $NODE_LIST
gateway.recover_after_nodes: 2
action.destructive_requires_name: true
EOF

    mkdir -p /etc/systemd/system/elasticsearch.service.d/
    cat > /etc/systemd/system/elasticsearch.service.d/override.conf <<EOF
[Service]
LimitMEMLOCK=infinity
EOF
    systemctl daemon-reload
    systemctl enable  elasticsearch.service
}

prepare_es() {
    echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
    sysctl  -p
    mkdir -p $ES_DATA $ES_LOGS
    chown  -R elasticsearch.elasticsearch $ES_DATA $ES_LOGS
}

start_es(){
    systemctl start elasticsearch || { color "启动失败!" 1;exit 1; }
    sleep 3
    curl http://127.0.0.1:9200 && color "安装成功" 0   || { color "安装失败!" 1; exit 1; } 
    echo -e "请访问链接: \E[32;1mhttp://`hostname -I|awk '{print $1}'`:9200/\E[0m"
}

check_mem
set_node_id
install_es
config_es
prepare_es
start_es

标签:脚本,exit,color,echo,ES,集群,elasticsearch,Elasticsearch,es
From: https://blog.51cto.com/mfc001/6576219

相关文章

  • 4、Elasticsearch插件Head和Serebro实现Elasticsearch的图形化管理
    Elasticsearch访问Elasticsearch支持各种语言使用RESTfulAPI通过端口9200与之进行通信,可以用你习惯的web客户端访问Elasticsearch可以用三种方式和Elasticsearch进行交互curl命令和其它浏览器:基于命令行,操作不方便插件:在node节点上安装head,Cerebro等插件,实现图形操......
  • 树莓派集群真的可以顶上一台高性能计算机吗?(扩展篇)
    之前写过文章:树莓派集群真的可以顶上一台高性能计算机吗讨论过树莓派集群是否可以比得上一台高性能计算机的问题,本篇这里是对前文的扩展。   ========================================================  之所以写了本篇扩展是因为无意中在网上发现了下文:https://a......
  • Spring ElasticSearch Date
    问题背景使用spring-data-elasticsearch:4.4.12查询数据,数据映射到对象的时候时间字段格式异常,报错如下对象和Es通过@document注解进行映射,对象中有一个时间字段@Field(type=FieldType.Date,format={},pattern=DatePattern.CHINESE_DATE_PATTERN)privateDat......
  • 原神脚本,轻松挂机原神,永久软件+详细教程,无需998元的收费端游软件
    原神脚本,轻松挂机原神,永久软件+详细教程高效刷材料,快速完成任务,轻松代肝原神!市场供不应求的软件,秒跳剧情,秒找宝箱,神童等任务点一键传送,日入百元!附详细教程,电脑配置要求较高。注意事项:任何挂机项目都存在小概率封号风险,请保持正常心态对待。选择正规途径获得软件,远离不可靠来源!”......
  • Elasticsearch的数据备份与恢复
    1、序言Elasticsearch默认配置是数据持久化的,就是ES会定时地把缓存数据刷新到硬盘,从而达到数据持久化地效果。在生产环境中,ES的数据持久化是必须的,防止出现断电时数据的丢失。固然,除了数据持久化外,咱们也是得作到数据备份的,防止出现数据损坏时没法恢复数据的状况。下面开始介绍ES......
  • 青龙面板批量部署依赖库,以便适应各种脚本
    青龙面板批量部署依赖库,以便适应各种脚本服务器安装依赖库$dockerps查看青龙面板Docker是否正常运行,记下青龙Docker的容器名字输入一键安装命令:$dockerexec-itqinglongbash如果你的青龙容器不叫qinglong,那自己替换为相应的容器名字。安装依赖命令:$......
  • 网络安全学习篇37_第二阶段_基本Linux脚本、变量、判断if、循环for\while、case语句
    上一篇博客:网络安全学习篇36_第二阶段_简单介绍JavaWeb框架之Tomcat服务、Nginx负载均衡、Linux包过滤防火墙IPtables、NAT网络地址转换目录shell脚本变量数值读入if判断语句for、while循环语句case语句开始shell脚本1.脚本的作用:可以执行计划任务把需要执行的代码保存在一个文件......
  • 阿里云dns解析python脚本
    用于阿里云dns解析的脚本#-*-coding:utf-8-*-#Thisfileisauto-generated,don'teditit.Thanks.importsysfromtypingimportListfromalibabacloud_alidns20150109.clientimportClientasAlidns20150109Clientfromalibabacloud_tea_openapiimportmodels......
  • 1、Elasticsearch单机与集群的安装(包安装、二进制安装与Docker安装)
    ElasticsearchElasticsearch是一个实时的全文搜索,存储库和分析引擎https://www.elastic.co/cn/what-is/elasticsearchElasticsearch在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,可用于多种场景:应用程序搜索网站搜索企业搜索日志处理和分析基础设施指标和......
  • JAVA的动态性之脚本语言支持API
    JAVA语言是一种静态类型的编程语言。静态类型的含义是指在编译的时候进行类型检查。JAVA源代码中的每个每个变量的类型都需要显式地进行声明。所有的变量、方法的参数和返回值的类型在程序运行之前就必须是已知的。JAVA语言的这种静态类型特性使编译器可以在编译的时候执行大量的检......