欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis主從架構(gòu)和高可用性實(shí)現(xiàn)過程

 更新時(shí)間:2024年09月27日 09:46:46   作者:大俠之運(yùn)維  
本文詳細(xì)介紹了使用Redis主從架構(gòu)和Linux虛擬服務(wù)器(LVS)實(shí)現(xiàn)高可用性的方法,并回顧了最近完成的Redis集群遷移部署過程,主從架構(gòu)通過復(fù)制數(shù)據(jù)來提高性能和數(shù)據(jù)冗余,而LVS用于實(shí)現(xiàn)負(fù)載均衡和故障切換,感興趣的朋友跟隨小編一起看看吧

還是遷移的事

Redis主從架構(gòu)和高可用性實(shí)現(xiàn)

引言

在當(dāng)今的應(yīng)用程序中,高可用性和性能是至關(guān)重要的。本文將介紹如何使用Redis主從架構(gòu)和Linux虛擬服務(wù)器(LVS)實(shí)現(xiàn)高可用性,同時(shí)還會(huì)詳細(xì)介紹最近完成的Redis集群遷移部署的過程。

什么是Redis?

Redis是一個(gè)開源的內(nèi)存數(shù)據(jù)庫(kù),它被廣泛用于緩存和數(shù)據(jù)存儲(chǔ)。它以其出色的性能和靈活的數(shù)據(jù)結(jié)構(gòu)支持而聞名,因此被許多大規(guī)模應(yīng)用程序廣泛使用。

Redis主從架構(gòu)

Redis采用了主從復(fù)制的架構(gòu),這是一種實(shí)現(xiàn)高可用性和橫向擴(kuò)展的方式。在Redis主從架構(gòu)中,有一個(gè)主服務(wù)器和多個(gè)從服務(wù)器,主服務(wù)器用于寫入操作,從服務(wù)器用于讀取操作。這可以提高性能和數(shù)據(jù)冗余。

主服務(wù)器

主服務(wù)器接收客戶端的寫入請(qǐng)求,并將這些請(qǐng)求復(fù)制到從服務(wù)器。它負(fù)責(zé)數(shù)據(jù)的寫入和維護(hù)。

從服務(wù)器

從服務(wù)器復(fù)制主服務(wù)器的數(shù)據(jù),并用于讀取操作。如果主服務(wù)器發(fā)生故障,從服務(wù)器可以升級(jí)為主服務(wù)器,以保持高可用性。

Redis高可用性

高可用性是確保系統(tǒng)在面臨故障時(shí)仍然可用的能力。使用Redis主從架構(gòu),可以實(shí)現(xiàn)高可用性。但為了進(jìn)一步提高可用性,我們可以引入Linux虛擬服務(wù)器(LVS)。

Linux虛擬服務(wù)器(LVS)

LVS是一個(gè)用于負(fù)載均衡的Linux內(nèi)核模塊。我們這里用到的是實(shí)現(xiàn)主從切換,當(dāng)主服務(wù)redis異常時(shí),可以切換從服務(wù)器變?yōu)橹鞣?wù)器。

最近的遷移部署過程

遷移計(jì)劃

在介紹Redis主從架構(gòu)和LVS之后,讓我們回顧一下最近的Redis集群遷移部署過程。在遷移之前,我們制定了詳細(xì)的遷移計(jì)劃和測(cè)試流程。

數(shù)據(jù)備份

首先,我們對(duì)現(xiàn)有的Redis集群進(jìn)行了數(shù)據(jù)備份。這是確保在遷移期間不會(huì)丟失任何數(shù)據(jù)的關(guān)鍵步驟。我們使用了Redis的快照功能來創(chuàng)建數(shù)據(jù)備份。

redis部署

在備份完成后,我們進(jìn)行了網(wǎng)絡(luò)切換。我們將流量從舊的Redis集群切換到新的Redis集群,同時(shí)引入了LVS以實(shí)現(xiàn)負(fù)載均衡。這個(gè)過程需要謹(jǐn)慎地調(diào)整網(wǎng)絡(luò)配置,以確保平滑切換。

redis部署很簡(jiǎn)單,直接編譯安裝就好,因?yàn)槲覀兪沁w移,所以直接把老的包拿過來用即可

主redis配置文件

# cat redis.conf
daemonize yes
pidfile "/var/run/redis.pid"
port 16465
timeout 300
tcp-keepalive 60
loglevel notice
logfile "/data/log/redis.log"
databases 16
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/data/datafile"
masterauth "password"
slave-serve-stale-data yes
slave-read-only yes
repl-ping-slave-period 10
repl-timeout 600
repl-disable-tcp-nodelay no
repl-backlog-size 64mb
repl-backlog-ttl 3600
slave-priority 100
requirepass "password"
maxmemory 10000000000
maxmemory-policy noeviction
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 20000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 8gb 4gb 600
client-output-buffer-limit pubsub 32mb 8mb 60
aof-rewrite-incremental-fsync yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
slave-lazy-flush yes
aof-use-rdb-preamble yes
maxclients 4064

從redis配置文件會(huì)多一行

slaveof 主ip 16465

啟動(dòng)Redis

 /data/redis/bin/redis-server /data/redis/conf/redis.conf

查看info信息,確認(rèn)主可以連接到從庫(kù)

lvs部署及配置

keepalive可以直接yum安裝

然后修改keepalived配置文件

# cat /etc/keepalived/keepalived.conf 
global_defs {   
        router_id LVS_DEVEL
        script_user root
        enable_script_security    
}
vrrp_script chk_16465 {
        script "/var/keepalived/scripts/redis_check.sh password 16465"
        interval 1
        weight -20
        rise 3
        fall 3
}
vrrp_instance redis_6465 {
        state BACKUP
        interface bond1
        virtual_router_id 52
        priority 90
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
                vip
        }
        track_script {
                chk_16465
        }
        notify_master "/var/keepalived/scripts/redis_master.sh  password 16465"
        notify_backup "/var/keepalived/scripts/redis_slave.sh  password 16465 masterip  "
        notify_fault "/var/keepalived/scripts/redis_falut.sh"
        notify_stop "/var/keepalived/scripts/redis_stop.sh"
}

如果是主的話,需要對(duì)應(yīng)修改如下:

state MASTER
priority 100

其中涉及到幾個(gè)腳本,如下:

#cat /var/keepalived/scripts/redis_check.sh 
#!/bin/bash
CMD_RES=`/paic/redis/4.0.10/bin/redis-cli -a $1 -p $2 PING 2>/dev/null`
LOG_FILE="/var/keepalived/logs/redis-state.log"
if [ "$CMD_RES"x == "PONG"x ]; then :
   echo "[CHECK] `date`, SUCCESS" >> $LOG_FILE 2>&1
    exit 0
else
    echo "[CHECK] `date`, ERROR" >> $LOG_FILE 2>&1
    exit 1
fi
# cat /var/keepalived/scripts/redis_master.sh 
#!/bin/bash
CMD="/paic/redis/4.0.10/bin/redis-cli"
LOG_FILE="/var/keepalived/logs/redis-change.log"
echo "[MASTER] `date`" >> $LOG_FILE
echo "Run SLAVEOF NO ONE cmd" >> $LOG_FILE
$CMD -a $1 -p $2 SLAVEOF NO ONE >> $LOG_FILE 2>&1
#cat /var/keepalived/scripts/redis_slave.sh 
#!/bin/bash
CMD="/paic/redis/4.0.10/bin/redis-cli"
LOG_FILE="/var/keepalived/logs/redis-change.log"
echo "[BACKUP] `date`" >> $LOG_FILE
echo "Being slave wait to sync data" >> $LOG_FILE
sleep 1  
echo "Run SLAVEOF cmd" >> $LOG_FILE
$CMD -a $1 -p $2 SLAVEOF $3 $2 >> $LOG_FILE  2>&
#cat /var/keepalived/scripts/redis_falut.sh 
#!/bin/bash
LOG_FILE="/var/keepalived/logs/redis-state.log"
echo "[FAULT] `date`" >> $LOG_FILE

測(cè)試

遷移完成后,我們進(jìn)行了一系列測(cè)試,以確保新的Redis集群能夠正常工作。我們模擬了各種故障情況,以驗(yàn)證高可用性配置的有效性。

當(dāng)把主的redis進(jìn)程kiil掉后,可以看到虛擬ip轉(zhuǎn)移到從機(jī)上,通過redis-cli鏈接后,從redis可以正常寫,并且角色轉(zhuǎn)換為了master。

結(jié)論

通過使用Redis主從架構(gòu)和Linux虛擬服務(wù)器,我們成功地實(shí)現(xiàn)了高可用性和性能擴(kuò)展。最近的Redis集群遷移部署過程也順利完成,我們現(xiàn)在擁有一個(gè)穩(wěn)定和可靠的Redis環(huán)境,滿足了我們應(yīng)用程序的需求。

Redis的強(qiáng)大性能和高可用性使其成為許多應(yīng)用程序的首選數(shù)據(jù)庫(kù)引擎。希望本文對(duì)您理解Redis主從架構(gòu)、高可用性和遷移部署過程有所幫助。

到此這篇關(guān)于Redis主從架構(gòu)和高可用性實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Redis主從架構(gòu)和高可用性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis RDB與AOF持久化方式詳細(xì)講解

    Redis RDB與AOF持久化方式詳細(xì)講解

    Redis是基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,保存了大量的鍵值對(duì)數(shù)據(jù),所以持久化到磁盤是非常必要的,Redis提供了兩種持久化的方式,分別是RDB和AOF。下面我們看下這兩種持久化方式的具體實(shí)現(xiàn)原理
    2022-11-11
  • springboot中redis并發(fā)鎖的等待時(shí)間設(shè)置長(zhǎng)短的方法

    springboot中redis并發(fā)鎖的等待時(shí)間設(shè)置長(zhǎng)短的方法

    在SpringBoot應(yīng)用中,Redis鎖的等待時(shí)間設(shè)置不當(dāng)可能導(dǎo)致資源浪費(fèi)、響應(yīng)時(shí)間增加、死鎖風(fēng)險(xiǎn)升高、系統(tǒng)負(fù)載增加、業(yè)務(wù)邏輯延遲以及故障恢復(fù)慢等問題,建議合理設(shè)置等待時(shí)間,并考慮使用其他分布式鎖實(shí)現(xiàn)方式提高性能
    2024-10-10
  • redis分布式鎖的問題與解決方法

    redis分布式鎖的問題與解決方法

    這篇文章主要給大家介紹了關(guān)于redis分布式鎖的問題與解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐

    redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐

    本文主要介紹了redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • CentOS7.5使用mysql_multi方式安裝MySQL5.7.28多實(shí)例(詳解)

    CentOS7.5使用mysql_multi方式安裝MySQL5.7.28多實(shí)例(詳解)

    這篇文章主要介紹了CentOS7.5使用mysql_multi方式安裝MySQL5.7.28多實(shí)例,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Redis 分片集群的實(shí)現(xiàn)

    Redis 分片集群的實(shí)現(xiàn)

    本文主要介紹了Redis 分片集群的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Redis?BigKey的問題解決

    Redis?BigKey的問題解決

    本文主要介紹了Redis?BigKey的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • redis實(shí)現(xiàn)好友關(guān)注&消息推送的方法示例

    redis實(shí)現(xiàn)好友關(guān)注&消息推送的方法示例

    Redis作為一款開源的內(nèi)存數(shù)據(jù)庫(kù),具有可靠性、速度快、易用性等優(yōu)點(diǎn),已經(jīng)被廣泛應(yīng)用于開發(fā)實(shí)際項(xiàng)目中,本文主要介紹了redis實(shí)現(xiàn)好友關(guān)注&消息推送的方法示例,感興趣的可以了解一下
    2023-10-10
  • 關(guān)于Redis的主從復(fù)制及哨兵問題

    關(guān)于Redis的主從復(fù)制及哨兵問題

    redis中以master為主機(jī),slave為從機(jī),一個(gè)master可以對(duì)應(yīng)多個(gè)slave,而一個(gè)slave只能對(duì)應(yīng)一個(gè)master,這篇文章主要介紹了Redis的主從復(fù)制及哨兵,需要的朋友可以參考下
    2022-06-06
  • gem install redis報(bào)錯(cuò)的解決方案

    gem install redis報(bào)錯(cuò)的解決方案

    今天小編就為大家分享一篇關(guān)于gem install redis報(bào)錯(cuò)的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評(píng)論