ubuntu系统安装OpenJDK8

添加ppa仓库

1
2
3
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

设置Openjdk版本

1
sudo update-alternatives --config java

查看java版本

1
java -version

Zookeeper集群的配置

解压安装包并重命名

1
2
3
tar -zxvf zookeeper-3.4.14.tar.gz

mv zookeeper-3.4.14/ zookeeper

修改配置文件 zoo.cfg

1
2
3
cd zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/root/software/zookeeper/data
server.1=Node1.IP:2888:3888
server.2=Node2.IP:2888:3888
server.3=Node3.IP:2888:3888

dataDir用于配置zookeeper快照日志和事务日志的存储地址,

server.每个节点服务编号 = 服务器ip地址:集群通信端口:选举端口

创建data目录和myid文件

在zookeeper目录下执行如下命令

1
2
3
mkdir data
cd data
echo "1" > myid

分发zookeeper

1
2
scp -r zookeeper/ slave1:root/software/
scp -r zookeeper/ slave2:root/software/

分发后记得在各节点修改data中对应的myid编号

启动zookeeper服务

1
2
3
4
5
6
7
查看各个服务状态:bin/zkServer.sh status

重启zookeeper服务:bin/zkServer.sh restart

关闭zookeeper服务:bin/zkServer.sh stop

启动zookeeper服务:bin/zkServer.sh start

kafka集群的配置

解压安装包并重命名

1
2
tar -zxvf kafka_2.11-0.11.0.2.tgz
mv kafka_2.11-0.11.0.2 kafka

修改配置文件

1
2
cd kafka/config
vim sever.properties
broker.id=0

listeners=PLAINTEXT://10.206.0.5:9092

advertised.listeners=PLAINTEXT://175.27.162.157:9092

log.dirs=/root/software/kafka/data

zookeeper.connect=175.27.162.157:2181,1.13.163.169:2181,129.211.209.60:2181

broker.id:每个节点配置一个编号,保证唯一
listeners:内网访问的IP + 端口号
advertised.listeners :远程访问kafka服务的IP + 端口号
log.dirs:日志和文件存放路径
zookeeper.connect:zookeeper集群的地址

启动kafka时报如下错误

kafka.common.KafkaException: Socket server failed to bind to xx:9092: Cannot assign requested address

解决

该情况下的虚拟机对外ip[暴露的ip]和真实ip[ifconfig显示的ip]可能只是映射关系,用户访问对外ip时,OpenStack会转发到对应的真实ip实现访问。但此时如果 Kafkaserver.properties配置中的listeners=PLAINTEXT://10.20.1.153:9092中的ip配置为[对外ip]的时候无法启动,因为socket无法绑定监听,所以会报如上错误
解决方法也很简单,listeners=PLAINTEXT://10.20.1.153:9092中的ip改为真实ip[ifconfig中显示的ip]即可,其他使用时正常使用对外ip即可,跟真实ip就没有关系了。

分发kafka文件

1
2
3
scp -r kafka/ slave1:~/software/

scp -r kafka/ slave1:~/software/

分发后记得修改配置文件中broker.idlistenersadvertised.listeners对应值

启动kafka

进入kafka目录

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