一、搭建Zookeeper集群
Zookeeper是一個分布式開源框架,提供了協(xié)調(diào)分布式應(yīng)用的基本服務(wù),它向外部應(yīng)用暴露一組通用服務(wù)——分布式同步(Distributed Synchronization)、命名服務(wù)(Naming Service)、集群維護(hù)(Group Maintenance)等,簡化分布式應(yīng)用協(xié)調(diào)及其管理的難度,提供高性能的分布式服務(wù)。ZooKeeper本身可以以單機(jī)模式安裝運(yùn)行,不過它的長處在于通過分布式ZooKeeper集群(一個Leader,多個Follower),基于一定的策略來保證ZooKeeper集群的穩(wěn)定性和可用性,從而實現(xiàn)分布式應(yīng)用的可靠性。
1.在zookeeper.apache.org上下載zookeeper-3.4.8.tar.gz
2.解壓 tar -xzvf zookeeper-3.4.8.tar.gz
3.修改權(quán)限 sudo chown -R cms(ubuntu用戶名) zookeeper-3.4.8
4.修改配置文件 /etc/profile,增加
5.對Zookeeper的配置文件的參數(shù)進(jìn)行設(shè)置
進(jìn)入zookeeper-3.4.5/conf
1)cp zoo_sample.cfg zoo.cfg
2)在zookeeper下新建一個存放數(shù)據(jù)的目錄
mkdir zookerperdata
3)vim zoo.cfg
4)注意上圖的配置中master,slave1分別為主機(jī)名
在上面的配置文件中"server.id=host:port:port"中的第一個port是從機(jī)器(follower)連接到主機(jī)器(leader)的端口號,第二個port是進(jìn)行l(wèi)eadership選舉的端口號。
5)創(chuàng)建myid
接下來在dataDir所指定的目錄下(zookeeper-3.4.8/zookerperdata/)創(chuàng)建一個文件名為myid的文件,文件中的內(nèi)容只有一行,為本主機(jī)對應(yīng)的id值,也就是上圖中server.id中的id。例如:在服務(wù)器1中的myid的內(nèi)容應(yīng)該寫入1。
vim myid
6)遠(yuǎn)程復(fù)制到slave1,slave2相同的目錄下
scp -r zookeeper-3.4.8 cms@slave1:/home/cms/
scp -r zookeeper-3.4.8 cms@slave1:/home/cms/
7)修改slave1,slave2機(jī)器上的myid的值分別為2和3
啟動ZooKeeper集群
在ZooKeeper集群的每個結(jié)點上,執(zhí)行啟動ZooKeeper服務(wù)的腳本,如下所示:
其中,QuorumPeerMain是zookeeper進(jìn)程,啟動正常。
如上依次啟動了所有機(jī)器上的Zookeeper之后可以通過ZooKeeper的腳本來查看啟動狀態(tài),包括集群中各個結(jié)點的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每個結(jié)點上查詢的結(jié)果
二、搭建kafka集群
1.下載
下載官網(wǎng):http://kafka.apache.org/downloads
下載版本:與自己安裝的Scala版本對應(yīng)的版本,個人習(xí)慣是下載最新版本的前一版
kafka_2.11-0.10.0.1.tgz
2.安裝
tar -xzf kafka_2.11-0.10.0.1.tgz
cp kafka_2.11-0.10.0.1.tgz /home/cms/kafka
3.配置環(huán)境變量
即path、classpath,意義不大,可不配置
4.修改配置文件kafka/config/server.properties
5.在kafka的目錄下,建立kafka存儲數(shù)據(jù)的目錄
mkdir kafkalogs
6.其他節(jié)點配置
將kafka文件復(fù)制到其他節(jié)點
broker.id=1 #整個集群內(nèi)唯一id號,整數(shù),一般從0開始
listeners=PLAINTEXT://192.168.31.132:9092 #協(xié)議、當(dāng)前broker機(jī)器ip、端口
port=9092 #broker端口
host.name=192.168.31.132 #broker 機(jī)器ip
7.每個節(jié)點下啟動zookerper
8.啟動kafka進(jìn)程,在每個節(jié)點的kafka/bin目錄下
--zookeeper : zookeeper集群列表,用英文逗號分隔??梢圆挥弥付▃ookeeper整個集群內(nèi)的節(jié)點列表,只指定某個或某幾個zookeeper節(jié)點列表也是你可以的
replication-factor : 復(fù)制數(shù)目,提供failover機(jī)制;1代表只在一個broker上有數(shù)據(jù)記錄,一般值都大于1,代表一份數(shù)據(jù)會自動同步到其他的多個broker,防止某個broker宕機(jī)后數(shù)據(jù)丟失。
partitions : 一個topic可以被切分成多個partitions,一個消費者可以消費多個partitions,但一個partitions只能被一個消費者消費,所以增加partitions可以增加消費者的吞吐量。kafka只保證一個partitions內(nèi)的消息是有序的,多個一個partitions之間的數(shù)據(jù)是無序的。
9.啟動生產(chǎn)者和消費者
生產(chǎn)者:kafka-console-producer.sh --broker-list 192.168.31.131:9092 --topic test5
--broker-list : 值可以為broker集群中的一個或多個節(jié)點
消費者:
kafka-console-consumer.sh --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181 --topic test5 --from-beginning
--zookeeper : 值可以為zookeeper集群中的一個或多個節(jié)點
--from-beginning 表示從開始第一個消息開始接收
10.查看topic
kafka-topics.sh --list --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181
11.查看topic詳情
kafka-topics.sh --describe --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181 --topic test5
狀態(tài)說明:test有三個分區(qū)分別為1、2、3,分區(qū)0的leader是3(broker.id),分區(qū)0有三個副本,并且狀態(tài)都為lsr(ln-sync,表示可以參加選舉成為leader)。
12.創(chuàng)建分區(qū)為3、備份為3的topic
bin/kafka-topics.sh --create --zookeeper 192.168.31.131:2181,192.168.31.132:2182,192.168.31.133:2183 --replication-factor 3 --partitions 3 --topic test5
13.刪除topic
在config/server.properties中加入delete.topic.enable=true并重啟服務(wù),在執(zhí)行如下命令
kafka-topics.sh --delete --zookeeper 192.168.31.131:2181,192.168.31.132:2181,192.168.31.133:2181 --topic test5
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。