Write by lyc at 2020-6-18

一、zookeeper 集群部署

1.拷贝多个zk目录

1
2
3
4
5
6
7
8
# 拷贝多个zk目录
$ ls -ld /usr/local/zoo*
drwxr-xr-x 7 root root 136 Jun 17 18:59 /usr/local/zookeeper1
drwxr-xr-x 7 root root 136 Jun 17 18:59 /usr/local/zookeeper2
drwxr-xr-x 7 root root 136 Jun 17 18:59 /usr/local/zookeeper3

# 创建各zk独立的数据目录
$ mkdir -p /data/zookeeper{1,2,3}/{data,logs}

2.分别配置每个zk

zoo.cfg

zk_IP:leader间通:leader间选举

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# zk1
$ egrep -v "#|^$" /usr/local/zookeeper1/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper1/data
dataLogDir=/data/zookeeper1/logs
clientPort=2181
server.1=10.19.138.40:2888:3888
server.2=10.19.138.40:2889:3889
server.3=10.19.138.40:2890:3890

# zk2
$ egrep -v "#|^$" /usr/local/zookeeper2/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper2/data
dataLogDir=/data/zookeeper2/logs
clientPort=2182
server.1=10.19.138.40:2888:3888
server.2=10.19.138.40:2889:3889
server.3=10.19.138.40:2890:3890

# zk3
$ egrep -v "#|^$" /usr/local/zookeeper3/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper3/data
dataLogDir=/data/zookeeper3/logs
clientPort=2183
server.1=10.19.138.40:2888:3888
server.2=10.19.138.40:2889:3889
server.3=10.19.138.40:2890:3890

myid

1
2
3
$ echo 1 > /data/zookeeper1/data/myid
$ echo 2 > /data/zookeeper2/data/myid
$ echo 3 > /data/zookeeper3/data/myid

3.zk 启动

1
2
3
$ /usr/local/zookeeper1/bin/zkServer.sh start
$ /usr/local/zookeeper2/bin/zkServer.sh start
$ /usr/local/zookeeper3/bin/zkServer.sh start

二、kafka 集群部署

1.拷贝多个kafka目录

1
2
3
4
5
6
7
8
# 拷贝多个kafka目录
$ ls -ld /usr/local/ka*
drwxr-xr-x 7 root root 94 Jun 17 19:05 /usr/local/kafka1
drwxr-xr-x 7 root root 94 Jun 17 19:05 /usr/local/kafka2
drwxr-xr-x 7 root root 94 Jun 17 19:05 /usr/local/kafka3

# 创建各kafka独立的数据目录
mkdir -p /data/kafka{1,2,3}/{data,logs}

2.分别配置每个kafka

server.properties

其他相同的参数省略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# kafka1
$ egrep -v "#|^$" /usr/local/kafka1/config/server.properties
broker.id=1
listeners=PLAINTEXT://10.19.138.40:9092
log.dirs=/data/kafka1/logs
zookeeper.connect=10.19.138.40:2181,10.19.138.40:2182,10.19.138.40:2183

# kafka2
$ egrep -v "#|^$" /usr/local/kafka2/config/server.properties
broker.id=2
listeners=PLAINTEXT://10.19.138.40:9093
log.dirs=/data/kafka2/logs
zookeeper.connect=10.19.138.40:2181,10.19.138.40:2182,10.19.138.40:2183

# kafka3
$ egrep -v "#|^$" /usr/local/kafka3/config/server.properties
broker.id=3
listeners=PLAINTEXT://10.19.138.40:9094
log.dirs=/data/kafka3/logs
zookeeper.connect=10.19.138.40:2181,10.19.138.40:2182,10.19.138.40:2183
````


## 3.kafka 启动

```bash
$ /usr/local/kafka1/bin/kafka-server-start.sh /usr/local/kafka1/config/server.properties &
$ /usr/local/kafka2/bin/kafka-server-start.sh /usr/local/kafka2/config/server.properties &
$ /usr/local/kafka3/bin/kafka-server-start.sh /usr/local/kafka3/config/server.properties &

三、验证

1.创建Topic

1
2
3
4
5
6
./kafka-topics.sh \
--create \
--zookeeper 10.19.138.40:2181,10.19.138.40:2182,10.19.138.40:2183 \
--replication-factor 3 \
--partitions 5 \
--topic TOPIC_NAME

2.查看Topic列表

1
2
$ ./kafka-topics.sh --list \
--zookeeper 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

3.查看具体某个Topic信息

1
2
3
4
5
6
7
8
9
$ ./kafka-topics.sh --describe \
--zookeeper 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 \
--topic hello2
Topic: hello2 PartitionCount: 5 ReplicationFactor: 3 Configs:
Topic: hello2 Partition: 0 Leader: 1 Replicas: 1,3,2 Isr: 1,3,2
Topic: hello2 Partition: 1 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
Topic: hello2 Partition: 2 Leader: 3 Replicas: 3,2,1 Isr: 3,2,1
Topic: hello2 Partition: 3 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
Topic: hello2 Partition: 4 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1

4.测试:生成数据/发布消息

1
2
3
./kafka-console-producer.sh \
--broker-list 10.19.138.40:9092,10.19.138.40:9093,10.19.138.40:9094 \
--topic TOPIC_NAME

5.测试:消费数据/订阅消息

1
2
3
4
./kafka-console-consumer.sh \
--bootstrap-server 10.19.138.40:9092,10.19.138.40:9093,10.19.138.40:9094 \
--topic TOPIC_NAME \
--from-beginning