zookeeper集羣搭建

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

相關文章
相關標籤/搜索