NoSQL之Redis叢集搭建——6臺伺服器,三臺主伺服器,三臺從伺服器
Redis叢集搭建
一、單節點Redis伺服器帶來的問題
- 單點故障
- 無法處理大量資料併發資料請求
- 資料丟失一大堆
解決方法:
所以我們需要搭建Redis叢集
二、Redis叢集介紹
- Redis叢集是一個提供在多個Redis間節點間共享資料的程式集
- Redis叢集並不支援處理多個keys的命令,因為這需要在不同的節點間移動資料,從而達不到像Redis那樣的效能,在高負載的情況下可能會導致不可預料的錯誤。
- Redis叢集通過分割槽來提供一定程度的可用性,在實際環境中當某個節點當機或者不可達的情況下可繼續處理命令
2.1、Redis叢集的優勢
- 自動分割資料到不同的節點上
- 整個叢集的部分節點失敗或者不可達的情況下能夠繼續處理命令
2.2、Redis叢集的實現方法
- 有客戶端分片
- 代理分片
- 伺服器端分片
2.3、Redis-Cluster資料分片
-
Redis叢集沒有使用一致性hash,而是引入了 雜湊槽概念
-
Redis叢集有16384個雜湊槽
-
每個key通過CRC16校驗後對16384取模來決定放置槽
-
叢集的每個節點負責一部分雜湊槽
-
以3個節點組成的叢集為例
1)節點A包含0到5500號雜湊槽
2)節點B包含5501到11000號雜湊槽
3)節點C包含11001到16384號雜湊槽 -
支援新增或者刪除節點
1)新增刪除節點無需停止服務
2)例如
A)如果想新新增個節點D,需要移動節點A,B,C中的部分槽到D上
B)如果想移除節點A,需要將A中的槽移到B和C節點上,再將沒有任何槽的A節點從叢集中移除
2.4、Redis-Cluster的主從複製模型
- 叢集中具有A,B,C三個節點,如果節點B失敗了,整個叢集就會缺失5501-11000這個範圍的槽而不可用
- 為每個節點新增一個從節點A1,B1,C1,整個叢集便有三個master節點和三個salve節點組成,在節點B失敗後,叢集便會選舉B1為新的主節點繼續服務
- 當B和B1都失敗後,叢集將不可用
三、Reids叢集實驗
CentOS 7 | master1 | 20.0.0.11 |
---|---|---|
CentOS 7 | master2 | 20.0.0.12 |
CentOS 7 | master3 | 20.0.0.21 |
CentOS 7 | slave1 | 20.0.0.22 |
CentOS 7 | slave2 | 20.0.0.31 |
CentOS 7 | slave3 | 20.0.0.32 |
- 部署環境
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostnamectl set-hostname master1
[root@master1 ~]# yum install gcc gcc-c++ y
然後我們分別在六臺虛擬機器都要安裝Redis
- 這裡對6臺Redis做配置檔案的操作
[root@master1 utils]# vim /etc/redis/6379.conf
70/ # bind 127.0.0.1 #bind 選項預設監聽所有網路卡
89/ protected-mode no #關閉保護模式
93/ port 6379
137/ daemonize yes #以獨立程式啟動
833/ cluster-enabled yes #開啟群集功能
841/ cluster-config-file nodes-6379.conf #群集名稱檔案設定(841,841 s/# //g)
847/ cluster-node-timeout 15000 #群集超時時間設定
700/ appendonly yes #開啟aof持久化
## 然後6臺虛擬機器分別重啟Redis
[root@master1 utils]# /etc/init.d/redis_6379 restart
正常啟動後,/var/lib/redis/6379/目錄下會多出兩個檔案,
一個是持久化appendonly.aof檔案,另外一個是節點首次啟動生成的 nodes-6379.conf 配置檔案。
- 現在是在三臺Master做的操作
匯入key檔案
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
上傳rvm,並安裝rvm
tar zvxf rvm-master.tar\(1\).gz
./install
執行環境變數
source /etc/profile.d/rvm.sh
安裝Ruby可安裝的版本
rvm list known
安裝Ruby2.4.1版本
rvm install 2.4.1
使用Ruby2.4.1版本
rvm use 2.4.1
檢視當前Ruby2.4.1版本
ruby -v
再次安裝Redis
gem install redis
- 建立叢集
redis-cli --cluster create 20.0.0.11:6379 20.0.0.12:6379 20.0.0.21:6379 20.0.0.22:6379 20.0.0.31:6379 20.0.0.32:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 20.0.0.31:6379 to 20.0.0.11:6379
Adding replica 20.0.0.32:6379 to 20.0.0.12:6379
Adding replica 20.0.0.22:6379 to 20.0.0.21:6379
相關文章
- 使用三臺雲伺服器搭建真正的Redis叢集伺服器Redis
- 三臺伺服器使用docker搭建redis一主二從三哨兵,概念-搭建-整合springboot伺服器DockerRedisSpring Boot
- Redis叢集搭建 三主三從Redis
- Redis叢集搭建(三主三從)Redis
- LNMP 分散式叢集(三):MySQL主從資料庫伺服器的搭建LNMP分散式MySql資料庫伺服器
- 單臺伺服器使用 docker 學習 redis 主從複製伺服器DockerRedis
- Kettle叢集部署(1臺Windows主機和2臺Linux伺服器)WindowsLinux伺服器
- 國內 Linux 伺服器叢集管理的平臺Linux伺服器
- 如何搭建一臺伺服器?伺服器
- Docker部署系列之Docker Compose安裝Redis三主三從叢集DockerRedis
- Redis主從同步叢集搭建Redis主從同步
- 基於Dokcer搭建Redis叢集(主從叢集)Redis
- Redis三種高可用模式:主從、哨兵、叢集Redis模式
- rocketMq之叢集搭建(三)MQ
- Redis搭建主從複製、哨兵叢集Redis
- 多伺服器使用Docker設定一主一從三哨兵redis(完整)伺服器DockerRedis
- k8s1.20版本部署Redis叢集(三主三從)K8SRedis
- rsync 從一臺伺服器遠端拉取另一臺伺服器資料的實踐伺服器
- 三維模擬智慧伺服器 —— 資訊保安監控平臺伺服器
- SSM搭建專案,從前端到後臺(三)SSM前端
- 從零搭建自己的SpringBoot後臺框架(三)Spring Boot框架
- linux系統——Redis叢集搭建(主從+哨兵模式)LinuxRedis模式
- Squid搭建CDN,加速整臺伺服器所有網站UI伺服器網站
- 【知識分享】伺服器叢集和伺服器叢集技術伺服器
- 重啟資料庫叢集伺服器( 主庫伺服器/備庫伺服器 )步驟資料庫伺服器
- 大資料平臺Hadoop叢集搭建大資料Hadoop
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- Tony 老師搭建 MySQL 主從伺服器MySql伺服器
- 基於docker環境下搭建redis主從叢集DockerRedis
- redis主從叢集搭建及容災部署(哨兵sentinel)Redis
- 在centos三臺機器上部署oceanbase叢集步驟CentOS
- Redis三種叢集模式Redis模式
- 一文掌握Redis主從複製、哨兵、Cluster三種叢集模式Redis模式
- 實踐 - 搭建Redis一主兩從三哨兵Redis
- 專案實戰-物聯網平臺搭建-mqtt伺服器搭建(一)MQQT伺服器
- 深入剖析Redis系列(三) - Redis叢集模式搭建與原理詳解Redis模式
- Redis高可用-主從,哨兵,叢集Redis
- redis原理及叢集主從配置Redis