1.配置集羣間免密登陸vim
(1)配置host:vim /etc/hostsbash
(2)生成公鑰 :ssh-keygen -t rsa -P '' 服務器
這時會提示生成的公鑰的存放地址,直接回車,公鑰生成成功ssh
(3)cat id_rsa.pub 將生成的公鑰添加到須要登陸的機器的authorized_keys文件裏ide
而後直接ssh crawler01便可登陸優化
2.一鍵啓動腳本spa
1 #!/bin/bash 2 3 #程序包名稱 4 ZIP_NAME="aikucun-distributed-spider-crawler.zip" 5 6 zip_exist(){ 7 if [ ! -f "$ZIP_NAME" ] 8 then 9 return 1 10 else 11 return 0 12 fi 13 } 14 15 backup(){ 16 echo "備份方法執行..." 17 cd ~/crawler 18 if zip_exist; then 19 mv $ZIP_NAME ~/jar_bak 20 echo "crawler程序包備份完成!" 21 else 22 echo "$ZIP_NAME 不存在,沒法備份,請檢查!" 23 fi 24 } 25 26 check_single(){ 27 if [ ! -f "bin/single.sh" ] 28 then 29 return 1 30 else 31 return 0 32 fi 33 } 34 35 stop(){ 36 echo "中止方法執行..." 37 if check_single; then 38 sh bin/single.sh stop 39 CURRENT_PATH=`cd "$(dirname "$0")"; pwd` 40 echo "當前所在目錄:$CURRENT_PATH" 41 rm -rf ~/crawler/* 42 echo "已清除舊程序" 43 else 44 echo "single腳本文件不存在,沒法中止程序,請檢查程序結構是否完整!" 45 exit 1 46 fi 47 } 48 49 start(){ 50 echo "開始方法執行..." 51 cd ~/jar_new 52 if zip_exist; then 53 mv $ZIP_NAME ~/crawler 54 cd ~/crawler 55 unzip -q $ZIP_NAME 56 echo "解壓程序包完成!" 57 cd bin 58 dos2unix single.sh 59 echo "格式轉換完成!" 60 sh single.sh start 61 else 62 echo "$ZIP_NAME 不存在,程序沒法發佈,請檢查!" 63 exit 1 64 fi 65 } 66 backup 67 stop 68 star
3.上傳一鍵啓動腳本upload.shunix
1 #!/bin/bash 2 3 #取當前目錄 4 BASE_PATH=`cd "$(dirname "$0")"; pwd` 5 6 crawler_list=" 7 crawler02 8 crawler03 9 crawler04 10 crawler05 11 crawler06 12 crawler07 13 crawler08 14 crawler09 15 crawler10 16 crawler11 17 crawler12 18 crawler13 19 crawler14 20 crawler15 21 " 22 for i in $crawler_list 23 do 24 echo "正在上傳一鍵啓動腳本至$i" 25 scp $BASE_PATH/publish_crawler.sh $i:~ 26 echo "$i機器上傳完成" 27 done
4.一鍵發佈腳本code
1 #!/bin/bash 2 3 #取當前目錄 4 BASE_PATH=`cd "$(dirname "$0")"; pwd` 5 SHELL_NAME="publish_crawler.sh" 6 7 crawler_list=" 8 crawler02 9 crawler03 10 crawler04 11 crawler05 12 crawler06 13 crawler07 14 crawler08 15 crawler09 16 crawler10 17 crawler11 18 crawler12 19 crawler13 20 crawler14 21 crawler15 22 " 23 for i in $crawler_list 24 do 25 echo "正在上傳程序包至$i" 26 scp $BASE_PATH/crawler/aikucun-distributed-spider-crawler.zip $i:~/jar_new 27 echo "登陸並執行一鍵啓動腳本" 28 ssh $i "sh $SHELL_NAME" 29 done
5.通用腳本優化blog
(1)上傳一鍵啓動腳本到相應的服務器的腳本
(2)一鍵啓動腳本
(3)一鍵發佈腳本
1 #!/bin/bash 2 3 #取當前目錄 4 BASE_PATH=`cd "$(dirname "$0")"; pwd` 5 6 SERVER_LIST="" 7 8 upload(){ 9 echo "上傳服務器列表:$SERVER_LIST" 10 for i in $SERVER_LIST 11 do 12 echo "正在上傳一鍵啓動腳本至$i" 13 scp $BASE_PATH/publish.sh $i:~ 14 echo "$i機器上傳完成" 15 done 16 } 17 18 case "$1" in 19 20 crawler) 21 SERVER_LIST=" 22 crawler02 23 crawler03 24 crawler04 25 crawler05 26 crawler06 27 crawler07 28 crawler08 29 crawler09 30 crawler10 31 crawler11 32 crawler12 33 crawler13 34 crawler14 35 crawler15 36 " 37 upload 38 ;; 39 transport) 40 SERVER_LIST=" 41 transport01 42 transport02 43 transport03 44 transport04 45 transport05 46 transport06 47 " 48 upload 49 ;; 50 storage) 51 echo "還沒有集成,敬請期待!" 52 ;; 53 *) 54 echo "available operations: [crawler|transport|storage]" 55 exit 1 56 ;; 57 esac
1 #!/bin/bash 2 3 #程序包名稱 4 APP_NAME=$1 5 ZIP_NAME="aikucun-distributed-spider-$APP_NAME.zip" 6 APP_PATH=$APP_NAME 7 8 zip_exist(){ 9 if [ ! -f "$ZIP_NAME" ] 10 then 11 return 1 12 else 13 return 0 14 fi 15 } 16 17 backup(){ 18 echo "備份方法執行..." 19 cd ~/$APP_PATH 20 if zip_exist; then 21 mv $ZIP_NAME ~/jar_bak 22 echo "$APP_NAME 程序包備份完成!" 23 else 24 echo "$ZIP_NAME 不存在,沒法備份,請檢查!" 25 fi 26 } 27 28 check_single(){ 29 if [ ! -f "bin/single.sh" ] 30 then 31 return 1 32 else 33 return 0 34 fi 35 } 36 37 stop(){ 38 echo "中止方法執行..." 39 if check_single; then 40 sh bin/single.sh stop 41 CURRENT_PATH=`cd "$(dirname "$0")"; pwd` 42 echo "當前所在目錄:$CURRENT_PATH" 43 rm -rf ~/$APP_PATH/* 44 echo "已清除舊程序" 45 else 46 echo "single腳本文件不存在,沒法中止程序,請檢查程序結構是否完整!" 47 exit 1 48 fi 49 } 50 51 start(){ 52 echo "開始方法執行..." 53 cd ~/jar_new 54 if zip_exist; then 55 mv $ZIP_NAME ~/$APP_PATH 56 cd ~/$APP_PATH 57 unzip -q $ZIP_NAME 58 echo "解壓程序包完成!" 59 cd bin 60 dos2unix single.sh 61 echo "格式轉換完成!" 62 sh single.sh start 63 else 64 echo "$ZIP_NAME 不存在,程序沒法發佈,請檢查!" 65 exit 1 66 fi 67 } 68 69 case "$1" in 70 71 crawler|transport|storage) 72 backup 73 stop 74 start 75 ;; 76 *) 77 echo "available operations: [crawler|transport|storage]" 78 exit 1 79 ;; 80 esac
1 #!/bin/bash 2 3 #取當前目錄 4 BASE_PATH=`cd "$(dirname "$0")"; pwd` 5 SHELL_NAME="publish.sh" 6 APP_NAME=$1 7 8 SERVER_LIST="init" 9 10 execute(){ 11 echo "服務器列表:$SERVER_LIST" 12 echo "應用名稱: $APP_NAME" 13 for i in $SERVER_LIST 14 do 15 echo "正在上傳 $APP_NAME 程序包至$i" 16 scp $BASE_PATH/$APP_NAME/aikucun-distributed-spider-$APP_NAME.zip $i:~/jar_new 17 echo "登陸並執行一鍵啓動腳本" 18 ssh $i "sh $SHELL_NAME $APP_NAME" 19 done 20 } 21 22 case "$1" in 23 24 crawler) 25 SERVER_LIST=" 26 crawler02 27 crawler03 28 crawler04 29 crawler05 30 crawler06 31 crawler07 32 crawler08 33 crawler09 34 crawler10 35 crawler11 36 crawler12 37 crawler13 38 crawler14 39 crawler15 40 " 41 execute 42 ;; 43 transport) 44 SERVER_LIST=" 45 transport01 46 transport02 47 transport03 48 transport04 49 transport05 50 transport06 51 " 52 execute 53 ;; 54 storage) 55 echo "還沒有集成,敬請期待!" 56 ;; 57 *) 58 echo "available operations: [crawler|transport|storage]" 59 exit 1 60 ;; 61 esac
6.在原來的基礎上進一步優化,增長一鍵中止功能
(1)上傳發布腳本到集羣各個服務器的腳本
#!/bin/bash #取當前目錄 BASE_PATH=`cd "$(dirname "$0")"; pwd` SERVER_LIST="" upload(){ echo "上傳服務器列表:$SERVER_LIST" for i in $SERVER_LIST do echo "正在上傳一鍵啓動腳本至$i" scp $BASE_PATH/publish.sh $i:~ echo "$i機器上傳完成" done } case "$1" in crawler) SERVER_LIST=" crawler02 crawler03 crawler04 crawler05 crawler06 crawler07 crawler08 crawler09 crawler10 crawler11 crawler12 crawler13 crawler14 crawler15 crawler16 crawler17 " upload ;; transport) SERVER_LIST=" transport01 transport02 transport03 transport04 transport05 transport06 transport07 transport08 " upload ;; storage) SERVER_LIST=" storage01 storage02 storage03 storage04 " upload ;; controller) SERVER_LIST=" controller01 controller02 controller03 " upload ;; *) echo "available operations: [crawler|transport|storage|controller]" exit 1 ;; esac
(2)發佈腳本
#!/bin/bash #程序包名稱 APP_NAME=$1 ZIP_NAME="aikucun-distributed-spider-$APP_NAME.zip" APP_PATH=$APP_NAME zip_exist(){ if [ ! -f "$ZIP_NAME" ] then return 1 else return 0 fi } backup(){ echo "備份方法執行..." cd ~/$APP_PATH if zip_exist; then mv $ZIP_NAME ~/jar_bak echo "$APP_NAME 程序包備份完成!" else echo "$ZIP_NAME 不存在,沒法備份,請檢查!" fi } check_single(){ if [ ! -f "bin/single.sh" ] then return 1 else return 0 fi } stop(){ echo "中止方法執行..." cd ~/$APP_PATH if check_single; then sh bin/single.sh stop CURRENT_PATH=`cd "$(dirname "$0")"; pwd` echo "當前所在目錄:$CURRENT_PATH" else echo "single腳本文件不存在,沒法中止程序,請檢查程序結構是否完整!" exit 1 fi } start(){ echo "開始方法執行..." rm -rf ~/$APP_PATH/* echo "已清除舊程序" cd ~/jar_new if zip_exist; then mv $ZIP_NAME ~/$APP_PATH cd ~/$APP_PATH unzip -q $ZIP_NAME echo "解壓程序包完成!" cd bin dos2unix single.sh echo "格式轉換完成!" sh single.sh start else echo "$ZIP_NAME 不存在,程序沒法發佈,請檢查!" exit 1 fi } case "$1" in crawler|transport|storage|controller) if [ "$2" == 'stop' ]; then stop else backup stop start fi ;; *) echo "available operations: [crawler|transport|storage|controller]" exit 1 ;; esac
(3)一鍵發佈執行腳本
#!/bin/bash #取當前目錄 BASE_PATH=`cd "$(dirname "$0")"; pwd` SHELL_NAME="publish.sh" APP_NAME=$1 ACT=$2 SERVER_LIST="init" execute(){ echo "服務器列表:$SERVER_LIST" echo "應用名稱: $APP_NAME" for i in $SERVER_LIST do echo "正在上傳 $APP_NAME 程序包至$i" scp $BASE_PATH/$APP_NAME/aikucun-distributed-spider-$APP_NAME.zip $i:~/jar_new echo "登陸並執行一鍵 $ACT 執行腳本" ssh $i "sh $SHELL_NAME $APP_NAME $ACT" done } case "$1" in crawler) SERVER_LIST=" crawler02 crawler03 crawler04 crawler05 crawler06 crawler07 crawler08 crawler09 crawler10 crawler11 crawler12 crawler13 crawler14 crawler15 crawler16 crawler17 " execute ;; transport) SERVER_LIST=" transport01 transport02 transport03 transport04 transport05 transport06 transport07 transport08 " execute ;; storage) SERVER_LIST=" storage01 storage02 storage03 storage04 " execute ;; controller) SERVER_LIST=" controller01 controller02 " execute ;; *) echo "available operations: [crawler|transport|storage|controller]" exit 1 ;; esac