手把手教你Redis+Keepalived实现自动切换主从高可用方案<二>

  • 作者
  • KING

引言:

本文第一部分,介绍这两种工具如何在linux下的安装.

本文第二部分,介绍如何利用这两种工具,来实现自动同步缓存数据,自动切换缓存主从关系.

(本人其它一些文章,可到http://www.wejias.com进行阅读)



Redis的主从机会自动数据.

Keepalived  有切换访问IP的功能,利用此特性来切换缓存的主从关系.

 

环境

 

192.168.36.2  VIP(虚IP)

192.168.36.53   Keepalived  & Redis  的主服务器

192.168.36.54   Keepalived  & Redis 的从服务器

 

 

思路:

        当36.53(即主服务器)挂掉的时候,keepalived 的VIP会自动转到36.54

        这个时候利用keepalived的notify_master 属性将36.54设置为Redis的主服务器.

        这样就可以,将53挂掉期间数据保存到54上.而Keepalived又会让外部访问转到54,

        所以此时缓存数据存取都没有问题(之前由于54是53的从机,所以54也有之前的数据)

 

 

        而当36.53恢复正常之后,VIP有会返回到53.

        这个时候同样利用keepalived的notify_master 属性,做以下几件事情.

                1.将本地(即53)设置为54的从机,因为之前54是Redis的主机,所有数据都在54上,再由于Reids主从之前会自动同步数据.

                    所以这么做就够将所有缓存复制到53上(54有最早,53挂掉期间的所有数据)

 

                2.将本机再次设置53为Reids的主机

 

                3.将54设置为53的从机

 

步聚:

1.配置53

      1.1为53也如下脚本redis.sh:

            ######设置本地为54的从机
            /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof 192.168.36.54 6379;
            ######等待30秒,做数据同步,此点在网上没有找到好的方法
            sleep 30;
            ######设置为本地为Redis的主机
            /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE;
            ######设置54为53的从机
            /usr/local/bin/redis-cli -h 192.168.36.54 -p 6379 slaveof 192.168.36.53 6379;

 

    1.2修改53的/etc/keepalived/keepalived.conf

           vrrp_instance VI_1 {
                state MASTER
                interface eth0
                virtual_router_id 51
                priority 100
                advert_int 1
                authentication {
                    auth_type PASS
                    auth_pass 1111
                }
                virtual_ipaddress {
                    192.168.36.2
                }
                notify_master /usr/local/myShellTemp/redis.sh        ----------添加了该句,该句在本地被做为Keepalived时调用
          }

 

2.配置54机,54就比较简单了:

        2.1为54写如下会脚本redis.sh:

            #######将本机设置为Redis的主机

            /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE

        2.2同53一样修改/etc/keepalived/keepalived.conf即可.

 

 

 

END

 

总结:没有linux基本功太纠结了,纠结各种不相关的问题浪费了太多时间,单单这个shell脚本.

手把手教你Redis+Keepalived实现自动切换主从高可用方案<二>

引言:

本文第一部分,介绍这两种工具如何在linux下的安装.

本文第二部分,介绍如何利用这两种工具,来实现自动同步缓存数据,自动切换缓存主从关系.

(本人其它一些文章,可到http://www.wejias.com进行阅读)



Redis的主从机会自动数据.

Keepalived  有切换访问IP的功能,利用此特性来切换缓存的主从关系.

 

环境

 

192.168.36.2  VIP(虚IP)

192.168.36.53   Keepalived  & Redis  的主服务器

192.168.36.54   Keepalived  & Redis 的从服务器

 

 

思路:

        当36.53(即主服务器)挂掉的时候,keepalived 的VIP会自动转到36.54

        这个时候利用keepalived的notify_master 属性将36.54设置为Redis的主服务器.

        这样就可以,将53挂掉期间数据保存到54上.而Keepalived又会让外部访问转到54,

        所以此时缓存数据存取都没有问题(之前由于54是53的从机,所以54也有之前的数据)

 

 

        而当36.53恢复正常之后,VIP有会返回到53.

        这个时候同样利用keepalived的notify_master 属性,做以下几件事情.

                1.将本地(即53)设置为54的从机,因为之前54是Redis的主机,所有数据都在54上,再由于Reids主从之前会自动同步数据.

                    所以这么做就够将所有缓存复制到53上(54有最早,53挂掉期间的所有数据)

 

                2.将本机再次设置53为Reids的主机

 

                3.将54设置为53的从机

 

步聚:

1.配置53

      1.1为53也如下脚本redis.sh:

            ######设置本地为54的从机
            /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof 192.168.36.54 6379;
            ######等待30秒,做数据同步,此点在网上没有找到好的方法
            sleep 30;
            ######设置为本地为Redis的主机
            /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE;
            ######设置54为53的从机
            /usr/local/bin/redis-cli -h 192.168.36.54 -p 6379 slaveof 192.168.36.53 6379;

 

    1.2修改53的/etc/keepalived/keepalived.conf

           vrrp_instance VI_1 {
                state MASTER
                interface eth0
                virtual_router_id 51
                priority 100
                advert_int 1
                authentication {
                    auth_type PASS
                    auth_pass 1111
                }
                virtual_ipaddress {
                    192.168.36.2
                }
                notify_master /usr/local/myShellTemp/redis.sh        ----------添加了该句,该句在本地被做为Keepalived时调用
          }

 

2.配置54机,54就比较简单了:

        2.1为54写如下会脚本redis.sh:

            #######将本机设置为Redis的主机

            /usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE

        2.2同53一样修改/etc/keepalived/keepalived.conf即可.

 

 

 

END

 

总结:没有linux基本功太纠结了,纠结各种不相关的问题浪费了太多时间,单单这个shell脚本.