kafka 、 zookeeper 集羣(二)

1、zookeeper集羣安裝
node

要求:
zookeeper的 jdk 要 6以上
zookeeper生產環境版本爲 3.4.8
apache


1.首先編輯/etc/hosts
在5臺都加入:
10.0.50.10 zk-kafka01
10.0.50.11 zk-kafka02
10.0.50.12 zk-kafka03
10.0.50.13 zk-kafka04
10.0.50.14 zk-kafka05

2.更改hostname
1.vim /etc/sysconfig/network
2.hostname zk-kafka0*
如下爲主機名對應關係
10.0.50.10 zk-kafka01
10.0.50.11 zk-kafka02
10.0.50.12 zk-kafka03
10.0.50.13 zk-kafka04
10.0.50.14 zk-kafka05

3.安裝軟件包
mkdir -p /app/zpy/3rd/zookeeper
mkdir -p /app/zpy/zookeeper
cd /app/zpy/3rd/zookeeper/
rz (包在svn上)
解壓

cd /app/zpy/3rd/zookeeper/zookeeper-3.4.8

cp -a * /app/zpy/zookeeper/

--------------------------------------
此處注意,按照運維標準化原則來講,此處應該 chown 目錄權限至zpy,可是擔憂一組會有較多改動,前期先用root用戶,
待5臺所有部署完畢後,再進行總體權限收回和切換
--------------------------------------
cd /app/zpy/zookeeper/conf
cp zoo_sample.cfg zoo.cfg (拷貝模版配置文件生成新的配置文件)

而後建立zk的data存放目錄
mkdir -p /data/zpy/zookeeper

而後咱們開始修改配置文件了
vim

1.修改數據和快照存儲路徑,路徑爲上方設置的服務器

dataDir=/data/zpy/zookeepersession


2.在配置文件最後添加zk集羣關係app

(2888端口是leader的端口,3888端口是leader掛掉後選舉leader用到的通信渠道端口)運維

server.1=zk-kafka01:2888:3888dom

server.2=zk-kafka02:2888:3888ide

server.3=zk-kafka03:2888:3888svn

server.4=zk-kafka04:2888:3888

server.5=zk-kafka05:2888:3888

配置文件這就改好了

注意:

tickTime:這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。

dataDir:顧名思義就是Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。

clientPort:這個端口就是客戶端鏈接Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。

initLimit:這個配置項是用來配置Zookeeper 接受客戶端(這裏所說的客戶端不是用戶鏈接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中鏈接到 Leader Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過 5個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 5*2000=10

syncLimit:這個配置項標識Leader Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是2*2000=4

server.A=BCD:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,須要一個端口來從新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通訊的端口。若是是僞集羣的配置方式,因爲 B 都是同樣,因此不一樣的 Zookeeper 實例通訊端口號不能同樣,因此要給它們分配不一樣的端口號




3.建立myid文件,並輸入編號

echo "1" > /data/zpy/zookeeper/myid

其餘四臺分別爲 2 3 4 5


4.啓動zookeeper集羣,5臺最好同時啓動,間隔時間不要相差太大

cd /app/zpy/zookeeper/bin/
./zkServer.sh start


5.檢查狀態,一個leader,4個follower

[root@zk-kafka05 bin]#./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /app/zpy/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[root@zk-kafka04 bin]# ./zkServer.sh status

ZooKeeper JMX enabled bydefault
Using config: /app/zpy/zookeeper/bin/../conf/zoo.cfg
Mode: follower

6.測試zookeeper是否正常工做,在server1上執行如下命令

# /home/wwb/zookeeper/bin/zkCli.sh -server192.168.0.2:2181,出現相似如下內容

JLine support is enabled

2013-11-27 19:59:40,560 -INFO     [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@736]-Session establishmentcomplete on server localhost.localdomain/127.0.0.1:2181, sessionid=    0x1429cdb49220000, negotiatedtimeout = 30000

 

WATCHER::

   

WatchedEventstate:SyncConnected type:None path:null

[zk: 127.0.0.1:2181(CONNECTED) 0]



2、kafka集羣安裝

1.下載

wget http://apache.fayea.com/kafka/0.8.2.2/kafka_2.11-0.8.2.2.tgz

版本須要注意,不要選取這個版本以前的版本,有明顯bug,可是也不要選最新的,操做命令不同,研發還須要去學習 解壓

2.安裝、配置

最後安裝在 /app/zpy/kafka 下

修改配置文件 config下的 server.properties

修改項:

broker.id=10 --這個id若是部署的是kafka集羣,id是不能同樣的,能夠以節點ip最後一位命名。

port=9092 --默認kafka端口,若是一臺機器上面部署了多個kafka實例,須要兩個實例端口不同

log.dirs=/data/zpy/kafka10-logs ----這個是kafka日誌文件存放路徑,默認是/tmp下的,重啓會消                                     失,因此咱們更換目錄

num.partitions=1 ---這個須要與研發商議,與數據插入順序有關。具體有研發的程序決定。若是研發                   程序中設置了3個partition,配置文件中設置爲1也不生效。配置文件只做爲默認                     值。

zookeeper.connect=10.0.50.10:2181,10.0.50.11:2181,10.0.50.12:2181,10.0.50.13:2181,10.0.50.14:2181/kafkagroup kafka實現功能須要zookeeper調度,因此這是與zk單機或者集羣的鏈接,上面是與                   集羣鏈接的方式,也能夠去掉/kafkagroup,可是zk的znode結構就會比較混亂,因此                   建議加上一個路徑。/路徑下存放znode相關信息,最好建立一個目錄,如                           kafkagroup存放kafka集羣的信息

zookeeper.connection.timeout.ms=6000 ----鏈接zk超時時間

修改kafka的啓動腳本(調節啓動內存佔用大小) cd kafka/bin

vim kafka-server-start.sh

修改28-29行

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then

 export KAFKA_HEAP_OPTS="-Xmx32G -Xms8G"

3.啓動

kafka啓動(必定後臺啓動):

./kafka-server-start.sh ../config/server.properties &

4.啓動後驗證

查看zk集羣的znode節點信息 zk是有客戶端工具的,能夠下載使用,可是zk程序中也自帶了程序監測 進入zk的bin目錄下 

[root@zk-kafka01 bin]# sh zkCli.sh 

Connecting to localhost:2181 Welcome to ZooKeeper! JLine support is enabled WATCHER:: WatchedEvent state:SyncConnected type:None path:null 

[zk: localhost:2181(CONNECTED) 0] ls / 

[kafkagroup, zookeeper]

能夠看到咱們在kafka裏設置的kafkagroup

5.建立Topic(包含3個分區,2個備份副本)

## ./kafka-topics.sh --create --zookeeper 10.0.140.26:2181/kafka --replication-factor 2 --partition 3 --topic zxytest

Created topic "zxytest".

6.查看topic狀況

# cd /app/zpy/zookeeper/bin

# sh zkCli.sh

[zk: localhost:2181(CONNECTED) 1] ls /

[zk, consumers, brokers, zk01, zookeeper, kafka]

[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/topics/

zxytest


7.模擬topic生產數據信息


# ./kafka-console-producer.sh --broker-list 10.0.50.10:9092 --topic zxytest

模擬輸入內容

hello

world


8.模擬消費者接收數據

# ./kafka-console-consumer.sh --zookeeper 10.0.50.10:2181/kafka --topic zxytest --from-beginning

會接收到生產的數據信息

hello

world

相關文章
相關標籤/搜索