redis單機集羣、zk單機集羣、kafka集羣,搭建

 

下載相關tar.gz包: http://archive.cloudera.com/cdh5/cdh/5/


========redis 安裝 和集羣搭建=========

1)tar -zxvf redis-3.0.0-rc2.tar.gz    //將壓縮包解壓
2)yum install gcc        //安裝gcc插件,gcc是一個c語言的編譯工具
3)cd redis-3.0.0 進入redis目錄
  make         //運行make命令,編譯redis
4)cd redis-3.0.0/src目錄,裏面會有redis-cli等很多文件
   make install        //打印It is good idea to run 'make test'  ,則安裝成功

5)//修改配置文件redis.conf後臺啓動,修改6個redis配置文件
        deamonize yes  //yes爲後臺啓動
        port 8001        //分別對每臺機器端口進行設置
        bind 192.168.0.60   //必須要綁定當前機器的ip,這裏方便redis集羣定位機器,不綁定可能會出現循環查找集羣節點機器的情況
        dir /usr/local/redis-cluster/8001/  //指定數據文件存放位置,必須要指定不同的目錄位置,不然誰丟失數據
        cluster-enabled yes   //啓動集羣模式
        cluster-config-file nodes-8001.conf   //這裏800x最好和port對應上
        cluster-node-timeout 5000
        appendonly yes
啓動6個redis
6)redis集羣需要ruby命令,所以我們需要安裝ruby
    a)yum install ruby
    b)yum install rubygems
    c)gem install redis --version 3.0.0  //安裝redis和ruby的通訊接口
7)在redis3安裝目錄下 執行redis-trib.rb命令創建整個redis集羣
   cd /usr/local/redis3/src
   //下面命令中 1 代表主服務器和從服務器的 分配比例,主/從,1 代表3個主3個從(如果有9臺機器 1主2從,配置值爲0.5)。前面3臺是主,後面3臺是從
   ./redis-trib.rb create --replicas 1 192.168.0.60:8001 192.168.0.60:8002 192.168.0.60:8003 192.168.0.60:8004 192.168.0.60:8005 192.168.0.60:8006 
8)驗證集羣
   連接任意一個客戶端即可: ./redis-cli -c -h -p(-c表示集羣模式,指定ip地址和端口號)
      如:/usr/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800x
   進行驗證:cluster info (查看集羣信息) 、cluster nodes(查看節點列表)
   進行數據操作驗證
   關閉集羣則需要逐個進行關閉,使用命令: /usr/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800x shutdown
   
========redis 安裝 和集羣搭建 end=========

========redis 集羣 水平擴展=========
添加兩個redis服務8007和8008:    
1)mkdir 8007    //新建8007目錄
mkdir 8008    
2)cp redis.conf  /usr/local/redis-cluster/8007    //複製任意一個配置文件到8007目錄//配置文件需要修改三個地方 將端口改成8007
cp redis.conf  /usr/local/redis-cluster/8008
3)redis-server /usr/local/redis-cluster/8007/redis.conf    //啓動redis
redis-server /usr/local/redis-cluster/8008/redis.conf    
4)ps -ef|grep redis        //查看redis進程
5)redis-cli -c -h 192.168.0.61 -p 8001    //連接任意一臺集羣內的redis實例//-c clustr的簡稱 -h ip  -p端口
   cluster nodes    //查看集羣的狀態 有哪幾個節點,上一行執行完再執行此命令
6)cd redis-cluster/    //進入到此目錄 執行下面一行命令
/usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.0.61:8007 192.168.0.61:8001    //使用trib添加主節點,將8007添加到集羣,8001可以是集羣中任意一臺機器 //此時8007已經加入到集羣 但是沒有hash槽位。
  使用命令5)查看集羣狀態。
7)./redis-trib.rb reshard 192.168.0.61:8001    //選擇主節點8001對其進行重新分片(分配hash槽)
        How many slots do you want to move(from 1 to 16384)? 600    //需要多少個槽移動到新節點上,自己設置,如600個hash槽
        What is the receiving node ID? qweqweqw123wer123dsf   //把這600個hash槽移動到哪個節點上去,需要制定節點id
        Please enter all the source node IDs
    ...
        Source node 1:all        //輸入all爲從所有主節點(8001,8002,8003)中分別抽取相應的槽數制定到新節點中,抽取總數爲600個
        Do you want to proceed with the proposed reshard plan(yes/no)? yes  //輸入yes確認開始執行分片任務
//以後爲添加主節點,下面來添加子節點 將8008添加爲8007的從節點
1)cd redis-cluster/    //進入到此目錄 執行下面一行命令
/usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.0.61:8008 192.168.0.61:8004 //將8008添加到集羣//8004必須爲主節點 //此時8008爲主節點 下面修改成8007的從節點
2)redis-cli -c -h 192.168.0.61 -p 8008    //連接到8008
        clustor nodes    //查看集羣狀態
        cluster replicate lsdfsd12312erwer1212    //將8008節點設置爲從節點,後面是主節點8007的id
        clustor nodes    //查看集羣狀態//此時8008已經爲8007的從節點
添加8007主節點,添加8008從節點 完成。
    
//刪除從節點8008,
redis-trib.rb del-node 192.168.0.61:8008 qwqwe123qweqw123    //用del-node刪除從節點8008,//指定刪除節點ip、8008端口、8008節點的id
//刪除主節點8007
redis-trib.rb reshard 192.168.0.61:8007        //將節點中的槽位移除
    How many ...? 599        //移除的槽位數,這裏不會是正好600個槽
    What is the receiving node ID? qweqwesdf123sdfsd12    //把數據移動到哪裏?8001的主節點id
    Please enter all the source node IDs
    ...
    Source node 1:wersdfsda123ssdfd        //這裏是數據源,也就是8007節點id,將8007的數據移除
    Source node 2:done    //done開始生產執行計劃
    ... ....
    Do you want to proceed with the proposed reshard plan(yes/no)? Yes    //yes 開始執行遷移
redis-trib.rb del-node 192.168.0.61:8007 qwd11fgqwe23w123sdsd22    //刪除主節點8007,後面是8007的id
刪除完成。
集羣中的數據是分散存儲到每個主節點中。
高可用配置,使用哨兵
        
========redis 集羣 水平擴展 end=========
=========kafka 集羣============================
kafka 搭建 https://ke.qq.com/webcourse/index.html#cid=308769&term_id=100366014&taid=2184948648031777&vid=z1427gwkoou
生產者、消費者(組)、zookeeper、broker(服務,一臺主機最好一個broker,不要設置多個)、主題--分區--副本因子

1)tar -zxcf kafka_2.11-0.10.0.1.tgz     //解壓包

2)vi /etc/profile    //環境變量文件,添加kafka目錄,每個主機都要添加
    添加    export KAFKA_HOME=/keduox/kafka_2.11-0.10.0.1
            export PATH=$PATH:$KAFKA_HOME/bin
    source /etc/profile  //刷新文件
3)vi kafka_2.11-0.10.0.1/config/server.properties 
    broker.id=0        //每個kafka配置不同的id,master id一般設置爲0
    log.dirs=/data/kafka-logs
    zookeeper.connect=master,slave01,slave02  //自己的zk集羣地址 //可以設置多臺 用','分割
4)同步到其他節點:
  scp -rq /usr/local/kafka_2.11-0.10.2.1/ hadoop101:/usr/local   //將kafka_2.11-0.10.2.1目錄複製到 主機hadoop101的local目錄下
5)zkServer.sh start  //啓動zk
6)啓動所有kafka,一臺一臺啓動
    bin/kafka-server-start.sh -daemon config/server.properties
7)創建集羣:kafka-topics.sh --create --zookeeper master,slave01,slave02  --topic mytopic --partitions 3 --replication-factor 3  //啓動kafka partitions(分區)3個,replication-factor(副本)3個
        kafka-topics.sh --describe --zookeeper master,slave01,slave02 --toopic mytopic //查看kafka集羣運行情況,裏面的'1,2,0'是brokerId


jps顯示當前所有java進程pid的命令
   
   
在zk中查看kafka存儲數據的目錄:
   ls /brokers/topics/obd-data-0/partitions/0/state        //提供者數據
   ls /consumers/console-consumer-6693/offsets/drivedata-to-hbase-topic01/0  //消費者數據
zk中控制鎖,zk有個叫臨時順序節點 來控制共享鎖、排它鎖,避免死鎖。
zk中節點類型:持久節點、持久有序節點、臨時節點、臨時有序節點
      臨時節點:當客戶端斷開連接的時候,節點刪除,不允許有子節點

===zk單機搭建 https://study.163.com/course/courseLearn.htm?courseId=1003379006#/learn/video?lessonId=1003856244&courseId=1003379006
1)tar -zxf zookeeper-3.4.6.tar.gz
2)cd zookeeper-3.4.6
3)mkdir data
4)配置環境變量,$>vi /etc/environment
        ZOOKEEPER_HOME=/soft/zk
        PATH="... :/soft/zk/bin"
  source /etc/environment    //栓新環境變量
5)配置文件 
    cp zoo_sample.cfg zoo.cfg    //拷貝一個簡單的配置文件 爲zoo.cfg
conf/zoo.cfg內容如下
    tickTime=2000        //心跳時間
    dataDir=/path/to/zookeeper/data        //數據文件
    clientPort=2181        //端口
    initLimit=5            //初始化限制數
    sysncLimit=2        //同步限制
6)啓動zk服務器 , $>zkServer.sh start
7)啓動客戶端命令行程序, 
    $>zkCli.sh
        ls /    //查看客戶端跟節點中有哪些子節點
        ls /zookeeper
        get /zookeeper/quota    //查尋此節點的值
8)netstat -ano | more        //查看開啓的端口,有2181端口 表示zk啓動成功

=========zk僞分佈式搭建 https://study.163.com/course/courseLearn.htm?courseId=1003379006#/learn/video?lessonId=1003851266&courseId=1003379006
zk集羣配置文件在 zk/conf/目錄下 zoo1.cfg、zoo2.cfg、zoo3.cfg
  zoo1.cfg內容如下:
          tickTime=2000
        initLimit=10
        syncLimit=5
        dataDir=/home/ubuntu/zk/data1        //需要新建此目錄
        clientPort=2181
        server.1=localhost:2887:3887
        server.2=localhost:2888:3888
        server.3=localhost:2889:3889
    zoo2.cfg內容如下:
          tickTime=2000
        initLimit=10
        syncLimit=5
        dataDir=/home/ubuntu/zk/data2
        clientPort=2182
        server.1=localhost:2887:3887
        server.2=localhost:2888:3888
        server.3=localhost:2889:3889
    zoo3.cfg內容如下:
          tickTime=2000
        initLimit=10
        syncLimit=5
        dataDir=/home/ubuntu/zk/data3
        clientPort=2183
        server.1=localhost:2887:3887
        server.2=localhost:2888:3888
        server.3=localhost:2889:3889
    /home/ubuntu/zk/data1目錄下新建myid 內容1  新建命令如: zk/data1$ echo 1 >> myid
    /home/ubuntu/zk/data2目錄下新建myid 內容2
    /home/ubuntu/zk/data3目錄下新建myid 內容3

啓動:zk/bin/zkServer.sh start zoo1.cfg
      zk/bin/zkServer.sh start zoo2.cfg
      zk/bin/zkServer.sh start zoo3.cfg
查看zk運行狀態:zkServer.sh status(單機)  或 zkServer.sh status zoo2.cfg (集羣)
    leader 或 follwer
netstat -ano | more //查看裏面的端口2181、2182、2183是否啓動,代表zk啓動成功。
zk/bin$ ./zkCli.sh  //連接到zk
  connect locahost:2182    //連接2182
  close        //關閉連接
  connect locahost:2181
    ls /    //查看跟元素
    
netstat -plut | more 

=========zk僞分佈式搭建 end==============

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章