zookeeper集羣搭建html
centOS操做系統
檢測集羣時間是否同步
檢測防火牆是否關閉
檢測主機 ip映射有沒有配置
檢測服務器間是否配置免密登錄
檢測服務器是否安裝正確的jdkjava
---------------------------------------------------------------------------------------------------------------------------------------
檢測集羣時間是否同步node
說明:因爲大數據中,集羣對時間要求很高,因此集羣內主機要常常同步時間(包括時區的同步)。linux
經常使用的手動進行時間的同步
date -s "2017-03-03 03:03:03"
或者網絡同步:
yum install ntpdate (安裝ntpdate網絡時間協議更新軟件)
ntpdate cn.pool.ntp.org (中國網絡時間協議)shell
也能夠進行以下的設置:(時間同步協議)服務器
一、yum install ntp網絡
二、vi /etc/ntp.confapp
修改以下部分:
server 58.220.207.226 iburst
server 47.92.108.218 iburst
server 202.112.29.82 iburst
server 202.108.6.95 iburstdom
其中ip爲全球可用的ntp時間服務器,免費提供授時服務。ssh
三、配置以後,保存設置,重啓服務
service ntpd stop 時間同步協議
service ntpd start
四、甚至能夠設置crontab來定時與互聯網服務器進行同步
---------------------------------------------------------------------------------------------------------------------------------------
檢測防火牆是否關閉
關閉防火牆,意味着把全部通訊端口開放
三臺虛擬機同時發送命令:
service iptables stop 關閉防火牆服務(關機恢復)
chkconfig iptables off 永久關閉防火牆(關機有效)
chkconfig iptables --list 查看防火牆狀態
---------------------------------------------------------------------------------------------------------------------------------------
檢測主機 ip映射有沒有配置
修改映射 vi /etc/hosts
查看映射 cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.158.151 node-1
192.168.158.152 node-2
192.168.158.153 node-3
測試:ping node-1等
---------------------------------------------------------------------------------------------------------------------------------------
檢測服務器間是否配置免密登錄
每臺服務器都要配置三次(包括本機 (本機登錄本機的底層原理:xshell登錄node-1,node-1的ssh進程登錄node-1))
ssh-keygen
ssh-copy-id node-1
免密登錄測試:ssh node-1
退出登錄:exit
---------------------------------------------------------------------------------------------------------------------------------------
安裝前須要安裝好jdk
卸載服務器自帶的openjdk:
rpm -qa|grep java 查詢
rpm -e --nodeps xxxxxxxxxxxxxxxxxxx 卸載
jdk安裝路徑:
mkdir -p /export/servers 軟件安裝
mkdir -p /export/software 安裝包
mkdir -p /export/data 數據存放
jdk從一臺機器配置,而後發送給其餘機器
環境變量:vi /etc/profile (大G最後一行,小o開啓新一行)
export JAVA_HOME=/export/servers/jdk1.8.0_65 (以實際安裝路徑爲準)
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar (非必選)
環境變量開機加載一次,source /etc/profile 命令生效,java -version驗證是否成功
發送給其餘機器:
scp -r /export/servers/jdk1.8.0_65 root@node-2:/export/servers/
scp -r /etc/profile root@node-2:/etc/
同時發送 source /etc/profile 使環境變量生效
同時發送 java -version 驗證是否生效
-----------------------------------------------------------------------------------------------------------------------------
##下載安裝包、解壓
tar -zxvf zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 zookeeper
##修改環境變量(注意:3臺zookeeper都須要修改)
vi /etc/profile
export ZOOKEEPER_HOME=/export/servers/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
##修改Zookeeper配置文件
cd /export/servers/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改內容:
dataDir=/export/data/zkdata
添加內容:
server.1=node-1:2888:3888 ## (服務器名編號不重複便可,主機名,心跳端口、選舉端口)
server.2=node-2:2888:3888
server.3=node-3:2888:3888
##myid
建立並進入文件夾:
/export/data/zkdata
在data文件夾下新建myid文件,myid的文件內容爲:
echo 1 > myid
##分發安裝包到其餘機器
scp -r /export/servers/zookeeper root@node-2:/export/servers/
scp -r /export/servers/zookeeper root@node-3:/export/servers/
##修改其餘機器的配置文件
修改myid文件
到node2上:
cd /export/data/zkdata
echo 2 > myid
到node3上:
cd /export/data/zkdata
echo 3 > myid
##啓動(每臺機器)
zkServer.sh start
或者編寫一個腳原本批量啓動全部機器:
for host in "node-1 node-2 node-3"
do
ssh $host "source/etc/profile;/root/apps/zookeeper/bin/zkServer.sh start"
done
##查看集羣狀態
jps(jdk提供的查看java進程命令)
zkServer.sh status(查看集羣狀態,主從信息)
若是啓動不成功,能夠觀察zookeeper.out日誌,查看錯誤信息進行排查,排查以後還有問題,請使用萬能法:重啓linux
-----------------------------
配置文件中參數說明:
tickTime這個時間是做爲zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是說每一個tickTime時間就會發送一個心跳。
initLimit這個配置項是用來配置zookeeper接受客戶端(這裏所說的客戶端不是用戶鏈接zookeeper服務器的客戶端,而是zookeeper服務器集羣中鏈接到leader的follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。
當已經超過10個心跳的時間(也就是tickTime)長度後 zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 10*2000=20秒。
syncLimit這個配置項標識leader與follower之間發送消息,請求和應答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是5*2000=10秒。
dataDir顧名思義就是zookeeper保存數據的目錄,默認狀況下zookeeper將寫數據的日誌文件也保存在這個目錄裏;
clientPort這個端口就是客戶端鏈接Zookeeper服務器的端口,Zookeeper會監聽這個端口接受客戶端的訪問請求;
server.A=B:C:D中的A是一個數字,表示這個是第幾號服務器,B是這個服務器的IP地址,C第一個端口用來集羣成員的信息交換,表示這個服務器與集羣中的leader服務器交換信息的端口,D是在leader掛掉時專門用來進行選舉leader所用的端口。
調bug參考(感謝)
https://blog.csdn.net/u014686180/article/details/51767863
https://www.cnblogs.com/eggplantpro/p/7120893.html
----------------------------------------------------------------
export JAVA_HOME=/root/apps/jdk1.8.0_65export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar