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位 合並) 
            越大被操作的可能就越大。
            
        
        */
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM