shell編程之自動化集群搭建並啓動

一、touch /opt/bigdata/elk/auto_elasticsearch.sh並寫入:

 1 #!/bin/bash
 2 
 3 # 1.確認安裝目錄
 4 
 5 confdir=$(cd `dirname $0` ;pwd) ## 安裝到elk目錄下,這種寫法可適用於任何路徑訪問!
 6 echo "將elasticsearch安裝到${confdir}目錄下嗎?yes/no"
 7 read answer                     ## 爲了可以delete不變成^H,需要改xshell的鍵盤界面配置
 8 if [ $answer = "yes" ]          ## 使用 = 表示字符串的相等
 9 then
10  echo "已確認"
11 else
12  exit                           ## 退出該sh
13 fi
14 
15 # 2.解壓到安裝目錄
16 # 2.1判斷是否存在.gz
17 gzpath="/opt/install/elk"
18 cd $gzpath
19 gzname=`ls |grep "elasticsearch-.*[gz]$"` ## 正則:.*單個字符匹配任意次,$:包含[gz]的結尾
20 if [ $? -ne 0 ]           
21 then
22  echo "${gzpath}沒有elasticsearch的安裝包!"
23  exit
24 else
25   echo "===正在安裝${gzname}到${confdir}路徑==="
26   tar -zxvf ${gzname} -C ${confdir}
27 fi
28 
29 # 3.修改配置文件
30 # 3.1改名
31 cd $confdir
32 OLDNAME=`ls |grep elasticsearch`
33 echo "OLDNAME:"$OLDNAME
34 NEWNAME=es622
35 mv $OLDNAME $NEWNAME
36 echo "NEWNAME:"$NEWNAME
37 
38 # 3.2權限
39 chown -R hewenyan:root $NEWNAME   ## 需要把es622權限修改,才能啓動裏面的
40 
41 # 3.3配置
42 cd $NEWNAME/config
43 FILE=elasticsearch.yml
44 
45 HOST="network.host: "`hostname`
46 HTTPPORT="http.port: 9200"
47 HTTPCORS1='http.cors.enabled: true'
48 HTTPCORS2='http.cors.allow-origin: "*"'
49 
50 echo "請輸入cluster.name:"
51 read CLUSTERNAME
52 CLUSTERNAME="cluster.name: "$CLUSTERNAME
53 echo "請輸入node.name:"
54 read NODENAME
55 NODENAME="node.name: "$NODENAME
56 echo "節點是否為master:true/false"
57 read IFMASTER
58 IFMASTER="node.master: "$IFMASTER
59 echo "請輸入創建的集群,格式按照["A","B","C"]":  ## ' '不需要轉義," "需要!
60 read HOSTSSET
61 HOSTSSET="discovery.zen.ping.unicast.hosts: "$HOSTSSET
62 
63 echo $CLUSTERNAME >> $FILE
64 echo $NODENAME >> $FILE
65 echo $IFMASTER >> $FILE
66 echo $HOST >> $FILE
67 echo $HOSTSSET >> $FILE
68 echo $HTTPPORT >> $FILE
69 echo $HTTPCORS1 >> $FILE    ## echo "test" >> xxx  用echo追加
70 echo $HTTPCORS2 >> $FILE    ## 這樣能一行一行的添加。一個echo添加不了多行
71 
72 # 4.修改/etc/sysctl.conf
73 #echo "請輸入虛擬機内存"
74 #read VM
75 echo "vm.max_map_count=655360" >> /etc/sysctl.conf
76 
77 # 5.修改/etc/security/limits.conf
78 
79 LIMITS=/etc/security/limits.conf  
80 
81 echo '* soft nofile 65536' >> $LIMITS
82 echo '* hard nofile 65536' >> $LIMITS
83 echo '* soft nproc 4096' >> $LIMITS
84 echo '* hard nproc 4096' >> $LIMITS
85 
86 echo "====添加配置完畢====="
87 
88 # 6.讓配置生效
89 sysctl -p92 
93 echo "===正在切換用戶hewenyan==="
94 cd /opt/shell
95 su hewenyan -c " sh /opt/shell/es.sh"   ## 轉換用戶為hwy並-command執行命令,
                          ## 需要保證hwy用戶具有opt和子目錄的操作權限

二、cd /opt/shell; touch es.sh esstatus.es 等等

 1 #!/bin/bash
 2 while [ "1"=="1" ]
 3 do
 4  echo "=====請輸入相應命令進行操作======"
 5  echo "-------1:查看es運行狀態---------"
 6  echo "-------2:啓動es---------"
 7  echo "-------3:關閉es---------"
 8  echo "-------4:退出-----------"
 9  read -p "請輸入序號:" read_num
10  case $read_num in
11    "1")
12         echo -e "33[34m -----1-----33[0m"  
13         sh esstatus.sh
14 ;;
15    "2")
16         echo -e "33[34m -----2-----33[0m"
17         sh startupEs622.sh
18 ;;
19    "3")
20         echo -e "33[34m -----3-----33[0m"
21     sh esstop.sh
22 ;;
23    *)
24     echo -e "33[34m -----4-----33[0m"
25         break;
26 ;;
27 
28   esac
29 done
### esstatus
#!/bin/bash
ps=`jps|grep Elasticsearch`
arr=($ps)

#如果arr[0]爲空
if [ -z "${arr[0]}"  ]
then 
 echo -e "33[31m ELASTICSEARCH 未啓動----33[0m"
else
 echo -e "33[31m ELASTICSEARCH 進程為${arr[0]}----33[0m"
fi
stop:
#!/bin/bash
ps=`jps|grep Elasticsearch`
arr=($ps)
if [ -z "${arr[0]}" ]
then 
 echo "未啓動"
else
 echo "正在停止進程${arr[0]}"
 kill -9 ${arr[0]}
 echo "進程已停止"
fi
start:
#!/bin/sh

cd /opt/bigdata/elk/es622/bin
sh elasticsearch 
原文地址:https://www.cnblogs.com/sabertobih/p/13463984.html