上一章節博主介紹了zookeeper的命令行客戶端的基本使用、數據結構以及監聽等等功能,本節博主將繼續爲你們分享zookeeper的啓動、關閉、重啓。在咱們如今的大型項目裏面,除了zookeeper外,還有不少的中間件都是集羣式部署工做的(如:kafka,storm等等)。若是咱們此時一臺一臺服務器的去啓動相應的機器上安裝的集羣服務,那至關的耗時。那有沒有一種簡單的方式來實現一次操做就將整個集羣啓動呢?答案固然是能夠的,咱們可經過編寫shell腳原本遠程執行集羣上每一個節點對於的機器上的服務,從而實現整個集羣的一鍵啓動。java
可能用到的命令:linux
關閉防火牆和selinux: Redhat使用了SELinux來加強安全,關閉的辦法爲: 1. 永久有效 修改 /etc/selinux/config 文件中的 SELINUX="" 爲 disabled ,而後重啓。 2. 即時生效 setenforce 0 關閉防火牆的方法爲: 1. 永久性生效 開啓:chkconfig iptables on 關閉:chkconfig iptables off 2. 即時生效,重啓後失效 開啓:service iptables start 關閉:service iptables stop 須要說明的是對於 Linux 下的其它服務均可以用以上命令執行開啓和關閉操做 補充: a. 防火牆還須要關閉ipv6的防火牆: chkconfig ip6tables off 而且能夠經過以下命令查看狀態: chkconfig --list iptables b. selinux狀態能夠經過如下命令查看: sestatuss
(一)在列出腳本以前先介紹些基礎知識:shell
(1)b1=2 定義的變量,只對本身所在的shell進程生效 (2)export b=2 這個命令定義的變量只在當前這個進程和它的子進程中有效 (3)source s1.sh 會將定義在腳本文件中的變量放在當前登陸的shell裏面 (4)ssh遠程登陸集羣,可執行命令操做遠程主機
(二)zookeeper集羣啓動腳本配置全過程:安全
(1)首先配置啓動腳本所在機器對其它集羣節點的免密登陸(此處的操做,博主在以前的文章已經介紹過,此處就不贅述了)bash
(2)編寫腳本zk_start_ssh.sh服務器
#/bin/bash ZKSERVERS=(192.168.29.135 192.168.29.136 192.168.29.143) echo ==========總共${#ZKSERVERS[@]}臺服務器========== for SERVER in ${ZKSERVERS[@]} do dat=`date '+%Y-%m-%d %H:%M:%S'` echo ========start zookeeper $SERVER $dat =========== ssh root@$SERVER "source /etc/profile;/opt/apps/zookeeper-3.4.13/bin/zkServer.sh start;exit;" echo ========start zookeeper $SERVER success $dat=========== done echo ==========自動化腳本任務執行完成========== ~
(3)編寫腳本zk_kill_ssh.sh數據結構
#/bin/bash ZKSERVERS=(192.168.29.135 192.168.29.136 192.168.29.143) echo ==========總共${#ZKSERVERS[@]}臺服務器========== for SERVER in ${ZKSERVERS[@]} do dat=`date '+%Y-%m-%d %H:%M:%S'` echo ========kill zookeeper $SERVER $dat =========== ssh root@$SERVER "ps -ef | grep 'zookeeper' | grep -v grep | awk '{print \$2}'| xargs kill;exit;" echo ========kill zookeeper $SERVER success $dat=========== done echo ==========自動化腳本任務執行完成==========
(4)編寫腳本zk_restart_delay_ssh.shapp
#/bin/bash ZKSERVERS=(192.168.29.135 192.168.29.136 192.168.29.143) interval_time=10s if [ "$1" ]; then echo ===========成功設置延遲啓動時間設置爲:$1s=================== interval_time=$1 else echo ===========默認設置延遲啓動時間設置爲:${interval_time}s=================== fi i=1 echo ==========總共${#ZKSERVERS[@]}臺服務器========== for SERVER in ${ZKSERVERS[@]} do dat=`date '+%Y-%m-%d %H:%M:%S'` echo ========kill zookeeper $SERVER $dat =========== ssh root@$SERVER "ps -ef | grep 'zookeeper' | grep -v grep | awk '{print \$2}'| xargs kill;exit;" echo ========kill zookeeper $SERVER success $dat=========== dat=`date '+%Y-%m-%d %H:%M:%S'` echo ========start zookeeper $SERVER $dat =========== ssh root@$SERVER "source /etc/profile;/opt/apps/zookeeper-3.4.13/bin/zkServer.sh start;exit;" echo ========start zookeeper $SERVER success $dat=========== if [[ "$i" -lt ${#SERVERS[@]} ]]; then echo ========sleep ${interval_time}======= sleep ${interval_time} fi let "i++" done echo ==========自動化腳本任務執行完成==========
(三)總結(遠程登陸時執行zookeeper啓動時,爲什麼souce /etc/profile)ssh
a.終端登陸時,用戶會默認執行一遍如下三個文件
/etc/profile
/root/bash_profle 用戶主目錄下
/root/bashrc 用戶主目錄下命令行
b.ssh登陸時,不會執行默認的source文件腳本
c.jps 能夠查看java進程 QuorumPeerMain爲zookeeper進程
最後寄語,以上是博主本次文章的所有內容,若是你們以爲博主的文章還不錯,請點贊;若是您對博主其它服務器技術或者博主本人感興趣,請關注博主博客,而且歡迎隨時跟博主溝通交流。