日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis集群架构搭建详解

發布時間:2025/4/16 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis集群架构搭建详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

這其實是一種分布式數據庫,就是通過分片的機制儲存數據,cluster中的每個節點僅僅儲存數據哭的一部分數據,本質上就是實現數據庫分片。

這種集群是一種去中心化的集群,也就是說,集群中的每個節點都可以是接入節點。

這里我簡單說一下這種去中心化的實現方式,比如有4個節點,要儲存1000個key,那么就可能將這1000個key平均分配在這4個節點上,另外每個節點上除了儲存key還儲存了一個列表,這個列表詳細記錄了每個key具體在哪個節點上,這樣用戶訪問任意一個節點都會知道數據在哪,也就知道接下來去訪
問哪個節點了。

大多數去中心化的結構,都是這樣的原理,也就是每個節點上都有一個完整的元數據,但只有一部分數據。

為什么要使用Redis集群呢?比如現在需要在redis中存100G數據,我們知道redis工作的時候所有的數據都是儲存在內存中的,因此這100G數據都需要存在內存中,一個很明顯的問題就是儲存空間不足,而進行數據分片,也就是將數據存放在不同的節點上就能很好的解決這個問題。

比如有詩歌節點,這樣就可以將這100G的數據存放在這10個節點上,這樣一來每個節點只需要存放10G的數據,雖然解決了儲存問題,但是會帶來另外一個問題,也就是安全問題,因為儲存數據的節點越多,發送故障的概率也就越高,只要一個節點出現故障那么全部數據就丟失了,所以為了安全可以給每個節點做一個主從,這樣就解決了數據安全問題。這就是集群的作用。

這里簡單介紹一下redis集群實現數據共享的方法
Redis集群是通過數據分片的方式,一個redis集群包含16384個哈希槽,在這個redis集群中每個鍵都會儲存在一個哈希槽中,假如redis集群中有三個節點,那么這第三個節點的哈希槽分布如下

  • 節點A負責處理0號至5500號哈希槽
  • 節點B負責處理5501至11000號哈希槽
  • 節點C負責處理11001號至16384號哈希槽

當需要在redis集群中儲存數據的時候,會先進行一次計算,找出一個哈希槽編號,然后將這個數據存過去。

二、實現redis集群(基于redis4.0)

redis從3.0版本開始支持集群。
集群一般由多個節點組成,節點數量至少6個才能保證組成完整高可用集群。
規劃:
我這里使用三臺主機,每個主機上開啟兩個示例,兩個示例做成主從,這樣就有了六個節點。

節點名稱實例1端口實例2端口
節點1(171)1637916380
節點2(172)2637926380
節點3(173)3637936380

第一步:在三個節點上安裝Redis4.0

下載地址:https://redis.io/download

  • 安裝依賴
  • # 在三個節點都執行 # yum install gcc gcc-c++ zlib zlib-devel -y
  • 安裝redis4.0.11
  • # tar xvf redis-4.0.11.tar.gz # cd redis-4.0.11 # make && make install 說明:安裝過程主要是在src目錄下生成二進制程序
  • 配置redis(演示配置171的實例1)
  • [root@171 ~]# mkdir -pv /redis/{16379,16380} [root@171 ~]# cd /root/redis-4.0.11 [root@171 redis-4.0.11]# cp redis.conf /redis/16379/redis-16379.conf # 修改配置文件 [root@171 redis-4.0.11]# vim /redis/16379/redis-16379.conf bind 10.220.5.171 port 16379 daemonize yes pidfile /var/run/redis_16379.pid dir /redis/16379/ cluster-enabled yes cluster-config-file nodes-16379.conf cluster-node-timeout 15000 # 修改/redis目錄的屬主屬組 [root@171 redis-4.0.11]# useradd -r redis [root@171 redis-4.0.11]# chown redis.redis /redis/ -R

    171的實例2配置只需將實例1配置中的16379全部改為16380即可,不再演示。其他節點配置同理也不再演示。

  • 三個節點都啟動redis cluster 服務
  • # 節點1(171) # cd /root/redis-4.0.11 # src/redis-server /redis/16379/redis-16379.conf # src/redis-server /redis/16380/redis-16380.conf

    其他節點類似不再詳細演示。

    第二步:redis-trib.rb環境準備

    該文件存在于/redis/src目錄中,只需要在一臺主機上執行此步驟,redis-trib.rb是采用Ruby實現Redis集群管理工具,可以幫助我們簡化集群創建,檢查,槽遷移和均衡等常見操作,使用之前需要安裝Ruby依賴環境。

  • 配置ruby環境
    下載地址: http://www.ruby-lang.org/en/downloads/
  • [root@173 ~]# tar xvf ruby-2.3.5.tar.gz [root@173 ruby-2.3.5]# cd ruby-2.3.5 [root@173 ruby-2.3.5]# ./configure --prefix=/usr/local/ruby [root@173 ruby-2.3.5]# make && make install [root@173 ruby-2.3.5]# ln -sv /usr/local/ruby/bin/ruby /bin/ ‘/bin/ruby’ -> ‘/usr/local/ruby/bin/ruby’ [root@173 ruby-2.3.5]# ln -sv /usr/local/ruby/bin/gem /bin/ ‘/bin/gem’ -> ‘/usr/local/ruby/bin/gem’ [root@173 ruby-2.3.5]# ruby -v ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]
  • 安裝redis cluster的依賴包
  • [root@173 ~]# gem install -l redis-3.3.0.gem Successfully installed redis-3.3.0 Parsing documentation for redis-3.3.0 Installing ri documentation for redis-3.3.0 Done installing documentation for redis after 0 seconds 1 gem installed
  • 創建集群
  • [root@173 ~]# redis-4.0.11/src/redis-trib.rb create --replicas 1 \ > 10.220.5.171:16379 10.220.5.172:26379 10.220.5.173:36379 \ > 10.220.5.171:16380 10.220.5.172:26380 10.220.5.173:36380 說明:選項 --replicas 1 表示為集群中的所有主節點創建一個從節點# 最后的輸出報告說明:16384個槽全部被分配完,集群創建成功。 這里需要注意的是給redis-trib.rb的節點地址必須是不包含任何槽/數據的節點,否則會拒絕創建集群。
  • 檢查集群的完整性
    集群完整性是指所有的槽都被分配到存貨的主節點上,只要16384個槽中有任意一個沒有被分配給節點就表示集群是并不完整的。
    可以用redis-trib.rb check 命令chance之前創建的集群是否成功,check命令只需要給出集合中的任何一個節點地址就可以
  • [root@173 ~]# redis-4.0.11/src/redis-trib.rb check 10.220.5.172:26379
  • 登錄集群,并在節點上寫入數據
    登錄集群的時候必須使用選項 -c
  • [root@173 ~]# redis-cli -c -h 10.220.5.171 -p 16379 10.220.5.171:16379> set name cx -> Redirected to slot [5798] located at 10.220.5.172:26379 OK 10.220.5.172:26379> set age 20 -> Redirected to slot [741] located at 10.220.5.171:16379 OK 10.220.5.171:16379> set addr tianjin -> Redirected to slot [12790] located at 10.220.5.173:36379 OK

    細心地你肯定注意到了上面寫入數據時節點是在變化的,第一個key保存在了5798槽中這個槽在172節點上,寫入第二個key的時候存到了741號槽中這個槽在171節點上,同時前面的提示符也在變化,而在其他節點上登錄會發現也可以獲取到這些數據,到這里redis集群就搭建完成了。

    ------做運維之前很矯情的小年輕-----

    總結

    以上是生活随笔為你收集整理的Redis集群架构搭建详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。