Linux 集群搭建


轉載@https://www.cnblogs.com/cmxbky1314/p/11748426.html

 

 

1

.為了我們方便的搭建集群,我們需要建立一個目錄,里面放着六台服務器(一個集群至少六台服務器)。如下:

                                 

 

   我們自己建立了一個叫  redis-cluster  的目錄(圖中藍色框),在這個目錄中又建立了六個子目錄,用來存放Redis服務器。

  2.然后cd到我們原有的redis服務目錄下,進行集群的配置修改

  ① cluster-enabled yes  開啟集群的支持

  ② cluster-config-file nodes.conf 記錄每個節點的信息,保存到文件nodes.conf文件中

  ③ bind 0.0.0.0 開放ip訪問權限

      

           

  3.然后在我們已經搭建好的Redis服務目錄下,將已經設置好的 redis.conf 分別復制到我們建立好的六個目錄下。如下:

          

       注:redis_conf 是我的redis服務的守護進程啟動配置目錄,里面放着啟動進程的redis.conf配置文件,后面的我們上面的建立的目錄的相對路徑。

  4.在復制好六個服務器之后,再去修改每個服務的配置文件中的端口號 ,這里我們分配了8001 --8006 端口 分別給這個六個服務器。如下,

    

     注:然后依次去修改其余的五個,保證服務的端口各不相同即可。

  5. 接着,以各自的配置啟動redis服務

1 redis-server 8001/redis.conf
2 redis-server 8002/redis.conf
3 redis-server 8003/redis.conf
4 redis-server 8004/redis.conf
5 redis-server 8005/redis.conf
6 redis-server 8006/redis.conf

  開啟后的效果圖,如下

  

   6.創建Redis集群

    語法:

      redis-cli --cluster create 192.168.142.131:9001 192.168.142.131:9002 192.168.142.131:9003 192.168.142.131:9004 192.168.142.131:9005 192.168.142.131:9006  --cluster-replicas 1

    解釋: redis 客戶端  集群  創建  。。。上面創建六個redis服務器的端口。。。 集群 一比一主從配置

  然后我們輸入  yes   ,Redis 就會創建好集群,結果如下。

  

   7.集群說明

         --cluster-replicas 1 表示主從復制比例為 1:1,即一個主節點對應一個從節點;然后,默認給我們分配好了每個主節點和對應從節點服務器,以及 slot 的大小,

    因為在 Redis 集群中有且僅有 16384 個 slot ,默認情況會給我們平均分配,當然你可以指定,后續的增減節點也可以重新分配。

 

    查看集群信息:192.168.134.124:7003> cluster info(查看集群信息)或cluster nodes(查看節點列表)

  集群搭建完畢,6個節點,3主,3從,只有主節點才擁有槽,並對外提供讀寫數據服務。注意至少有3個主節點才可以搭建集群,為每個主至少分配1個從,所以至少需要6個redis節點才可以形成集群。

  8.槽

  - redis cluster 默認分配了 16384 個slot,所有的主redis服務器,大概均分所有的槽
  - 存/取值時 ,redis會根據key,計算一個介於 0 – 16383之間的數字,此數字即為當前數據的槽位置,通過槽位置,決定哪個redis主服務器來負責本次訪問

 

  Redis 集群會把數據存在一個master節點,然后在這個master和其對應的slave之間進行數據同步。當讀取數據時,也根據一致性哈希算法到對應的master節點獲取數據。

  只有當一個master 掛掉之后,才會啟動一個對應的slave節點,充當master。

  需要注意的是:必須要3個或以上的主節點,否則在創建集群時會失敗,並且當存活的主節點數小於總節點數的一半時,整個集群就無法提供服務了。

  9.集群的特性或者優點

   集群搭建后:

  - 性能的進一步提升,可以在單位時間內,吞吐更多的請求
  - 數據的存儲節點,具有高可用性(集群有好的容錯機制)
  集群容錯:

  - 所有槽可以被覆蓋時,則集群正常運行
  - 如果16384個槽,不能被所有主機完整覆蓋了,則集群宕機

四、集群中節點的操作

  1.刪除從節點

         

    測試效果如下:

  2.添加從節點

  redis-cli --cluster add-node 192.168.134.124:7000 192.168.134.124:7001 --cluster-slave --cluster-master-id 4032891b648e76b2975e5bc701e9c8a52ad6f3dd

  # 注意:加新節點之前 要清楚新節點中數據
  # add-node: 后面的分別跟着新加入的slave和集群中任意一個節點
  # cluster-slave:表示加入的是slave節點
  # --cluster-master-id:表示slave對應的master的node ID

  

 3.刪除主節點

  需要先進行重新分片:

  redis-cli --cluster reshard 192.168.142.131:9001   #后面的ip和端口 起到定位的作用

  回車執行該語句

  ①系統會提出問題  要分出多少個槽  5461 

  ②系統接着提出問題 將這些槽 分給誰   回答   一個主服務器的id

  ③系統再問 從哪里獲得這些槽  回答 一個主服務器的id

  ④接着執行done  和yes  開始重新分片

 4.添加主節點

 redis-cli --cluster add-node 192.168.134.124:7000 192.168.134.124:7006

              #新增加的主節點    #一個已存在的節點 定位集群的作用

將7006添加到7001所在集群中,成為一個主節點,但此時它不持有任何槽,需要重新分片

具體操作圖 如下,

 之后輸入done 即可執行分槽。

開始后,確認,系統問你要執行嗎

輸入yes

 然后會執行一段時間的遷移過程


免責聲明!

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



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