Zookeeper分布式集群搭建
(一)克隆前準備工作
一、時鐘同步
步驟:
1、輸入date命令可以查看當前系統時間,可以看到此時系統時間為PDT(部分機器或許為EST),并非中國標準時間。我們在中國地區,因此要把系統時間改為CST(中國標準時間)
2、修改時間類型:
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改完后再次使用date命令查看是否更改成功。
二、Zookeeper的安裝和部署
步驟:
1、使用XFTP把安裝包zookeeper-3.4.6.tar.gz傳輸到虛擬機主目錄(/home/hadoop)下,然后解壓:
cd ~
tar -zxvf zookeeper-3.4.6.tar.gz
2、配置環境變量,在.bashrc文件中添加內容。先執行以下命令打開.bashrc文件:
vim ~/.bashrc
在文件末尾加上以下語句:
export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
添加完成后保存,然后控制臺執行以下命令刷新即可:
source ~/.bashrc
3、修改zoo.cfg配置文件:
該文件需要新建,并保存在zookeeper安裝路徑的conf子目錄中:
cd ~/zookeeper-3.4.6/conf
vim zoo.cfg
4、大概配置內容如下:
initLimit=10
syncLimit=5
#此處為數據保存目錄,需自行創建
dataDir=/home/hadoop/zkdata
#此處為日志保存目錄,需自行創建
dataLogDir=/home/hadoop/zklog
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
[注意:此處標紅的兩組數字,前面的1、2、3是每個節點服務的編號,后面的主機名是對應節點服務器的IP地址,這里的配置需要和后面克隆后的配置信息對應上。]{.underline}
[節點服務編號的值是一個整型數字,且不能重復。]{.underline}
5、創建數據和日志目錄:
mkdir /home/hadoop/zkdata
mkdir /home/hadoop/zklog
此時,可以開始克隆虛擬機了。
(二)克隆Linux虛擬機
前言:
克隆開始之前,可以保存一下虛擬機的快照,或者完整地備份一下自己的虛擬機,這樣就不必擔憂后續集群使用過程中出現嚴重的問題需要重來。
一、克隆出兩臺虛擬機
步驟:
1、使用stop-all.sh命令關閉hadoop集群后,關閉Linux虛擬機;
2、右鍵選中master,管理-克隆;
3、在彈出的克隆虛擬機向導中,選擇克隆自虛擬機中的當前狀態;
4、創建完整克隆;
5、虛擬機名稱建議為slave1、slave2;位置選擇F盤你自己的目錄;
6、點擊完成開始克隆;
二、把三臺虛擬機都啟動起來
步驟:略
(三)克隆虛擬機后配置
一、為兩臺新的虛擬機修改IP地址
由于是克隆的虛擬機,因此他們的配置都是一樣的,所以開機以后第一步,先把兩臺slave機器的ip地址修改一下,否則IP地址會發生沖突。
只需修改最后的部分即可,即192.168.203.XXX中標紅的一節;設置方式參考前面教程。
二、為兩臺新的虛擬機修改主機名
步驟:
1、修改slave1主機的/etc/hostname文件,將其主機名修改為slave1
sudo vim /etc/hostname
2、重復上述步驟,也把slave2的主機名修改為slave2
三、為三臺機器配置hosts文件
步驟:
1、先在master主機修改/etc/hosts文件,建立主機名與ip地址的映射:
sudo vim /etc/hosts
在末尾添加兩行:
192.168.203.XXX slave1
192.168.203.XXX slave2
其中的ip地址要對應上一步你自己為每一臺主機設置的ip地址。
2、為另外兩臺slave1、slave2主機也重復上面步驟。
四、為master主機配置NTP服務器,用于時鐘同步
步驟:
1、配置NTP服務器:
我們選擇master節點來配置NTP服務器,后續其他節點定時同步master節點的時間。CentOS系統一般已經安裝有NTP服務,因此直接修改配置文件ntp.conf即可,該文件位于/etc文件夾內:
sudo vim /etc/ntp.conf
打開后如下:
{width=“4.813379265091863in” height=“3.261459973753281in”}
2、修改一:
找到#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
這一行,然后在其下方添加:
restrict 192.168.240.129 mask 255.255.255.0 nomodify notrap
其中標紅的ip地址需改成你master主機的ip地址。
3、修改二:
注釋掉下面的4行server域名配置:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
4、修改三:
注釋完以后在下方添加兩行:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
5、修改完后大體如圖所示:
{width=“4.6292465004374455in” height=“1.8431157042869641in”}
6、在master執行以下命令啟動服務:
systemctl start ntpd
7、執行以下命令可以讓master每次啟動機器時,都自動開啟NTP服務:
chkconfig ntpd on
8、在其他節點配置定時同步時間:
使用Linux的crontab命令配置定時任務,定時執行ntpdate時間同步命令即可。
在slave1、slave2都使用crontab -e
命令打開vim編輯器編輯定時命令腳本,在其中添加此行命令:
0-59/10 * * * * sudo /usr/sbin/ntpdate master
其中標紅的需改成你上述配置了ntp服務器的主機名。
設置完成后,后續slave1、slave2將定期每10分鐘自動與master主機同步時間。
五、創建Zookeeper各節點服務編號
在各個機器的/home/hadoop/zkdata
目錄,創建一個myid文件,然后分別輸入服務編號即可,下面以master為例設置,執行以下命令:
cd /home/hadoop/zkdata
touch myid
echo 1 > myid
其中編號1即為master機器的編號,此處必須按照前面Zookeeper安裝與部署步驟4中對應的主機與編號進行設置。
自行重復上述步驟,把三臺機器都配置完畢。
六、啟動Zookeeper集群
在每一臺機器上,分別執行以下命令啟動Zookeeper服務:
zkServer.sh start
一段時間后使用以下命令查看狀態:
zkServer.sh status
如果Zookeeper集群中,出現一個節點為Leader,另外兩個為Follower,則說明Zookeeper集群安裝部署成功。