• Linux配置zookeeper 和zookeeper简单介绍


    一、zookeeper介绍?

    一、zookeeper 简单介绍?
        1.什么是集群?
    //        很多台服务器保持连接通讯状态,并且所有的服务器做同一件事就称之为集群
    
        2.什么是zookeeper?
            注册中心就是zookeeper(eureka,consul)的别名
            zookeeper是apache开源基金会下的一个顶级项目
            zookeeper是一个致力于开发和维护的开源服务器,作用于项目中的协调和控制功能
            
            场景:
                空调坏了,学生就去找班主任说空调坏了,班主任也不会修空调,班主任觉得孟老师会修空调,结果孟老师也不会,孟老师最终给售后打电话,售后假设把空调修好了,最终学生达到了预期效果
                学生就是需求者,售后是服务者,孟老师和班主任就是协调者
            zookeeper从logo来看是动物园管理员,这个动物园中所有的动物都由zookeeper进行管理,管理了动物的衣食住行,zookeeper在最早的时候只适用于Hadoop的生态圈,在Hadoop的生态圈中所有的框架都是动物,zookeeper对他们进行管理,管理框架的健康(心跳),服务器的调用方和服务器的生产方,也就是说最终服务的客户端不再直接向服务的服务器发送数据,首先客户端先找到zookeeper,根据zookeeper的反馈再找服务器端
                hadoop是大象
                hbase是鲸鱼
                pig是猪
                ....
    
            在zookeeper中存放了大量的数据(非常有用),但是这些数据开发人员看不到,并且zookeeper会按照规定的时间对已经向自己注册服务索要心跳,
            根据观察者模式,一旦检测到状态发生变化,最终向zookeeper注册过的观察者(服务器)要应对处理措施!
        /*    
            被观察对象是------------->zookeeper
            观察对象是---------------->服务器
        */
        3.zookeeper的应用场景:
            在之前只适用于大数据,但是随着web项目越来越大,发展越来越快,zookeeper已经完全适用于整个web项目,在web项目中仍然起着协调和控制的作用
            zookeeper是以集群的形式存在,也就是说三台zookeeper做同一件事,
            /*
                在官方文档中说明,zookeeper以奇数台为稳定,并且以中间这一台为leader,也就是说zookeeper至少需要三台(不是一台,一台称之为单节点)
            */
            为什么说以奇数台为稳定??
                zookeeper是以一个leader带领很多个follower完成的集群,并且奇数和选举机制有关

    二、Linux配置 zookeeper?

    二、配置zookeeper?
        
            1. 新建三台虚拟机  五步走
                vim /etc/sysconfig/network
                vim /etc/hosts
                service iptables stop
                chkconfig iptables off
                reboot
                
        
            2.配置jdk
                2.1导入jdkjar包。
                2.2配置java环境变量。
                
            
            
            3.配置免秘钥登录
                生成自己的公钥    四次回车(都不能输入密码)
            /*  
                ssh-keygen -t rsa 
                ssh-keygen -t rsa
                ssh-keygen -t rsa
                ssh-keygen -t rsa
                ssh-keygen -t rsa
            
            */
                把自己的公钥copy其他服务器上  另外两台都需要copy!!!
            /*    
                ssh-copy-id ip地址/hostname
                ssh-copy-id ip
                ssh-copy-id 192.168.11.116
                ssh-copy-id haha 
                
            */    
            配置成功后,ssh 连接访问。
                /**
                    ssh +另一条虚拟机的ip地址/名字
                    ssh haha
                    ssh zookeeper
                    ssh zookeeper 
                    
                    
                */
                
            4解压zookeeper
                tar -zxvf xxxxx
                
                
            5.把conf目录下的
            [zoo-sample.cfg文件改名为zoo.cfg]
            
            修改文件的命令: mv +需要修改的文件名 空格  修改后的文件名。  
            
            /*  mv zoo-sample.cfg zoo.cfg 
                mv zoo-sample.cfg zoo.cfg
                mv zoo-sample.cfg zoo.cfg
                mv zoo-sample.cfg zoo.cfg
                mv zoo-sample.cfg zoo.cfg
                mv zoo-sample.cfg zoo.cfg
            */    
            
            6.修改dataDir参数(不是必须所要修改的,但是要求修改)    指向的文件就是zookeeper每一台节点的唯一标识(id),而且这个唯一标识不能重复!!!!
                
                
                1.在zookeeper目录下中创建文件夹data   获取data的 pwd路径。(pwd )
                /*
                    mkdir data 
                    cd data  
                    pwd  获取路径
                    
                */
                
                2.退出 ,在conf下修改 dataDir 修改为刚才所创建的data目录的绝对路径把dataDir修改为刚才所创建的data目录的绝对路径
                /*
                    vim dataDir
                    把dataDir修改为刚才所创建的data目录的绝对路径    dataDir=/home/apps/zookeeper-3.4.6/data
                */ 
                
                
                
            7.在zoo.cfg文件的末尾添加
            /**
                server.1=zookeeper01:2888:3888
                server.2=zookeeper02:2888:3888
                server.3=zookeeper03:2888:3888
                
            7.1    server.的数据就是每一台zookeeper的唯一标识  
                
            7.2    zookeeper01:HOSTNAME或者可以配置IP地址
                
            7.3    2888:zookeeper集群之间通讯所用的端口号
                
            7.4    3888:zookeeper集群的选举leader端口号
        */        
        
            8.在之前创建data文件夹下创建myid文件
                touch myid
                
            9.写入myid文件
                vim myid     另外两台分别写入  2   和   3      它们是zookeeper的标识。
                1
                
            10.通过scp发送到另外两台服务器上
            语法   scp -r /home/apps/(需要发送的路径) 空格 zookeeper02(目标的ip/hostname):/home/ (需要发送到的目标位置)
                   把zookeeper01 虚拟机上的  /home/apps/ 发送到 zookeeper02 的 :home/ 目录下。
            
            /*
                scp -r /home/apps/ zookeeper02:/home/
                scp -r /home/apps/ zookeeper03:/home/    
                scp -r /home/apps/ zookeeper02:/home/
                
                
                
            */    
                将配java的配置环境也copy过去。
                
                scp -r /etc/profile zookeeper01:/etc/
                scp -r /etc/profile zookeeper01:/etc/
                
                scp -r /etc/proflie     需要的虚拟机的ip:/etc/
                (本机需要copy的地址)                       (需要copy到的虚拟机的地址)
                /*
                    scp -r /etc/proflie zookeeper02:/etc/
                    scp -r /etc/proflie zookeeper03:/etc/
                    scp -r /etc/proflie haha:/etc/
                */
                
            立即生效命令
                source /etc/profile
            尝试了一下  不用也可以。不敢保证。。。    
                
                
            4.10.根据server.的数字分别修改myid文件
                把zookeeper02修改为2
                把zookeeper03修改为3
                
            4.11.启动zookeeper
                在bin目录中启动
            /*    
                ./zkServer.sh start
                ./zkServer.sh start
                ./zkServer.sh start
                ./zkServer.sh start
            */    
                看到以下信息说明启动成功:
                    JMX enabled by default
                    Using config: /home/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
                    Starting zookeeper ... STARTED
                    
                    
            4.12.分别检测三台zookeeper服务器的状态
                在bin目录中
            /*    
                ./zkServer.sh status
                ./zkServer.sh status 
            */    
            
            关闭
            /*
                ./zkServer.sh stop
                ./zkServer.sh stop
                ./zkServer.sh stop
            */    
    
            leader  和 follower  
            老大         小弟
                
        5.zookeeper的选举机制
            5.1    zookeeper采用的是Paxos算法实现的选举机制
            换句话说半数选举机制 谁的server id大  谁就是大哥!!!
            
            半数选举  leader产生 该节点高32位会发生改变。
            
            
            
            5.2zid 事物的id一共有64位, 分别高32 位  和 低32 位。    
            当leader宕机。所有服务器的zid 会自增。
            自增的低32位 根据某个规则进行增加 高32位不变。
            
            zid 的低32为越小,被选举的可能性就越大,被操作的可能性就越大
            
            /*
            zxid (低32 +高32位 合并) 
                越大被操作的可能就越大。
                
            
            */
            
  • 相关阅读:
    作诗(si)[分块]
    【洛谷 P3469】[POI2008]BLO-Blockade(割点)
    【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
    【BZOJ 3907】网格(Catalan数)
    【洛谷 P4211】[LNOI2014]LCA(树链剖分,差分)
    【洛谷 P2480】 [SDOI2010]古代猪文(中国剩余定理,Lucas定理)
    【洛谷 P3842】[TJOI2007]线段(DP)
    【洛谷 P2346】四子连棋(状态压缩,搜索)
    【洛谷 P1363】幻想迷宫(搜索)
    【洛谷 P1364】医院设置(树的重心)
  • 原文地址:https://www.cnblogs.com/ZXF6/p/11456167.html
Copyright © 2020-2023  润新知