redisyum安裝配置redis主從

1.安裝

yum install epel-release.noarch -y
yum install redis -y

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供孟連網(wǎng)站建設(shè)、孟連做網(wǎng)站、孟連網(wǎng)站設(shè)計、孟連網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、孟連企業(yè)網(wǎng)站模板建站服務(wù),10余年孟連做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

2.配置主從

主:
vim /etc/redis.conf #修改配置文件
bind 10.1.1.111 #修改監(jiān)聽IP
requirepass 233233 #添加密碼
masterauth 233233
#為什么要添加認(rèn)證密碼,假如主掛了,再次上線。此時主就變成從了,它需要認(rèn)證其它服務(wù)器,其它服務(wù)器有密碼會無法通過認(rèn)證,所以預(yù)先設(shè)置好。

slave-priority 50 #增大選舉權(quán),保證主的掛了,再次線切換時候有足夠權(quán)限拿到master

從:
vim /etc/redis.conf #修改配置文件
bind 10.1.1.112 #修改監(jiān)聽IP
requirepass 233233
#從 也要設(shè)置和主一樣密碼,假如主掛了,112提升為主,113認(rèn)證的還是111的密碼,這樣112和113兩臺機(jī)器就無法連接。

slaveof 10.1.1.111 6379 #指定主的ip和端口
masterauth 233233 # 指定主的密碼
另一臺從也這個配置


systemctl start redis  #同時啟動三臺主機(jī)
redis-cli -h 10.1.1.111 -a 233233 #登陸主服務(wù)器
10.1.1.111:6379> INFO replication  #查看主從信息
#Replication
role:master
connected_slaves:2
slave0:ip=10.1.1.112,port=6379,state=online,offset=1135,lag=0
slave1:ip=10.1.1.113,port=6379,state=online,offset=1135,lag=1
master_repl_offset:1135
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1134
10.1.1.111:6379> 

在主服務(wù)器創(chuàng)建一個鍵值

11.10.1.1.111:6379> set ID 001
OK
10.1.1.111:6379> get ID
"001"
10.1.1.111:6379> 

切換到從服務(wù)器查看

[root@cs112 ~]# redis-cli  -h 10.1.1.112 -a 233233  #登陸112服務(wù)器
10.1.1.112:6379> get ID   #查看ID鍵值
"001"
10.1.1.112:6379> 

命令配置主從 (命令配置會自動同步到配置文件)
[root@web1 ~]# redis-cli -h 10.1.1.233

10.1.1.233:6379> slaveof 10.1.1.111 6379
OK  
10.1.1.233:6379> config set masterauth 233233 
OK
10.1.1.233:6379> 

登陸到主服務(wù)器查看主從

10.1.1.111:6379> INFO replication
# Replication
role:master
connected_slaves:3
slave0:ip=10.1.1.112,port=6379,state=online,offset=2602,lag=1
slave1:ip=10.1.1.113,port=6379,state=online,offset=2602,lag=1
slave2:ip=10.1.1.233,port=6379,state=online,offset=2602,lag=1
master_repl_offset:2602
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:2

#可以看到,這邊從服務(wù)器已經(jīng)有三個了,

redis主從復(fù)制相關(guān)配置

下面是redis主從復(fù)制場景的一些可調(diào)參數(shù),需要根據(jù)實際環(huán)境調(diào)整

slave-serve-stale-data yes : 是否可以把不新鮮的數(shù)據(jù)服務(wù)與客戶端
slave-read-only yes : 從節(jié)點只讀,啟用slaveof定義后才生效
repl-diskless-sync no :是否同時向多個從節(jié)點同時發(fā)數(shù)據(jù)
repl-diskless-sync-delay 5 :發(fā)送的延遲時間
repl-ping-slave-period 10 探測從節(jié)點狀態(tài)
repl-timeout 60 探測節(jié)點超時時間
repl-disable-tcp-nodelay no : 啟用nodelay
repl-backlog-size 1mb
slave-priority 100 : 從節(jié)點優(yōu)先級,復(fù)制集群中,主節(jié)點故障時,sentinel應(yīng)用場景中的主節(jié)點選舉時使用的優(yōu)先級;數(shù)字越小優(yōu)先級越高,但0表示不參與選舉;
min-slaves-to-write 3:主節(jié)點僅允許其能夠通信的從節(jié)點數(shù)量大于等于此處的值時接受寫操作;
min-slaves-max-lag 10:從節(jié)點延遲時長超出此處指定的時長時,主節(jié)點會拒絕寫入操作;

3.高可用

先找一臺從服務(wù)器把優(yōu)先級調(diào)高

vim /etc/redis.conf #修改112配置,控制選舉
slave-priority 90   #調(diào)到90,默認(rèn)100,越小權(quán)限越大,0不參與選舉
systemctl restart redis  #重啟一下

找三臺服務(wù)器 配置sentinel服務(wù)

 vim /etc/redis-sentinel.conf
 bind 10.1.1.112  #監(jiān)聽IP,建議不要用0.0.0.0 會出錯
 sentinel monitor mymaster 10.1.1.111 6379 2 #設(shè)置主服務(wù)器ip
 sentinel auth-pass mymaster 233233            #主服務(wù)器的認(rèn)證
 #其他兩臺除了IP不一樣其他 一樣配置

配置好了 啟動sentinel

如何查看sentinel是否已經(jīng)正常運行
vim /etc/redis-sentinel.conf #打開sentinel的配置文件
redis yum安裝配置  redis主從
#查看最后幾行,sentinel正常運行的話,能獲取的到局域網(wǎng)其他redis主機(jī)信息,其他sentinel主機(jī)信息,如圖。

測試
先將主服務(wù)器的redis的服務(wù)給停掉
redis-cli -h 10.1.112 -p 26379 #登陸sentinel服務(wù)

 10.1.1.112:26379>  SENTINEL masters #查看主服務(wù)器狀態(tài)
1)  1) "name"
    2) "mymaster"
    3) "ip"
    4) "10.1.1.113"
    5) "port"
    6) "6379"
    7) "runid"
    8) "7ee5fe0e808bd06638f0f4c365d95c7694c6770c"
    9) "flags"
   10) "master"

上面我們已經(jīng)能看到主的已經(jīng)轉(zhuǎn)移到113主機(jī)了,打開其他從服務(wù)器配置可以發(fā)現(xiàn),配置文件里指向10.1.1.111為主的已經(jīng)被改成了113了。

redis-cli -h 10.1.1.112 -a 233233 #登錄112的從服務(wù)器

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:10.1.1.113
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:1253
slave_priority:70
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

#上面可以看到從 從服務(wù)器112 主已經(jīng)變成了113服務(wù)器了

#總結(jié),主服務(wù)器掛了再次上線的的角色就變成slave了,除非再次觸發(fā)選舉,而且權(quán)限要比其他機(jī)器權(quán)限大。

一個查看sentinel命令
[root@cs11 ~]# redis-cli -h 192.168.0.11 -a 233233 -p 26379 info |tail -1
#登錄到26379端口(這個端口就是默認(rèn)sentinel運行的端口),運行info命令,取最后一行
master0:name=mymaster,status=ok,address=192.168.0.14:6379,slaves=2,sentinels=3
#表示master是192.168.0.14 有2個從,3個哨兵

配置文件解釋

sentinel monitor mymaster 192.168.0.11 6379 2 
#192.168.0.11是master redis的IP地址和端口,2是代表2個sentinel(哨兵)檢測到異常,才判斷是real fail. Mymaster主機(jī)組的名稱可以隨便定義

sentinel auth-pass mymaster 233233
 #當(dāng)redis訪問都需要密碼的時候,即在redis.conf有配置requirepass項的時候,需要定義此項

sentinel down-after-milliseconds mymaster 30000 
#指定sentinel監(jiān)控到redis實例持續(xù)異常多長時間后,會判決其狀態(tài)為down。若實際業(yè)務(wù)需要sentinel盡快判決出redis實例異常,則可適當(dāng)配小,單位是毫秒

sentinel can-failover mymaster yes
 #在sentinel檢測到O_DOWN后,是否對這臺redis啟動failover機(jī)制

 sentinel parallel-syncs mymaster 1 
 #執(zhí)行故障轉(zhuǎn)移時,最多可以有多少個從服務(wù)器同時對新的主服務(wù)器進(jìn)行同步,這個數(shù)字越小,完成故障轉(zhuǎn)移所需的時間就越長,但越大就意味著越多的從服務(wù)器因為復(fù)制而不可用??梢酝ㄟ^將這個值設(shè)為 1 來保證每次只有一個從服務(wù)器處于不能處理命令請求的狀態(tài)。

 failover-timeout mymaster900000 
 #若sentinel在該配置值內(nèi)未能完成failover操作(即故障時master/slave自動切換),則認(rèn)為本次failover失敗

 sentinel notification-script mymaster1  /root/通知.sh
 #當(dāng)sentinel觸發(fā)時,切換主從狀態(tài)時,需要執(zhí)行的腳本。當(dāng)主down的時候可以通知當(dāng)事人

4.集群的搭建

這里我們要用一臺機(jī)器模擬9個主機(jī),每個redis端口不一樣,真實環(huán)境,ip不一樣而已,
mkdir /date/700{1,2,3,4,5,6,7,8,9} -p # 創(chuàng)建9個文件夾存放配置log等
vim redis.conf #先修改一個模板,把配置文件cp一份改成下面的一樣

    port 6379
    bind 127.0.0.1
    daemonize yes 
    #redis后臺運行
    cluster-enabled yes
    #開啟集群
    cluster-config-file nodes_6379.conf
    #集群的配置,配置文件首次啟動自動生成
    cluster-node-timeout 8000
    #請求超時,默認(rèn)15秒,可自行設(shè)置
    appendonly yes
    #開啟aof持久化模式,每次寫操作請求都追加到appendonly.aof文件中
    logfile "/data/6379/redis.log"
    #日志路徑
    pidfile /var/run/redis_6379.pid 
    #pid路徑

#端口還是用6379應(yīng)為這個改的模板,等會后面用sed 批量修改
for((i=1;i<=9;i++));do cp redis.conf /date/700$i/redis.conf ; sed -i "s/6379/700$i/" /date/700$i/redis.conf;done
#批量復(fù)制配置文件到各個文件夾,在修改6379 端口號 。
for((i=1;i<=9;i++));do redis-server /date/700$i/redis.conf;done
#批量啟動

ps -ef |grep redis #查看下服務(wù)有沒有起來
redis yum安裝配置  redis主從

./redis-cli --cluster create 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 127.0.0.1:7007 127.0.0.1:7008 127.0.0.1:7009 --cluster-replicas 1
#創(chuàng)建集群的命令 --replicas 1表示為集群的master節(jié)點創(chuàng)建1個slave。那么9個實例里,有4master,有5是slave。
--replicas 0不為集群的master節(jié)點創(chuàng)建slave。
redis yum安裝配置  redis主從
#如圖,集群被成功創(chuàng)建,1 2 3 4 被設(shè)置了成master ,其他均為slave

./redis-cli -p 7001 -c #登陸到集群里
redis yum安裝配置  redis主從
#上圖,我登陸進(jìn)去了創(chuàng)建一個鍵值 cs1 ,該鍵值以一創(chuàng)建就被分配到7004端口分片上,后面我無論登陸那個端口,只要我get cs1 都會被重定向到7004端口上
redis yum安裝配置  redis主從
#我又創(chuàng)建一個cs2 ,該鍵值被分配到了7001端口,無論那個端口訪問cs2,都會被重定向到7001,就是redis的分片機(jī)制

常見集群命令

redis yum安裝配置  redis主從

127.0.0.1:7004> cluster info #查看集群狀態(tài)信息
redis yum安裝配置  redis主從

新增集群一個主節(jié)點

redis yum安裝配置  redis主從
#按照之前的方法,在復(fù)制兩份配置文件,啟動兩個redis 端口為7010 7011
./redis-cli --cluster add-node 127.0.0.1:7010 127.0.0.1:7001
#新增節(jié)點命令 前面?zhèn)€地址是需要添加的地址,后面那個是任意已經(jīng)在集群的節(jié)點
redis yum安裝配置  redis主從
./redis-cli -c -p 7001 cluster nodes #查看集群節(jié)點
redis yum安裝配置  redis主從
#如圖添加成功,但是新增的節(jié)點不會有任何數(shù)據(jù),因為他沒有分配任何槽需要為新節(jié)點手動分配槽
./redis-cli --cluster reshard 127.0.0.1:7010
redis yum安裝配置  redis主從
./redis-cli -c -p 7001 cluster nodes #在看下節(jié)點信息
redis yum安裝配置  redis主從
#此時7010端口已經(jīng)有槽了,里已經(jīng)存了 2000/16384的數(shù)據(jù)了,如果壞了這部數(shù)據(jù)就會丟失了,所以我們給它加個從節(jié)點冗余

新增從節(jié)點

./redis-cli --cluster add-node 127.0.0.1:7011 127.0.0.1:7001
#依然是這個命令,增加了一個7011端口的節(jié)點
./redis-cli -c -p 7001 cluster nodes #在用查看節(jié)點的命令看一下
redis yum安裝配置  redis主從
#上圖能看見7011端口依然上線,角色是master 沒有槽,我們要給他轉(zhuǎn)變成slave角色

./redis-cli -c -p 7011
127.0.0.1:7011>  cluster replicate d7ff265c7293735c5bbf9c5ef34d2bc54fe1a3ea

./redis-cli -c -p 7001 cluster nodes #在用查看節(jié)點的命令看一下
redis yum安裝配置  redis主從
#再用查看節(jié)點的命令看一下,可以發(fā)現(xiàn)7011已經(jīng)變成了slave 狀態(tài),且后面跟著7010的ID號,表示7011是7010的slave。

添加可能出現(xiàn)的報錯及解決辦法
redis yum安裝配置  redis主從
redis yum安裝配置  redis主從

刪除主節(jié)點

由于主節(jié)點上有槽刪了會丟失數(shù)據(jù),所以我們要先移動槽到其他主節(jié)點上去
./redis-cli --cluster reshard 127.0.0.1:7001 #啟動程序分槽

How many slots do you want to move (from 1 to 16384)? 2000
#您要移動多少個插槽(從1到16384)?
What is the receiving node ID? 4ef4f52ddff10e66eff50f40d765bb390ab935dd
接收節(jié)點ID是什么? 4ef4f52ddff10e66eff50f40d765bb390ab935dd
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
    #請輸入所有源節(jié)點ID。
?? #鍵入“ all”以將所有節(jié)點用作哈希槽的源節(jié)點。(抽取所有master的槽均攤2000)
?? #輸入所有源節(jié)點ID后,鍵入“ done”。              (只抽取一個ID的槽,這里我們要把7003的槽移空)
Source node #1: dfe430fa679ef9a38aa5e072df4c957b3ed9a92d
#源節(jié)點1:dfe430fa679ef9a38aa5e072df4c957b3ed9a92d
Source node #2: done
#源節(jié)點2:已完成

Ready to move 2000 slots.
#準(zhǔn)備移動2000個插槽。
    Source nodes:
        #源節(jié)點:
    M: dfe430fa679ef9a38aa5e072df4c957b3ed9a92d 127.0.0.1:7003
       slots: (0 slots) master 
             #移動完成后,還有多少槽
  Destination node:
    #目標(biāo)節(jié)點
    M: 4ef4f52ddff10e66eff50f40d765bb390ab935dd 127.0.0.1:7002
       slots:[0-3115],[5782-8857],[10181-11698],[12181-12953] (8483 slots) master
             #移動完成后,還有多少槽
       4 additional replica(s)
            # 4個其他副本
  Resharding plan:
    #分片計劃:
Do you want to proceed with the proposed reshard plan (yes/no)? yes
#您是否要繼續(xù)執(zhí)行建議的分片計劃(是/否)? 是

redis yum安裝配置  redis主從
#一點要用cluster nodes 命令確保要刪除的主節(jié)點沒槽了,才能執(zhí)行下面的刪除操作

./redis-cli --cluster del-node 127.0.0.1:7003 dfe430fa679ef9a38aa5e072df4c957b3ed9a92d
#刪除7003節(jié)點,要輸入ip+端口+ID
redis yum安裝配置  redis主從

刪除從節(jié)點

刪除從節(jié)點7009
./redis-cli --cluster del-node 127.0.0.1:7009 088ace239a35fbbbb8f7fe68618331383c762c6b
#由于7009節(jié)點只是從節(jié)點,沒有槽,所以直接刪除即可
redis yum安裝配置  redis主從
#用cluster nodes 查看,可以發(fā)現(xiàn)7003 和 7009 節(jié)點已經(jīng)被刪除了

當(dāng)前文章:redisyum安裝配置redis主從
文章分享:http://bm7419.com/article38/iihpsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、小程序開發(fā)網(wǎng)站維護(hù)、網(wǎng)站設(shè)計微信公眾號、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管