Redis主從配置及通過Keepalived實現Redis自動切換高可用

來源:互聯網
上載者:User

標籤:

Redis主從配置及通過Keepalived實現Redis自動切換高可用
[日期:2014-07-23] 來源:Linux社區  fuquanjun [字型:大 中 小]
 

一:環境介紹:

Master: 192.168.1.4

Slave: 192.168.1.5

Virtural IP Address (VIP): 192.168.1.253

二:設計思路:

當 Master 與 Slave 均運作正常時, Master負責服務,Slave負責Standby;

當 Master 掛掉,Slave 正時, Slave接管服務,同時關閉主從複製功能;

當 Master 恢複正常,則從Slave同步資料,同步資料之後關閉主從複製功能,恢複Master身份,於此同時Slave等待Master同步資料完成之後,恢複Slave身份。

然後依次迴圈。

需要注意的是,這樣做需要在Master與Slave上都開啟本地化策略,否則在互相自動切換的過程中,未開啟本地化的一方會將另一方的資料清空,造成資料完全丟失。

三:安裝配置前準備工作


1.在主伺服器192.168.1.4上面做下面操作

echo "192.168.1.4 test01" >> /etc/hosts

echo "192.168.1.5 test" >> /etc/hosts

2.在從伺服器192.168.1.5上面做下面操作

echo "192.168.1.4 test01" >> /etc/hosts

echo "192.168.1.5 test" >> /etc/hosts

 


四:主伺服器配置redis

1.下載安裝redis軟體包

wget http://download.redis.io/releases/redis-2.8.12.tar.gztar xf redis-2.8.12.tar.gz

cd redis-2.8.12

make && make install

cd src/

cp redis-server redis-cli redis-benchmark redis-check-aof redis-check-dump /usr/local/bin

cd /usr/local/bin

ls -ll

然後將源碼中的 redis.conf 複製到 /etc/redis.conf

cp /root/redis-2.8.12/redis.conf /etc/redis.conf

修改 /etc/redis.conf裡面可以把  daemonize no 修改為daemonize yes

就可以預設在後台執行redis-server了。

 

再製作一個 init.d 的啟動指令碼:

vim /etc/init.d/redis-server

#!/usr/bin/env bash

#

# redis start up the redis server daemon

#

# chkconfig: 345 99 99

# description: redis service in /etc/init.d/redis \

#            chkconfig --add redis or chkconfig --list redis \

#            service redis start  or  service redis stop

# processname: redis-server

# config: /etc/redis.conf

 

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

 

REDISPORT=6379

EXEC=/usr/local/bin/redis-server

REDIS_CLI=/usr/local/bin/redis-cli

 

PIDFILE=/var/run/redis.pid

CONF="/etc/redis.conf"

#make sure some dir exist

if [ ! -d /var/lib/redis ] ;then

    mkdir -p /var/lib/redis

    mkdir -p /var/log/redis

fi

 

case "$1" in

    status)

        ps -A|grep redis

        ;;

    start)

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Redis server..."

                $EXEC $CONF

        fi

        if [ "$?"="0" ]

        then

              echo "Redis is running..."

        fi

        ;;

    stop)

        if [ ! -f $PIDFILE ]

        then

                echo "$PIDFILE does not exist, process is not running"

        else

                PID=$(cat $PIDFILE)

                echo "Stopping ..."

                $REDIS_CLI -p $REDISPORT SHUTDOWN

                while [ -x ${PIDFILE} ]

              do

                    echo "Waiting for Redis to shutdown ..."

                    sleep 1

                done

                echo "Redis stopped"

        fi

        ;;

  restart|force-reload)

        ${0} stop

        ${0} start

        ;;

  *)

    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2

        exit 1

esac


chmod o+x /etc/init.d/redis-server

chkconfig --add redis-server

service redis-server start

--------------------------------------分割線 --------------------------------------

Ubuntu 14.04下Redis安裝及簡單測試 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis叢集明細文檔 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis串連Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis系列-安裝部署維護篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安裝Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis設定檔redis.conf 詳解 http://www.linuxidc.com/Linux/2013-11/92524.htm

CentOS 6.3下Haproxy+Keepalived+Apache配置筆記 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 實現WEB群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Keepalived+Haproxy配置高可用負載平衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

Haproxy+Keepalived構建高可用負載平衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

--------------------------------------分割線 --------------------------------------

五:從發伺服器配置redis 

從伺服器,配置一樣,只不過 修改/etc/redis.conf 中

slaveof <masterip> <masterport>修改為

slaveof 192.168.1.4 6379

然後開啟從伺服器的redis服務。

start redis-server start

 

六:進行redis主從測試

#主伺服器

redis-cli -p 6379 set hello world

#從伺服器

redis-cli -p 6379 get hello

"world"

 


#主伺服器

redis-cli -p 6379 set hello world2

#從伺服器

redis-cli -p 6379 get hello

"world2"

redis-cli -p 6379 set hello world

(error) READONLY You can‘t write against a read only slave.

成功配置主從redis伺服器,由於配置中有一條從伺服器是唯讀,所以從伺服器沒法設定資料,只可以讀取資料。

Redis主從配置及通過Keepalived實現Redis自動切換高可用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.