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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Redis三主三从集群搭建(三台机器)

發布時間:2023/12/8 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis三主三从集群搭建(三台机器) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

redis三種模式

一、主從模式

????????Redis雖然讀取寫入的速度都特別快,但是也會產生讀壓力特別大的情況。為了分擔讀壓力,Redis支持主從復制,Redis的主從結構可以采用一主多從或者級聯結構。下圖為一主兩從結構。

怎樣實現主從復制?
1.從服務器初始化時進行全量同步
2.初始化完成后執行增量同步
優點:實現數據備份,做到讀寫分離
缺點:當主節點發生故障掉線時,需要人工進行:故障轉移

二、哨兵模式

????????可以說是主從復制的升級版本,增加了一個新的角色。由一個或多個哨兵實例組成的哨兵系統可以監視任意多個主服務器,以及這些主服務器屬下的所有從服務器,并在被監視的主服務器進入下線狀態時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器。


Server1掉線后

之后:

優點: 如果Master 異常,則會進行Master-slave 轉換,自動實現故障轉移。將其中一個Slave作為Master,之前的Master重新上線后作為Slave、

缺點: 如果是從節點下線了,哨兵是不會對其進行故障轉移的,連接從節點的客戶端也無法獲取到新的可用從節點

三、 集群模式

????????任何兩個節點之間都是相互連通的。客戶端可以與0任何一個節點相連接,然后就可以訪問集群中的任何一個節點。對其進行存取和其他操作。一般集群建議搭建三主三從架構,三主提供服務,三從提供備份功能。每一個節點都存有這個集群所有主節點以及從節點的信息

掉線判斷:
????????過程是集群中所有master參與,如果半數以上master節點與某個master節點通信超時(cluster-node-timeout),認為該master節點掛掉.

什么時候整個集群不可用(cluster_state:fail)?
(1)如果集群任意master掛掉,且當前master沒有slave.集群進入fail狀態,
(2)如果集群超過半數以上master掛掉,無論是否有slave,集群進入fail狀態.

優點:
????????有效的解決了redis在分布式方面的需求遇到單機內存。并發和流量瓶頸等問題時,可采用集群方案達到負載均衡的目的。可實現動態擴容。自動故障轉移

缺點: 架構新,實踐較少


今天這里為大家講解的是集群模式(也稱為三主三從模式)
先介紹一下,我們的服務器信息(3臺服務器,cpu,內存、數據盤等不作要求)

192.168.100.21master
192.168.100.22slaves1
192.168.100.22slaves2

一、上傳解壓先在每臺機器上部署單機redis

1、上傳


2、解壓

[root@master servers]# pwd /opt/servers [root@master servers]# tar -zxvf redis-5.0.8.tar.gz -C /opt/servers/


3、安裝redis的相關依賴
這里三臺機器都需要安裝

[root@slaves2 ~]# yum -y install gcc-c++ tcl

4、進入redis編譯

[root@master servers]# cd redis-5.0.8/ [root@master redis-5.0.8]# make && make install


5、修改redis配置文件
創建日志文件
cd /opt/servers/redis-5.0.8/
mkdir -p /opt/servers/redis-5.0.8/logs
mkdir -p /opt/servers/redis-5.0.8/redisdata
編輯
vim redis.conf

#設置ip bind 本機ip #設置讓redis開啟后可以在后臺運行,除非kill -9,如果設置為no,exit后redis就關閉 daemonize yes #保存redis的pid,這是默認路徑,可自行修改 pidfile /var/run/redis_6379.pid #保存日志文件 logfile "/opt/servers/redis-5.0.8/logs/redis.log" #本地數據庫存放路徑 dir /opt/servers/redis-5.0.8/redisdata#密碼設置 #主節點密碼設置 #requirepass 1234abcD 配置集群這里先不要設置密碼

6、啟動

[root@node01 redis-5.0.8]# cd /opt/servers/redis-5.0.8/src/ [root@node01 src]# redis-server ../redis.conf ps -ef | grep redis

二、開始將單機模式變成三主三從集群

1、每臺創建其中兩實例對應的配置文件、日志文件及數據文件的存放目錄

mkdir –p /opt/servers/redis-5.0.8/16379 mkdir –p /opt/servers/redis-5.0.8/16380 mkdir –p /opt/servers/redis-5.0.8/log mkdir –p /opt/servers/redis-5.0.8/redisdata16379 mkdir –p /opt/servers/redis-5.0.8/redisdata16380

2、拷貝配置文件
將redis.conf分別拷貝到16379、16380中

cp /opt/servers/redis-5.0.8/redis.conf /opt/servers/redis-5.0.8/16379

3、修改配置文件
vim /opt/servers/redis-5.0.8/16379/redis.conf

#設置ip bind 本機ip #開啟集群模式 cluster-enabled yes #設置集群模式config文件(是集群自動創建,用于記錄集群節點信息以及持久化參數) cluster-config-file nodes-16379.conf #設置讓redis開啟后可以在后臺運行,除非kill -9,如果設置為no,exit后redis就關閉 daemonize yes #設置端口 port 16379 #保存redis的pid,這是默認路徑,可自行修改 pidfile /var/run/redis_16379.pid #保存日志文件 logfile "/opt/servers/redis-5.0.8/logs/redis-16379.log" #本地數據庫存放路徑 dir /opt/servers/redis-5.0.8/redisdata16379

cp /opt/servers/redis-5.0.8/16379/redis.conf /opt/servers/redis-5.0.8/16380/
vim /opt/servers/redis-5.0.8/1638/redis.conf

#設置集群模式config文件(是集群自動創建,用于記錄集群節點信息以及持久化參數) cluster-config-file nodes-16380.conf #設置端口 port 16380 #保存redis的pid,這是默認路徑,可自行修改 pidfile /var/run/redis_16380id #保存日志文件 logfile "/opt/servers/redis-5.0.8/logs/redis-16380og" #本地數據庫存放路徑 dir /opt/servers/redis-5.0.8/redisdata16380

4、啟動
先在每臺機器上啟動

cd /opt/servers/redis-5.0.8/src/ redis-server ../16379/redis.conf redis-server ../16380/redis.conf

5、查看集群狀態是否正常

[root@master redis-5.0.8]# ps -ef | grep redis root 17676 1 0 21:51 ? 00:00:00 src/redis-server master:16379 [cluster] root 17685 1 0 21:51 ? 00:00:00 src/redis-server master:16380 [cluster] root 17729 9823 0 21:52 pts/0 00:00:00 grep --color=auto redis


這里大家注意一下:
如果使用5.0版本以上的redis創建集群的命令就有所不同了,原因是因為redis5.0使用redis-cli作為創建集群的命令,使用c語言實現,不再使用ruby語言。
6、這里我先為大家直接講一下redis5.0版本的,后面在為大家擴展5.0以下redis版本,創建集群的方式。

[root@master redis-5.0.8]# src/redis-cli --cluster create 192.168.100.21:16379 192.168.100.21:16380 192.168.100.22:16379 192.168.100.22:16380 192.168.100.23:16379 192.168.100.23:16380 --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 192.168.100.22:16380 to 192.168.100.21:16379 Adding replica 192.168.100.23:16380 to 192.168.100.22:16379 Adding replica 192.168.100.21:16380 to 192.168.100.23:16379 M: 2cda3eec9cb484a7d91103e998c3a5e3e6791961 192.168.100.21:16379slots:[0-5460] (5461 slots) master S: 6f3d94bf87d0237f35b638944493a99ecb92d603 192.168.100.21:16380replicates 646a498c7b3406395a62e1df2dc418fc834d257e M: 8057cb6e27f0baeb9306c475e99cbb0272c3c946 192.168.100.22:16379slots:[5461-10922] (5462 slots) master S: 2f77c304a17db87a273892109181250006c8716a 192.168.100.22:16380replicates 2cda3eec9cb484a7d91103e998c3a5e3e6791961 M: 646a498c7b3406395a62e1df2dc418fc834d257e 192.168.100.23:16379slots:[10923-16383] (5461 slots) master S: 88786bdaee76fffd171cd670db9227152d1fb2d2 192.168.100.23:16380replicates 8057cb6e27f0baeb9306c475e99cbb0272c3c946 Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join ......... >>> Performing Cluster Check (using node 192.168.100.21:16379) M: 2cda3eec9cb484a7d91103e998c3a5e3e6791961 192.168.100.21:16379slots:[0-5460] (5461 slots) master1 additional replica(s) S: 2f77c304a17db87a273892109181250006c8716a 192.168.100.22:16380slots: (0 slots) slavereplicates 2cda3eec9cb484a7d91103e998c3a5e3e6791961 S: 88786bdaee76fffd171cd670db9227152d1fb2d2 192.168.100.23:16380slots: (0 slots) slavereplicates 8057cb6e27f0baeb9306c475e99cbb0272c3c946 M: 8057cb6e27f0baeb9306c475e99cbb0272c3c946 192.168.100.22:16379slots:[5461-10922] (5462 slots) master1 additional replica(s) S: 6f3d94bf87d0237f35b638944493a99ecb92d603 192.168.100.21:16380slots: (0 slots) slavereplicates 646a498c7b3406395a62e1df2dc418fc834d257e M: 646a498c7b3406395a62e1df2dc418fc834d257e 192.168.100.23:16379slots:[10923-16383] (5461 slots) master1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.


7、登入,并且設置主從的密碼

[root@master redis-5.0.8]# src/redis-cli -h master -p 16379 -c master:16379> config set masterauth 1234abcD OK master:16379> config set requirepass 1234abcD OKmaster:16379> auth '1234abcD' OK master:16379> CONFIG rewrite OK master:16379> set name 123 -> Redirected to slot [5798] located at 192.168.100.22:16379 OK 192.168.100.22:16379> keys * 1) "name" 192.168.100.22:16379> master:16379> auth '1234abcD' OK #重寫配置 master:16379> CONFIG rewrite OK master:16379> set name 123 -> Redirected to slot [5798] located at 192.168.100.22:16379 OK 192.168.100.22:16379> keys * 1) "name" #查看集群的詳細信息 192.168.100.22:16379> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:3 cluster_stats_messages_ping_sent:1584 cluster_stats_messages_pong_sent:1488 cluster_stats_messages_meet_sent:5 cluster_stats_messages_sent:3077 cluster_stats_messages_ping_received:1487 cluster_stats_messages_pong_received:1589 cluster_stats_messages_meet_received:1 cluster_stats_messages_received:3077 192.168.100.22:16379> #查看主從之間的關系 192.168.100.22:16379> cluster nodes 88786bdaee76fffd171cd670db9227152d1fb2d2 192.168.100.23:16380@26380 slave 8057cb6e27f0baeb9306c475e99cbb0272c3c946 0 1611981803000 6 connected 8057cb6e27f0baeb9306c475e99cbb0272c3c946 192.168.100.22:16379@26379 myself,master - 0 1611981804000 3 connected 5461-10922 2f77c304a17db87a273892109181250006c8716a 192.168.100.22:16380@26380 slave 2cda3eec9cb484a7d91103e998c3a5e3e6791961 0 1611981805000 4 connected 646a498c7b3406395a62e1df2dc418fc834d257e 192.168.100.23:16379@26379 master - 0 1611981805965 5 connected 10923-16383 2cda3eec9cb484a7d91103e998c3a5e3e6791961 192.168.100.21:16379@26379 master - 0 1611981804000 1 connected 0-5460 6f3d94bf87d0237f35b638944493a99ecb92d603 192.168.100.21:16380@26380 slave 646a498c7b3406395a62e1df2dc418fc834d257e 0 1611981805000 5 connected

擴展:

當如果你們使用redis的5.0版本以下的后可能會出現這個錯誤:
(error) CLUSTERDOWN Hash slot not served

1、準備redis-trib.rb的運行環境
相關連接:https://blog.csdn.net/weixin_45697341/article/details/102736907

wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz yum -y install zlib-devel tar xvf ruby-2.5.1.tar.gz cd ruby-2.5.1/ ./configure -prefix=/usr/local/ruby make make install cd /usr/local/ruby/ cp bin/ruby /usr/local/bin cp bin/gem /usr/local/bin

2、安裝redis-trib依賴

wget http://rubygems.org/downloads/redis-3.3.0.gem gem install -l redis-3.3.0.gem

3、構建集群
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006


10、驗證集群
通過客戶端命令連接上,通過集群命令看一下狀態和節點信息等

[root@master src]# ./redis-cli -h 192.168.100.21 -p 16379 -c 192.168.100.21:16379> auth '密碼' OK192.168.100.21:16379> clster info 192.168.100.21:16379> cluster info cluster_state:fail cluster_slots_assigned:0 cluster_slots_ok:0 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:1 cluster_size:0 cluster_current_epoch:0 cluster_my_epoch:0 cluster_stats_messages_sent:0 cluster_stats_messages_received:0

總結

以上是生活随笔為你收集整理的Redis三主三从集群搭建(三台机器)的全部內容,希望文章能夠幫你解決所遇到的問題。

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