由于配置网络步骤过于繁复,此篇文章不再赘述,有需要请移步另一篇文章~
虚拟机linux系统与本机网络互通
rpm -qa|grep jdk
如果已经安装openjdk,需要先卸载,再安装jdk,卸载命令如下
yum -y remove
下载地址:https://www.oracle.com/java/technologies/downloads/#java8
新建java目录
cd /usr/local
mkdir java
上传部分由于我是用终端软件上传,并没有用VM操作,所以没有什么参考价值,大家看自己习惯来就好啦~
tar -zxvf jdk-8u351-linux-i586.tar.gz
sudo vi /etc/profile
在文件下面增加以下内容,其中JAVA_HOME的路径需要替换成自己的路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_351
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
修改之后需要执行以下命令让配置生效
source /etc/profile
java -version
如果失败,出现报错:
-bash: bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
则可以运行以下命令,问题就可以消除
sudo yum install glibc.i686
下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/
注意:一定要注意后缀,千万不要下载错了,处处是坑!!!
新建zookeeper目录
cd /usr/local
mkdir zookeeper
上传过程同上节
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
step1:更改文件夹名称(更好的区分三个服务器,不改也行,只是看着不舒服)
mv apache-zookeeper-3.5.5-bin zk1
step2:新建data和logs,用于存放数据和日志
cd /usr/local/zookeeper/zk1
mkdir data logs
step3:更改zoo_sample.cfg文件名称
cd /usr/local/zookeeper/zk1/conf
mv zoo_sample.cfg zoo.cfg
step4:修改zoo.cfg文件
vi zoo.cfg
修改以下内容:
①
dataDir=/usr/local/zookeeper/zk1/data
dataLogDir=/usr/local/zookeeper/zk1/logs #如果这一行没有就在dataDir下面新增
②
clientPort=2181 #这是客户端的请求端口号,需要记住
在文件下面添加以下内容
server.1=192.168.227.11:2881:3881
server.2=192.168.227.12:2882:3882
server.3=192.168.227.13:2883:3883
注意:添加的ip分别为三台虚拟机的ip,后面的端口也是防火墙需要打开的端口,不然无法彻底实现集群内部的网络互通
具体如何开放端口,请看Linux常用语句->防火墙部分
所涉及到的端口:
computer1:2181/2881/3881
computer2:2183/2882/3882
computer3:2183/2883/3883
检测是否防火墙已成功开启端口
telnet 192.168.227.12 3882
step5:将修改好的zoo.cfg文件复制到computer2和computer3中,需要对应修改的部分如下
zk1 -> zk2 zk3
2181 -> 2182 2183
step6:data 目录下创建一个 myid 文件,内容为1
cd /usr/local/zookeeper/zk1/data
echo 1 > myid
computer1和computer2也相同操作
cd /usr/local/zookeeper/zk1/bin
./zkServer.sh start
cd /usr/local/zookeeper/zk2/bin
./zkServer.sh start
cd /usr/local/zookeeper/zk3/bin
./zkServer.sh start
cd /usr/local/zookeeper/zk1/bin
./zkServer.sh status
cd /usr/local/zookeeper/zk2/bin
./zkServer.sh status
cd /usr/local/zookeeper/zk3/bin
./zkServer.sh status
ps:这里我出现了一个错误:
解决思路:
需要telnet ip 端口,看是否通,首先确认本机和虚拟机之间能telnet通,然后确认虚拟机和虚拟机之间能telnet通,然后执行“./zkServer.sh restart”,即可解决
下载网址:https://kafka.apache.org/downloads
新建kafka目录
cd /usr/local
mkdir kafka
tar -zxvf kafka_2.12-3.3.1.tgz
mv kafka-3.3.1-src kafka
cd /usr/local/kafka/kafka
mkdir logs
vi /usr/local/kafka/kafka/config/server.properties
修改如下配置
①
broker.id=0 #集群里需要用不用的id号
②
listeners=PLAINTEXT://192.168.227.12:9092
③
log.dirs=/usr/local/kafka/kafka/logs
④
zookeeper.connection=192.168.227.11:2181,192.168.227.12:2182,192.168.227.13:2183
⑤
delete.topic.enable=true
cd /usr/local/kafka/kafka/bin
./kafka-server-start.sh ../config/server.properties
cd /usr/local/kafka/kafka/bin
./kafka-topics.sh --create --bootstrap-server 192.168.227.11:9091 --replication-factor 1 --partitions 1 --topic topic1
参数说明:
①192.168.227.11:9091 服务器ip:端口号
②–replication-factor 1 分区副本数为1
③–partitions 分区数为1
④–topic topic1 topic名称为topic1
在创建topic时指定的副本数不能大于可用的集群结点数
注:kafka3.0以后建立topic的时候不需要依赖zookeeper,所以不能用–zookeeper来建立topic,会报错
./kafka-topics.sh --bootstrap-server 192.168.227.11:9091 --list
./kafka-topics.sh --bootstrap-server 192.168.227.11:9091 --topic topic1 --describe
参数说明:
①第一行:topic的名字、分区数、每个分区的副本数
②第二行:分区信息表示。topic:名称topic1;Partition:0号分区;Replicas:分区的副本在broker.id为0的机器上, Leader:分区的leader在broker.id=0的实例上,Isr:投票选举的时候用的,哪个分区副本的数据和leader数据越接近,这个分区所在的broker.id就越靠前,当leader挂掉时,就取Isr中最靠前的一个broker来顶替leader
进入192.168.227.11服务器,建立topic生产几条消息
cd /usr/local/kafka/kafka/bin
./kafka-console-producer.sh --broker-list 192.168.227.11:9091 --topic topic1
进入192.168.227.22服务器,开启消费者控制台,监听topic1的消息
cd /usr/local/kafka/kafka/bin
./kafka-console-consumer.sh --bootstrap-server 192.168.227.11:9091 --topic topic1 --from-beginning
cd /usr/local/kafka/kafka/bin
./kafka-topics.sh --bootstrap-server 192.168.227.11:9091 --delete --topic topic1