徹底分佈式集羣(一)集羣基礎環境及zookeeper-3.4.10安裝部署

本系列博文將記錄在3臺CentOS7環境下搭建徹底分佈式數據分析平臺環境。java

基礎環境配置

環境信息

 

設置機器名

設置服務器的機器名,3臺都設依次分別設置爲node222,node224,node225,root用戶操做,示例如node222。node

hostnamectl set-hostname node222

修改各服務器的/etc/hosts文件,追加3臺服務器的IP和hostname信息,3臺服務器信息一致,root用戶操做。linux

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.222 node222
192.168.0.224 node224
192.168.0.225 node225

切一次用戶測試配置是否設置生效,同時測試經過hostname互ping是否正常。shell

su - root
ping node222

關閉防火牆

CentOS7默認防火牆服務是firewalld,3臺服務器都要執行,root用戶操做,若是安裝了iptables服務也要關閉。bash

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop iptables.service
systemctl disable iptables.service

關閉SElinux

修改/etc/selinux/config文件,將SELINUX設置爲disabled,3臺服務器均需安裝,root用戶操做。服務器

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

安裝JDK8

JDK8或最新版本可在oracle官方網站下載,本次採用jdk-8u66-linux-x64.gz,下載後經過FTP工具上傳至服務器,解壓,配置環境變量便可。3臺服務器均需安裝,root用戶操做。oracle

gtar -xzf /home/hadoop/jdk-8u66-linux-x64.gz  -C /usr/local/
ls /usr/local/jdk1.8.0_66/
# 編輯/etc/profile文件添加以下內容
export JAVA_HOME=/usr/local/jdk1.8.0_66/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

vi /etc/profile
# 使配置生效
source /etc/profile
# 測試JDK環境
java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

以上各步驟操做完成後,重啓各服務器,再次檢查各配置項是否生效,如一切正常,即完成初始服務器環境配置。dom

安裝zookeeper集羣

        ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。分佈式

        如下記錄zookeeper-3.4.10版本的3節點徹底分佈式集羣環境安裝部署過程。 工具

下載zookeeper-3.4.10.tar.gz,經過FTP工具上傳至一臺服務器並解壓,一臺服務器上操做,root用戶操做。

tar -zxf /rpmpackages/hbase/zookeeper-3.4.10.tar.gz  -C /usr/local/

建立數據和日誌目錄

mkdir -p /usr/local/zookeeper-3.4.10/zkdata
mkdir -p /usr/local/zookeeper-3.4.10/zklogs

複製模板生成配置文件,修改如下配置項

cp /usr/local/zookeeper-3.4.10/conf/zoo_sample.cfg  /usr/local/zookeeper-3.4.10/conf/zoo.cfg
vi /usr/local/zookeeper-3.4.10/conf/zoo.cfg
# 修改的內容
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/local/zookeeper-3.4.10/zkdata
clientPort=2181
#最好用機器名
server.1=node222:2888:3888                 
server.2=node224:2888:3888
server.3=node225:2888:3888

相關配置參數說明:

#tickTime:
Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳,單位是毫秒。
#initLimit:
配置zookeeper集羣中follower與leader初始化鏈接時能容忍的tickTime個數,那麼容忍的時長就等於initLimit*tickTime
#syncLimit:
配置 Leader 與Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是syncLimit*tickTime
#dataDir:
快照日誌的存儲路徑
#dataLogDir:
事物日誌的存儲路徑,若是不配置這個那麼事物日誌會默認存儲到dataDir制定的目錄,這樣會嚴重影響zk的性能,當zk吞吐量較大的時候,產生的事物日誌、快照日誌太多
#clientPort:
這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
#server.1 這個1是服務器的標識也能夠是其餘的數字, 表示這個是第幾號服務器,這個標識要寫到快照目錄下面myid文件裏
#node222爲集羣裏的hostname,第一個端口是master和slave之間的通訊端口,默認是2888,第二個端口是leader選舉的端口,集羣剛啓動的時候選舉或者leader掛掉以後進行新的選舉的端口默認是3888

編輯bin/zkEnv.sh設置日誌目錄

if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="/usr/local/zookeeper-3.4.10/zklogs"
fi

拷貝zookeeper安裝文件至其餘節點

scp -r /usr/local/zookeeper-3.4.10 root@node224:/usr/local/
scp -r /usr/local/zookeeper-3.4.10 root@node225:/usr/local/

給集羣的每臺服務器分別建立本身的myid文件,文件內的號碼要與配置文件中的配置一致

[root@node222 zookeeper-3.4.10]# echo "1" >  zkdata/myid
[root@node224 zookeeper-3.4.10]# echo "2" >  zkdata/myid
[root@node225 zookeeper-3.4.10]# echo "3" >  zkdata/myid

配置zookeeper的環境變量,3臺服務均要配置。

vi /etc/profile
# 追加以下內容
export ZK_HOME=/usr/local/zookeeper-3.4.10
export PATH=$ZK_HOME/bin:ZK_HOME/sbin:ZK_HOME/lib:$PATH
# 使配置生效
source /etc/profile

啓動節點上的zookeeper服務

/usr/local/zookeeper-3.4.10/bin/zkServer.sh  start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

檢查各節點的zookeeper服務狀態,正常應該有一個leader,兩個follower。

# leader節點狀態
/usr/local/zookeeper-3.4.10/bin/zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

# follower節點狀態
/usr/local/zookeeper-3.4.10/bin/zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

集羣中若是有三個節點,關閉兩個節點後,第三個節點的狀態會出現異常。啓動一個節點(兩個節點)狀態又能夠恢復;主節點關閉後,會選舉新的主節點,原主節點啓動後會做爲從節點。

客戶端shell操做

zookeeper可經過zkCli.sh客戶端工具鏈接,進行簡單的shell操做。

/usr/local/zookeeper-3.4.10/bin/zkCli.sh  -server node224:2181
Connecting to node224:2181
......
WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: node224:2181(CONNECTED) 0]
[zk: node224:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: node224:2181(CONNECTED) 1] ls /zookeeper
[quota]
[zk: node224:2181(CONNECTED) 2] ls /zookeeper/quota
[]
[zk: node224:2181(CONNECTED) 3] create /zk_test my_data
Created /zk_test
[zk: node224:2181(CONNECTED) 4] ls /
[zookeeper, zk_test]
[zk: node224:2181(CONNECTED) 5] ls /zk_test
[]
[zk: node224:2181(CONNECTED) 6] get /zk_test
相關文章
相關標籤/搜索