#auto_install_elasticsearch.sh
# Check if user is root
if [ $(id -u) != "0" ]; thenecho "Error: You must be root to run this script, please use root to install"exit 1
fi
####################################################
#请务必检查以下变量是否需要改动!尤其是第一次运行该脚本时
#es安装目录(不可修改)
install_dir=/ssgm/server
#es包下载目录(不可修改)
packages_dir=/ssgm/server/packages
#es版本(不可修改)
elasticsearch_version=6.2.4
#es专属用户(可默认)
username=elsearch
#配置本机节点IP
node=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
#配置集群节点IP
node1=${node}
node2=172.16.8.15
node3=172.16.8.16
#配置数据存储及log地址
datapath=/home/es/data
logpath=/home/es/logs
#es安装包MD5校验
esMD5=692d01956fe7aee2d08ac0fbf7b7a19e
#############################################
#sudo权限下yum检查wget是否安装,若未安装则自动安装echo -e "\e[32m 检查是否安装wget... \e[0m"
sudo yum list installed wget &> /dev/null
if [[ $? -ne 0 ]]; then#sudo权限下yum -y 自动安装wgetecho -e "\e[35m 自动安装wget... \e[0m"sudo yum install wget -y > /dev/null
fiecho -e "\e[32m 检查是否安装vim... \e[0m"
#sudo权限下yum检查vim是否安装,若未安装则自动安装
sudo yum list installed vim* &> /dev/null
if [[ $? -ne 0 ]]; then#sudo权限下yum -y 自动安装vimecho -e "\e[35m 自动安装vim... \e[0m"sudo yum install vim* -y > /dev/null
fiecho -e "\e[32m 检查是否安装bc... \e[0m"
#sudo权限下yum检查bc是否安装,若未安装则自动安装
sudo yum list installed bc &> /dev/null
if [[ $? -ne 0 ]]; then#sudo权限下yum -y 自动安装bcecho -e "\e[35m 自动安装bc... \e[0m"sudo yum install bc -y > /dev/null
fi
##################################################################################################判断 ElasticSearch 安装包是否已上传
echo -e "\e[32m 检查elasticsearch安装包... \e[0m"
md5=`md5sum ${packages_dir}/elasticsearch-${elasticsearch_version}.tar.gz|cut -d ' ' -f1`
if [[ ! -e ${packages_dir}/elasticsearch-${elasticsearch_version}.tar.gz ]]; thenecho -e "\e[35m ElasticSearch 安装包未上传! 正在从[https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${elasticsearch_version}.tar.gz]自动下载... \e[0m"if [ ! -d ${packages_dir} ];thenmkdir -p ${packages_dir}fiwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${elasticsearch_version}.tar.gz ${packages_dir}if [$md5 != $esMD5 ]; thenecho -e "\e[31m es安装包md5校验失败!请检查安装包!安装包手动上传目录${packages_dir} \n程序退出... \e[0m"exitfi
elseif [ $md5 != $esMD5 ]; thenecho -e "\e[31m es安装包md5校验失败!请检查安装包!安装包手动上传目录${packages_dir} \n程序退出... \e[0m"exitfi
fi#############################################################################################
#检查 JDK 版本,Elasticsearch 至少需要 Java 8
JAVA_VERSION=`java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'`
echo -e "\e[32m 检查JDK版本为${JAVA_VERSION}... \e[0m"
#java -version获取 JDK 版本信息,grep 过滤出 jkd 版本号
#bc进行浮点数大小比较,若关系式成立则结果为1,否则结果为0
flag=`echo "${JAVA_VERSION:0:3} >= 1.8" | bc`
if [[ ${flag} -eq 1 ]]; then#判断安装目录是否存在  不存在则创建目录echo -e "\e[35m 检查安装目录是否存在.... \e[0m"if [ ! -d ${install_dir} ];thenecho -e "\e[35m 自动创建${install_dir}目录... \e[0m"mkdir -p ${install_dir}fi#tar解压 ElasticSearch 到指定目录tar -zxf ${packages_dir}/elasticsearch-${elasticsearch_version}.tar.gz -C ${install_dir}
elseecho -e "\e[35m JDK版本不支持或未安装,正在自动安装JDK... \e[0m"#sudo权限下yum -y 自动安装jdksudo yum install java-1.8.0-openjdk* -y#判断安装目录是否存在  不存在则创建目录echo -e "\e[35m 检查安装目录是否存在.... \e[0m"if [ ! -d ${install_dir} ];thenecho -e "\e[35m 自动创建${install_dir}目录... \e[0m"mkdir -p ${install_dir}fi#tar解压 ElasticSearch 到指定目录tar -zxf ${packages_dir}/elasticsearch-${elasticsearch_version}.tar.gz -C ${install_dir}
fi
#############################################################################################
#修改elasticsearch.yml
echo -e "\e[35m 修改配置文件${install_dir}/elasticsearch-${elasticsearch_version}/config/elasticsearch.yml.... \e[0m"
echo "cluster.name: elasticsearch
#节点名称,其余两个节点分别为node-2 和node-3
node.name: node-1
#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true
#允许该节点存储数据(默认开启)
node.data: true
#索引数据的存储路径
path.data: ${datapath}
#日志文件的存储路径
path.logs: ${logpath}
#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
bootstrap.memory_lock: true
#绑定的ip地址
network.host: ${node}
#设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
#请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: [\"${node1}:9300\", \"${node2}:9300\", \"${node3}:9300\"]
#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
discovery.zen.minimum_master_nodes: 2
# 增加新的参数,这样head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: \"*\"" > ${install_dir}/elasticsearch-${elasticsearch_version}/config/elasticsearch.yml#es修改配置以及优化部分###########################
#调大系统的“最大打开文件数”
echo -e "\e[35m es修改配置以及优化部分:调大系统的“最大打开文件数”... \e[0m"
ulimit -n 32000#解决es启动的警告信息【或者es中Too many open files的问题】 Error:max file descriptors [4096] for elasticsearch process likely too low, consider increasing to at least [65536]
echo -e "\e[35m es修改配置以及优化部分:解决es启动的警告信息【或者es中Too many open files的问题】... \e[0m"
if [ `grep -c "* soft nofile 65536
* hard nofile 131072" /etc/security/limits.conf` -eq '0' ]; thenecho "* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096 End of file
* soft memlock unlimited
* hard memlock unlimited" >> /etc/security/limits.conf
elseecho -e "\e[32m 已配置/etc/security/limits.conf... \e[0m"
fiecho -e "\e[35m es修改配置以及优化部分:vm.max_map_count=262144”... \e[0m"
if [ `grep -c "vm.max_map_count=262144" /etc/sysctl.conf` -eq '0' ]; thenecho "vm.max_map_count=262144" >> /etc/sysctl.conf
elseecho -e "\e[32m 已配置/etc/sysctl.conf \e[0m"
fi
#使配置生效
sysctl -p
#创建es专属用户,root用户不能启动es
#create group if not exists
echo -e "\e[32m 用户部分:判断是否存在es用户组... \e[0m"
egrep "^$username" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
echo -e "\e[35m 用户部分:添加用户组... \e[0m"groupadd $username
fi#create user if not exists
echo -e "\e[32m 用户部分:判断是否存在es用户组... \e[0m"
egrep "^$username" /etc/passwd >& /dev/null
if [ $? -ne 0 ]
then
echo -e "\e[35m 用户部分:添加用户... \e[0m"useradd -g $username $username
fi#给log/data目录加权
if [ ! -d ${datapath} ];thenmkdir -p ${datapath}
fi
if [ ! -d ${logpath} ];thenmkdir -p ${logpath}
fi
echo -e "\e[35m 权限部分:目录加权\n${datapath}/\n${logpath}/\n${install_dir}/... \e[0m"chown   -R  elsearch:elsearch  ${datapath}/chown   -R  elsearch:elsearch  ${logpath}/chown   -R  elsearch:elsearch  ${install_dir}/
#echo "* soft nofile 65536
#* hard nofile 131072" >> /etc/security/limits.conf
# 未完待续...

ES自动化集群搭建脚本shell相关推荐

  1. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

  2. ES安装的详细步骤、ES的集群搭建以及ElasticSearch安装时可能出现的问题

    目录 什么是es? 正排索引和倒排索引 安装 ElasticSearch的简单步骤 环境需求 安装ES 下载 设置虚拟机内存 创建用户 安装 ES的目录结构及其作用 配置文件以及作用 修改配置文件el ...

  3. 多台es服务器搭建elasticsearch集群,es单机伪集群搭建,在一台服务器上以三个不同的端口模拟三台主机完成es伪集群搭建,windows和Linux操作方法一致

    目录 (一)es单机伪集群搭建 一.准备三台elasticsearch服务器(复制三个es目录) 二.修改每台服务器的配置 1.修改es配置文件 2.配置注意 (二)多台服务器es集群搭建: 1 安装 ...

  4. es集群搭建_滴滴Elasticsearch 集群跨版本升级与平台重构之路

    前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升级到6.6.1.在对用户查询写入基本零影响和改动的前提下,解决了ES跨大版本协议不兼容.文件 ...

  5. redis安装、集群搭建等

    1 Redis介绍 1.1 什么是NoSql 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库. NoSQL,泛指非关系型的数据库,NoSQL即Not-On ...

  6. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  7. ES集群规划、集群搭建、集群管理

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  8. 常用服务的集群搭建(redis、MQ、es、zookerper)

    常用服务的集群搭建(redis.MQ.es.zookerper) 1.集群概述 1.1什么是集群 1.1.1集群概念 集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地 ...

  9. 基于WIN10搭建ES伪集群的实践

    依据ES官网介绍https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html,ES将结点分为Mas ...

  10. Zookeeper之Linux分布式集群搭建及客户端shell命令操作

    一.准备至少三台Linux服务器及对应的jdk环境 1.服务器及jdk环境准备 服务器:至少三台Linux服务器 JDK环境:三台Linux服务器上都需要安装好jdk环境(jdk环境安装参考我的博客: ...

最新文章

  1. 在chrome Sources 页 显示 Console(drawer) 页
  2. KafkaProducer初始化时涉及到哪些核心组件?
  3. linux 内核编译 错误 fatal error: linux/compiler-gcc6.h: No such file or directory
  4. 备忘录:CISCO router ENABLE crack
  5. java spring注解维护,从一次工程启动失败谈谈 spring 注解
  6. Java程序员必备:常见OOM异常分析
  7. (13)VHDL时序逻辑
  8. MySQL要不要用函数_2.mysql函数的使用
  9. Android数据库hibernate框架
  10. Java事务之八——分布式事务(Spring+JTA+Atomikos+Hibernate+JMS)
  11. 爬虫库之BeautifulSoup学习(三)
  12. Vue slot用法(2018.09.05 星期三)
  13. mysqlplus 字段验证策略fieldStrategy
  14. 干货分享好用的绘图工具
  15. mysql 建库建表模板 权限管理
  16. coherence mysql_Coherence代理的负载均衡
  17. InputStream的available()方法(读文件)
  18. JumpServer开源堡垒机完成龙芯架构兼容性认证
  19. 通过VBA宏合并Excel工作表
  20. 前端初学——模拟做的旧版小网站

热门文章

  1. 宁波银行成长的AB面:增长与合规不可兼得?管理漏洞不容忽视
  2. 如何VUE写桌面应用(electron)
  3. android7.0 360os,360 OS 2.0评测 安全与体会的全部升级
  4. 企业如何做好网址安全,防止入侵。
  5. TcaplusDBx 黎明觉醒|一路相伴,不负期待
  6. Layer子域名挖掘机
  7. 软件性能测试方案怎么写?完整的性能测试报告模板分享
  8. Java IO与文件读写
  9. 【TCP拥塞控制算法(TCP congestion control algorithm)学习笔记】
  10. Flexbox布局基础入门