linux環(huán)境kafka安裝及配置方式
下載資源
1、linux環(huán)境安裝kafka,需要預先準備相關資源,我使用的是kafka_2.12-2.5.1版本,下載路徑為:http://archive.apache.org/dist/kafka/2.5.1/kafka_2.12-2.5.1.tgz,也可以通過命令wget http://archive.apache.org/dist/kafka/2.5.1/kafka_2.12-2.5.1.tgz進行資源獲?。?/p>
2、獲取并安裝zookeeper:(以apache-zookeeper-3.6.1-bin.tar.gz為例),官網(wǎng):https://zookeeper.apache.org/。
3、將下載好的kafka及zookeeper壓縮包上傳到虛擬機服務器,放置到/usr/local/目錄中:
安裝zookeeper
1、解壓apache-zookeeper-3.6.1-bin.tar.gz壓縮包,并重命名
#進入到壓縮包存放路徑 cd /usr/local/ #解壓 tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz #重命名 mv apache-zookeeper-3.6.1-bin zookeeper-3.6.1
2、配置啟動
#進入配置目錄 cd zookeeper-3.6.1/conf/ #復制配置文件,不直接修改源文件用于備份使用 cp zoo_sample.cfg zoo.cfg #編輯zoo.cfg文件 vi zoo.cfg
修改zoo.cfg中的內容為,主要修改dataDir路徑以及端口號:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper-3.6.1/data/ # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 ## Metrics Providers # # https://prometheus.io Metrics Exporter #metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider #metricsProvider.httpPort=7000 #metricsProvider.exportJvmInfo=true
3、啟動zookeeper
sh /usr/local/zookeeper-3.6.1/bin/zkServer.sh start
4、查看zookeeper狀態(tài)
sh /usr/local/zookeeper-3.6.1/bin/zkServer.sh status
另:停止zookeeper:
sh /usr/local/zookeeper-3.6.1/bin/zkServer.sh stop
以上為單體zookeeper安裝及啟動過程,以下為zookeeper集群的搭建方式:
與單體的搭建方式類似,只需要重復類似單體的部署模式,集群最少使用3臺,以下大概介紹相應的部署方式:
1、首先將解壓好的文件夾復制并重命名
#創(chuàng)建集群目錄 mkdir zookeeper-cluster #將解壓好的zookeeper目錄復制到集群目錄中 cp -r zookeeper-3.6.1 zookeeper-cluster/ #進入集群目錄中 cd zookeeper-cluster/ #重命名復制過來的目錄為節(jié)點1目錄,同理復制出節(jié)點2和節(jié)點3的目錄 mv zookeeper-3.6.1 zookeeper-1 cp -r zookeeper-1 ./zookeeper-2 cp -r zookeeper-1 ./zookeeper-3
以下為復制完成后的目錄結構:
2、分別配置相關的配置文件,注意節(jié)點名稱及dataDir路徑不要沖突
vi zookeeper-1/conf/zoo.cfg vi zookeeper-2/conf/zoo.cfg vi zookeeper-3/conf/zoo.cfg
3、分別創(chuàng)建myid文件到data目錄中
echo "1" > zookeeper-1/data/myid echo "2" > zookeeper-2/data/myid echo "3" > zookeeper-3/data/myid
修改每個節(jié)點中的dataDir,clientPort的值,并增加節(jié)點之間的關聯(lián)屬性,以下是節(jié)點1的示例,其他節(jié)點以此類推:
配置完成后分別啟動三個節(jié)點:
/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start /usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start /usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start
集群啟動成功
連接測試,zkCli.sh腳本可以連接集群測試是否啟動成功:
如果(kerberos服務已經安裝并配置完成)開啟Kerberos認證需要進行以下操作(以單體zookeeper為例):
1、生成keytab文件:
#登錄kerberos的命令行界面 kadmin.local #生成隨機密碼 addprinc -randkey zookeeper/hadoop.test.com@TEST.COM #生成keytab文件 ktadd -k /etc/security/keytabs/zookeeper.keytab zookeeper/hadoop.test.com@TEST.COM #退出命令行 exit #查看生成的keytab文件的用戶 klist -ket /etc/security/keytabs/zookeeper.keytab
以下是執(zhí)行過程示例:
2、生成jaas文件:
vi /usr/local/zookeeper-3.6.1/conf/jaas.conf
jaas.conf文件內容,注意keyTab屬性位置及principal用戶名配置正確
Server{ com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/etc/security/keytabs/zookeeper.keytab" principal="zookeeper/hadoop.test.com@TEST.COM" useTicketCache=false; }; Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/zookeeper.keytab" storeKey=true useTicketCache=false principal="zookeeper/hadoop.test.com@TEST.COM"; };
3、修改配置文件zoo.cfg添加配置,在結尾加入以下配置:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000
4、添加java.env文件,并寫入相關的內容,注意-Djava.security.auth.login.config為生成的jaas.conf文件的路徑:
echo 'export JVMFLAGS=" -Dsun.security.krb5.debug=true -Djava.security.auth.login.config=/usr/local/zookeeper-3.6.1/conf/jaas.conf"' > /usr/local/zookeeper-3.6.1/conf/java.env
5、啟動驗證,啟動成功,并連接成功
kafka安裝及配置
kafka安裝(單體)
1、解壓安裝包
#進入壓縮包存放路徑 cd /usr/local/ #解壓壓縮包 tar -zxvf kafka_2.12-2.5.1.tgz #進入解壓后目錄中 cd kafka_2.12-2.5.1
2、修改配置
#修改服務配置文件 vi /usr/local/kafka_2.12-2.5.1/config/server.properties
配置中的內容需要配置:
listeners=PLAINTEXT://192.168.4.130:9092 zookeeper.connect=192.168.4.130:2181
配置完成后(前提:zookeeper已正常啟動),即可啟動
服務端啟動命令(不加-daemon前臺啟動,關閉即停止服務,加了-daemon后臺啟動):
#啟動命令 /usr/local/kafka_2.12-2.5.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.12-2.5.1/config/server.properties #停止命令 /usr/local/kafka_2.12-2.5.1/bin/zookeeper-server-stop.sh
查看服務日志命令:
tail -f /usr/local/kafka_2.12-2.5.1/logs/server.log
以上是kafka單體的配置及啟動方式。
kafka集群配置方式
本次主要記錄同一臺服務器上搭建集群,類似于單體的搭建方式,我們只需要配置每個節(jié)點的配置文件,然后分別啟動即可,如果是分不同的服務器搭建,類似于每臺服務器上搭建單體,然后在配置文件中增加相應集群相關的配置項即可使用了,以下默認已經將壓縮包解壓好后的操作。
1、復制server.properties文件并重命名,復制出3(集群最好大于等于三個節(jié)點)份來
#復制配置文件 cp /usr/local/kafka_2.12-2.5.1/config/server.properties /usr/local/kafka_2.12-2.5.1/config/server-1.properties cp /usr/local/kafka_2.12-2.5.1/config/server.properties /usr/local/kafka_2.12-2.5.1/config/server-2.properties cp /usr/local/kafka_2.12-2.5.1/config/server.properties /usr/local/kafka_2.12-2.5.1/config/server-3.properties #編輯配置文件 vi /usr/local/kafka_2.12-2.5.1/config/server-1.properties vi /usr/local/kafka_2.12-2.5.1/config/server-2.properties vi /usr/local/kafka_2.12-2.5.1/config/server-3.properties
之后分別配置復制出來的server-1.properties,server-2.properties,server-3.properties三個配置文件,分別配置以下配置
#節(jié)點id,不同的節(jié)點用不同的數(shù)字表示 broker.id=1 #對外的ip及端口,端口號每個文件不要用同一個,我使用的分別是9091,9092,9093 listeners=PLAINTEXT://192.168.4.130:9091 #數(shù)據(jù)存放位置,每個節(jié)點一個如/kafka-logs-1,/kafka-logs-2,/kafka-logs-3等,不同節(jié)點使用文件不可重復,如果重復了容易啟動失敗 log.dirs=/usr/local/kafka_2.12-2.5.1/data/cluster/kafka-logs-1 #填zookeeper的地址,多個用,隔開 zookeeper.connect=192.168.4.130:2181
分別配置好之后可以使用啟動命令分別啟動相關節(jié)點
#啟動節(jié)點1 /usr/local/kafka_2.12-2.5.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.12-2.5.1/config/server-1.properties #啟動節(jié)點2 /usr/local/kafka_2.12-2.5.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.12-2.5.1/config/server-2.properties #啟動節(jié)點3 /usr/local/kafka_2.12-2.5.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.12-2.5.1/config/server-3.properties #查看服務日志 tail -f /usr/local/kafka_2.12-2.5.1/logs/server.log
啟動成功日志:
注:有時存在kafka啟動失敗報zookeeper連接超時拒絕連接時,可能引起的原因是防火墻沒有關閉,關閉防火墻的命令,也有可能是/etc/hosts文件配置不對引起的,遇到該問題可以多向考慮。
#方式一 #停止防火墻 service firewalld stop #禁用防火墻 systemctl disable firewalld #方式二: chkconfig iptables off
另:如果之前啟動過zookeeper或者kafka,但是數(shù)據(jù)目錄沒有清除過的話也會影響我們的啟動,一定要仔細核對好。
kafka開啟kerberos認證
如果我們搭建的kafka(單體或集群)需要開啟kerberos認證,可以在安裝的時候這樣配置:
1、生成keytab文件:
#登錄kerberos的命令行界面 kadmin.local #生成隨機密碼 addprinc -randkey kafka/hadoop.test.com@TEST.COM #生成keytab文件 ktadd -k /etc/security/keytabs/kafka.keytab kafka/hadoop.test.com@TEST.COM #退出命令行 exit #查看生成的keytab文件的用戶 klist -ket /etc/security/keytabs/kafka.keytab
以下是生成過程示例:
2、生成jaas文件:
vi /usr/local/kafka_2.12-2.5.1/config/jaas.conf
jaas.conf文件內容,注意keyTab屬性位置及principal用戶名配置正確
KafkaServer{ com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true serviceName="kafka" keyTab="/etc/security/keytabs/kafka.keytab" principal="kafka/hadoop.test.com@TEST.COM"; }; KafkaClient{ com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true serviceName="kafka" keyTab="/etc/security/keytabs/kafka.keytab" principal="kafka/hadoop.test.com@TEST.COM" userTicketCache=true; }; Client{ com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true serviceName="kafka" keyTab="/etc/security/keytabs/kafka.keytab" principal="kafka/hadoop.test.com@TEST.COM" userTicketCache=true; };
3、修改kafka的配置文件,如果是單體僅需要修改一個,如果是集群,則需要修改每個節(jié)點對應的配置文件:
vi /usr/local/kafka_2.12-2.5.1/config/server.properties
配置文件中添加(配置)以下的屬性(非kerberos配置時需要的配置默認需要配置好)
listeners=SASL_PLAINTEXT://172.168.4.130:9093 advertised.listeners=SASL_PLAINTEXT://172.168.4.130:9093 authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=GSSAPI sasl.enabled.mechanisms=GSSAPI sasl.kerberos.service.name=kafka kafka.security.protocol=SASL_PLAINTEXT super.users=User:kafka
4、修改kafka服務啟動腳本,配置相關的jaas文件路徑
vi /usr/local/kafka_2.12-2.5.1/bin/kafka-server-start.sh
添加以下的內容:
export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/usr/local/kafka_2.12-2.5.1/config/jaas.conf"
添加示例:
注意:如果kafka連接時,生產者或消費者連接開啟kerberos認證的kafka服務器時,需要在相應的腳本中也同樣添加該配置
#生產者連接腳本配置 vi /usr/local/kafka_2.12-2.5.1/bin/kafka-console-producer.sh #消費者連接腳本配置 vi /usr/local/kafka_2.12-2.5.1/bin/kafka-console-consumer.sh #topic連接腳本配置 vi /usr/local/kafka_2.12-2.5.1/bin/kafka-topics.sh
同時消費者或生產者的配置文件中需要增加以下配置:
security.protocol=SASL_PLAINTEXT sasl.mechanism=GSSAPI sasl.kerberos.service.name=kafka
添加示例(以生產者為例):
啟動kafka服務,連接并使用,參考普通kafka啟動及連接相關命令。
kafka自帶zookeeper使用
注:kafka安裝包中也自帶了zookeeper,如果不想安裝zookeeper,可以使用kafka安裝包中自帶的zookeeper。
如果使用kafka安裝包中帶的zookeeper,需要配置解壓后目錄中的zookeeper.properties
vi /usr/local/kafka_2.12-2.5.1/config/zookeeper.properties
如果不需要修改端口可以默認不修改,使用命令啟動自帶zookeeper:
#啟動zookeeper /usr/local/kafka_2.12-2.5.1/bin/zookeeper-server-start.sh -daemon /usr/local/kafka_2.12-2.5.1/config/zookeeper.properties #停止zookeeper /usr/local/kafka_2.12-2.5.1/bin/zookeeper-server-stop.sh
如果zookeeper需要開啟kerberos認證需要給zookeeper.properties添加配置:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000
在啟動腳本zookeeper-server-start.sh中添加如下配置,注意jaas.conf文件的路徑,jaas文件生成方式同上。
export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/usr/local/zookeeper-3.6.1/conf/jaas.conf"
啟動命令如上。
kafka常用命令
#創(chuàng)建主題 /usr/local/kafka_2.12-2.5.1/bin/kafka-topics.sh --create --zookeeper 192.168.4.130:2181 --replication-factor 1 --partitions 3 --topic test01 #查看主題列表 /usr/local/kafka_2.12-2.5.1/bin/kafka-topics.sh --list --zookeeper 192.168.4.130:2181/kafka #生產者連接并生產數(shù)據(jù) /usr/local/kafka_2.12-2.5.1/bin/kafka-console-producer.sh --broker-list 192.168.4.130:9092 --topic test01 --producer.config /usr/local/kafka_2.12-2.5.1/config/producer.properties #消費者連接并消費數(shù)據(jù) /usr/local/kafka_2.12-2.5.1/bin/kafka-console-consumer.sh --bootstrap-server 192.168.4.130:9092 --topic test01 --from-beginning --consumer.config /usr/local/kafka_2.12-2.5.1/config/consumer.properties #kafka添加消息寫入partition時間戳的方法 #Kafka消息的時間戳,在消息中增加了一個時間戳字段和時間戳類型。目前支持的時間戳類型有兩種: CreateTime 和 LogAppendTime 前者表示producer創(chuàng)建這條消息的時間;后者表示broker接收到這條消息的時間(嚴格來說,是leader broker將這條消息寫入到log的時間) /usr/local/kafka_2.12-2.5.1/bin/kafka-topics.sh --alter --topic test01 --zookeeper 192.168.4.130:2181 --config message.timestamp.type=LogAppendTime /usr/local/kafka_2.12-2.5.1/bin/kafka-console-consumer.sh --bootstrap-server 192.168.4.130:9092 --topic test01 --from-beginning --consumer.config /usr/local/kafka_2.12-2.5.1/config/consumer.properties --property print.timestamp=true #刪除主題內的消息:kafka-delete-records --bootstrap-server <broker-host:port> --offset-json-file offsets.json #–bootstrap-server:需要連接的 brokers 地址; #–offset-json-file:包含刪除配置的 Json 文件。 /usr/local/kafka_2.12-2.5.1/bin/kafka-delete-records.sh --bootstrap-server 192.168.4.130:9092 --offset-json-file /usr/local/kafka_2.12-2.5.1/remove.json #刪除附加:移除kerberos開啟的server中的數(shù)據(jù),同樣需要在相關配置文件中配置kerberos相關的配置,以及腳本中增加相關的配置 /usr/local/kafka_2.12-2.5.1/bin/kafka-delete-records.sh --bootstrap-server 192.168.4.130:9092 --command-config /usr/local/kafka_2.12-2.5.1/config/delete-kerb.properties --offset-json-file /usr/local/kafka_2.12-2.5.1/remove.json
關于移除數(shù)據(jù)的remove.json配置文件內容:
{ "partitions": [ {"topic": "test01", "partition": 0, "offset": -1} ], "version":1 }
- topic:待刪除數(shù)據(jù)主題
- partition:待刪除的分區(qū)
- offset:刪除起始偏移量,設置為 -1,表示將刪除主題中所有數(shù)據(jù)。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
本地Windows遠程桌面連接阿里云Ubuntu 16.04服務器的操作方法
這篇文章主要介紹了本地Windows遠程桌面連接阿里云Ubuntu 16.04服務器的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02Apache mod_rewrite實現(xiàn)HTTP和HTTPS重定向跳轉
這篇文章主要介紹了Apache mod_rewrite實現(xiàn)HTTP和HTTPS重定向跳轉,本文分別給出了HTTP重定向HTTPS和HTTPS重定向HTTP配置參考,需要的朋友可以參考下2015-06-06