zoukankan      html  css  js  c++  java
  • kafka分布式虚拟机群部署配置方法

    配置jdk8

    假设安装(解压)路径:jdk1.8.0

    修改/etc/profile,增加以下设置并保存

    Export JAVA_HOME=jdk1.8.0

    Export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

    Export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

    命令行中执行source /etc/profile

    Zookeeper centos7 虚拟机群部署

    假设目录结构为

    /opt/zookeeper/ #zookeeper存放目录

    /opt/zkdata#快照日志的存储路径

    /opt/zklog#事物日志的存储路径

    1.1 在每台机器上修改配置文件

    1进入/opt/zookeeper/conf建立配置文件并修改

    cp zoo_sample.cfg zoo.cfg

    vim zoo.cfg

    修改内容如下:

    tickTime=2000

    #这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

    initLimit=10

    #这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10

    syncLimit=5

    #这个配置项标识 Leader Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10

    dataDir=/opt/zkdata

    #快照日志的存储路径

    dataLogDir=/opt/zklog

    #事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多

    clientPort=12181

    #这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点

    server.1=192.168.7.100:12888:13888

    server.2=192.168.7.101:12888:13888

    server.3=192.168.7.107:12888:13888

    #server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里

    #192.168.7.107为集群里的IP地址,第一个端口是masterslave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888

    2在每台机器创建myid文件

    #server1

    echo "1" > /opt/zookeeper/zkdata/myid

    #Echo “ ”中的整数要与zoo.cfg文件中server. 后面的数字相同

    3启动zookeeper

    /opt/zookeeper/bin/zkServer.sh start

    4查看服务状态

    /opt/zookeeper/bin/zkServer.sh status

    正常应显示如下信息:

    JMX enabled by default

    Using config: /opt/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg  #配置文件

    Mode: follower  #是否为领导

    1.2 Zookeeper常见启动错误排查

    排查方法:启动时打开日志./zkServer.sh start-foreground并观察

    常见原因及解决方法:

    1zookeeper配置错误

    检查各项配置即可,例如路径、端口号等

    2检查是否存在myid文件,内容是否正确

    3出现no route to host

    关闭防火墙即可:systemctl stop firewalld.service

    systemctl disable firewalld.service

    4bindException

    查看端口占用

    Lsof -i:12181#zoo.cfg中的clientPort

    若有其他程序占用则考虑终止该进程

    Kill -9 PID

    常用命令:

    Uname -a 查看位数

    Cat /etc/os-release 查看系统版本

    Kafka分布式部署

    下载kafka二进制包并解压,假设解压路径:kafka

    注意:zookeeper-serverkafka-server的启动需root用户权限

    1修改kafka配置

         vim kafka/config/server.properties

         修改内容如下:

    broker.id=1 # 每台服务器的broker.id都不能相同

    #hostname

    host.name=192.168.7.100

    #log.retention.hours=168 下面新增下面三项

    message.max.byte=5242880

    default.replication.factor=2

    replica.fetch.max.bytes=5242880

    #设置zookeeper的连接端口

    zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:12181

    2在每台机器上启动kafka

         Kafka/bin/kafka-server-start.sh kafka/config/server.properties

         利用Jps检查kafka服务是否启动

    3创建、发布、订阅消息

    a创建Topic

    kafka/bin/kafka-topics.sh --create --zookeeper  IP:12181 --replication-factor 2 --partitions 1 --topic testtopic

    b创建一个发布者

    kafka/bin/kafka-console-producer.sh  --broker-list  IP:9092  --topic testtopic

    c创建一个订阅者

    bin/kafka-console-consumer.sh  --bootstrap-server IP:9092  --from-beginning  --topic testtopic

    Centos 虚拟集群网络配置

    (1首先查看网卡设备是否为eth0,若不是转至步骤2,否则转至步骤4

    ifconfig -a

    (2修改网卡配置

    vim /etc/sysconfig/grub

    找到GRUB_CMDLINE_LINUX”,增加net.ifnames=0 biosdevname=0并保存

    3执行grub2-mkconfig -o /boot/grub2/grub.cfg

    4更改/etc/sysconfig/network-scripts/目录下的ifcfg-eno16777736ifcfg-eth0,并修改里面   

         内容。如下:

    1. DEVICE=eth0  
    2. BOOTPROTO=static
    3. IPADDR=192.168.17.100  
    4. NETMASK=255.255.255.0  
    5. HWADDR=00:0C:29:9C:48:B4 
    6. IPV6INIT=no 
    7. NM_CONTROLLED=yes  
    8. ONBOOT=yes 
    9. TYPE=Ethernet  
    10. UUID=35d96ab0-4a6a-4cca-b6c9-fbe24003a44d 
    11. DNS1=192.168.17.2  
    12. GATEWAY=192.168.17.2  

      其中地址在VM的“虚拟网络编辑器”中查看或修改,并设置虚拟机的网络设置,如下图

     

     

    (5)重启,ifconfig查看是否成功。

    6)在每台机器上完成以上步骤

    7)Ping 其他机器IP,若ping成功则集群网络配置成功

  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/candl/p/7157917.html
Copyright © 2011-2022 走看看