開發腳本自動部署及監控html
1.編寫腳本自動部署反向代理、web、nfs;python
要求:nginx
I、部署nginx反向代理三個web服務,調度算法使用加權輪詢;web
II、全部web服務使用共享存儲nfs,保證全部web都對其有讀寫權限,保證數據一致性;算法
2.編寫監控腳本,監控集羣內全部服務存活狀態(須要監控的有全部nginx,nfsshell
nfs也得監控),內存、磁盤剩餘率檢測,異常則發送報警郵件bash
3.編寫計劃任務,定時運行監控腳本,完成監控操做服務器
1.部署nginx反向代理三個web服務,調度算法使用加權輪詢(因爲計算機問題,只開2臺服務器)ui
#/bin/bash systemctl status nginx if(($?==4)) then yum install -y nginx if(($?==0)) then #echo 'Yes!' systemctl start nginx if(($?==0)) then echo "Congratulations!! Nginx start OK!!" else echo "Sorry is Fail!" fi else echo"sorry install is Fail!" fi elif(($?==3)) then systemctl start nginx if(($?==0)) then echo "Congratulations! Nginx start OK!" else echo "sorry!!" fi elif(($?==0)) then echo "OK!" else echo "I am so sorry" fi echo "config writing...." grep 'upstream' /etc/nginx/nginx.conf if(($?!=0)) then sed -ri '/^http/a upstream Yanlong {' /etc/nginx/nginx.conf sed -ri '/^upst/a server yanlongweb1 weight=3\;' /etc/nginx/nginx.conf sed -ri '/^server yanlongweb1/a server yanlongweb2\;' /etc/nginx/nginx.conf sed -ri '/^server yanlongweb2/a \}' /etc/nginx/nginx.conf sed -ri '/^(\ +)(location)(\ )(\/)/a proxy_pass http:\/\/Yanlong\;' /etc/nginx/nginx.conf fi echo "config write is OK!" systemctl reload nginx if(($?==0)) then echo "HTTP load balancer is OK!" else echo "Sorry!!" fi systemctl status nfs if(($?==4)) then yum install rpcbind nfs-utils -y if(($?==0)) then #echo 'Yes!' systemctl start nfs if(($?==0)) then echo "Congratulations! nfs start OK!" else echo "Sorry is Fail!!!" fi else echo"sorry install is Fail!" fi elif(($?==3)) then systemctl start nfs if(($?==0)) then echo "Congratulations!! nfs start OK!!" else echo "sorry!" fi elif(($?==0)) then echo "OKOKOK!" else echo "I am so sorry" fi echo "config writing...." echo "/webindex 192.168.16.0/24(rw,sync,fsid=0)" > /etc/exports echo "config write is OK!" systemctl reload nfs if(($?==0)) then echo "NFS service is OK!" else echo "Sorry!!" fi
2.全部web服務使用共享存儲nfs,保證全部web都對其有讀寫權限,保證數據一致性;代理
#/bin/bash systemctl status nginx if(($?==4)) then yum install -y nginx if(($?==0)) then #echo 'Yes!' systemctl start nginx if(($?==0)) then echo "Congratulations!! Nginx start OK!" else echo "Sorry is Fail!" fi else echo"sorry install is Fail!" fi elif(($?==3)) then systemctl start nginx if(($?==0)) then echo "Congratulations! Nginx start OK!" else echo "sorry!" fi elif(($?==0)) then echo "OK!" else echo "I am so sorry" fi echo "config writing...." sed -ri '/^(\ +)(location)(\ )(\/)/a root\ \/nginxwebservice\;' /etc/nginx/nginx.conf sed -ri '/^root\ \/nginxwebservice/a index\ web.html\;' /etc/nginx/nginx.conf echo "config write is OK!" systemctl reload nginx if(($?==0)) then echo "HTTP load balancer YanlongWEBservice is OK!" else echo "Sorry!" fi systemctl status nfs if(($?==4)) then yum install rpcbind nfs-utils -y if(($?==0)) then #echo 'Yes!' systemctl start nfs if(($?==0)) then echo "Congratulations!! nfs start OK!" else echo "Sorry is Fail!" fi else echo"sorry install is Fail!" fi elif(($?==3)) then systemctl start nfs if(($?==0)) then echo "Congratulations! nfs start OK!" else echo "sorry!" fi elif(($?==0)) then echo "OK!" else echo "I am so sorry" fi echo "config writing...." mount -t nfs 192.168.16.120:/webindex/ /nginxwebservice/ echo "config write is OK!" systemctl reload nfs if(($?==0)) then echo "NFS service is OK!" else echo "Sorry!!" fi
1.編寫監控腳本,監控集羣內 Nginx、NFS 服務存活狀態,內存、磁盤剩餘率檢測,異常則發送報警郵件
先寫個發送郵件的文件
#!/usr/bin/python # -*- coding: UTF-8 -*- import sys import smtplib import email.mime.multipart import email.mime.text server = 'smtp.163.com' port = '25' def sendmail(server,port,user,pwd,msg): smtp = smtplib.SMTP() smtp.connect(server,port) smtp.login(user, pwd) smtp.sendmail(msg['from'], msg['to'], msg.as_string()) smtp.quit() print('郵件發送成功email has send out !') if __name__ == '__main__': msg = email.mime.multipart.MIMEMultipart() msg['Subject'] = '服務器報警請注意!' msg['From'] = 'python4_mail@163.com' msg['To'] = 'python4_recvmail@163.com' user = 'python4_mail' pwd = 'sbalex3714' content='%s\n%s' %('\n'.join(sys.argv[1:4]),' '.join(sys.argv[4:])) #格式處理,專門針對咱們的郵件格式 txt = email.mime.text.MIMEText(content, _charset='utf-8') msg.attach(txt) sendmail(server,port,user,pwd,msg)
再寫監控腳本
#/bin/bash bu=`free | awk 'NR==2{print $6}'` to=`free | awk 'NR==2{print $2}'` mem=`expr "scale=2;$bu/$to" |bc -l | cut -d. -f2` if(($mem >= 70)) then msg="TIME:$(date +%F_%T) HOSTNAME:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print $2}') MSG:內存high了!已經用了${mem}%" echo $msg /usr/bin/pymail.py $msg fi systemctl status nginx if(($?!=0)) then msg="TIME:$(date +%F_%T) HOSTNAME:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print $2}') MSG: Nginx 進程出現異常請注意查看!" echo $msg /usr/bin/pymail.py $msg fi systemctl status nfs if(($?!=0)) then msg="TIME:$(date +%F_%T) HOSTNAME:$(hostname) IPADDR:$(ifconfig |awk 'NR==2{print $2}') MSG: NFS 進程出現異常請注意查看!" echo $msg /usr/bin/pymail.py $msg fi
編寫計劃任務,定時運行監控腳本,完成監控操做
* * * * * /shell/sysCheck.sh