本次实验环境介绍:

  操作系统:

    Centos 7.3 IP : 192.168.10.10

    Centos 7.3 IP : 192.168.10.20

      VIP    地址   : 192.168.10.254

  软件版本介绍:

    redis : redis-3.2.8          下载链接: http://download.redis.io/releases/redis-3.2.8.tar.gz

    keepalived : keepalived-1.2.10     下载链接: http://www.keepalived.org/software/keepalived-1.2.10.tar.gz

  环境基本简介:

    本次 实验环境用的是keepalived 做的高可用,并且做到了应用级别的高可用,意思就是说不管是主机 或者 应用程序任何一个宕掉后,都可以切换节点到从服务器上。并且         当主节点再次启动也不会因为再次切换节点到主服务器上。redis 做的一主一丛模式,大家有需求可以任意更改节点,因为redis 可以实现树形结构的主备,本次实验模式是当主         的挂掉后,从节点接替主节点工作,并自动切换为master 角色,依次类推。

    废话不多说了,大家想学习理论知识自行百度。

本次实验步骤:

  master and slave : 安装keepalived

1、安装依赖包

  yum -y install gcc openssl openssl-devel libnl* libpopt*

2、配置编译

  shell> cd /usr/local/src

  shell> wget http://www.keepalived.org/software/keepalived-1.2.10.tar.gz

  shell> tar -zxf keepalived-1.2.10.tar.gz

  shell> cd keepalived-1.2.10

  shell> ./configure --prefix=/usr/local/keepalived

  shell> make && make install

  shell> mkdir /etc/keepalived

  shell> cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

  sehll> cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

  shell> cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

  shell> chkconfig --add  keepalived

  sehll> chkconfig keepalived on

  shell> mv /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

  shell> systemctl start keepalived

#至此keepalived 安装完成

  master and slave : 安装 redis

1、解包

  cd /usr/local/src

  tar zxf redis-3.2.8.tar.gz

2、编译,没有配置一说,然后编译安装

  cd redis-3.2.8/deps

  make geohash-int hiredis jemalloc linenoise lua

  cd ..

  make && make install

3、使用脚本安装启动服务

  utils/install_server.sh

  安装过程中可以自定义路径,本人是一路Enter 键走过去的。

#至此redis 安装完成

以上为软件安装部分,下面是配置部分。

  首先配置keepalived master

  1、编辑keepalived 主配置文件

    vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id redis100   #route_id 标识                   
}
vrrp_script chk_redis
{
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"    #redis 健康检查状态脚本
     interval 2                                    #健康状态检查时间间隔 单位秒
     timeout 2                                                            #请求超时时间     单位秒
     fall 3                                      #失败次数
}
vrrp_instance redis {
     state MASTER                                   #master set to SLAVE also
     interface eno16777736                               #网卡名称,需要用那个网卡当作出口流量
     virtual_router_id 50                             #Route_id 号 跟slave需要一样
     priority  150                                  #优先级设置,只需要比backup的优先级高即可
     nopreempt                                    # no seize,must add
     advert_int
authentication {                                     #all node must same
         auth_type PASS                                #验证类型
         auth_pass 1111                                #验证密码
    }

    virtual_ipaddress {
        192.168.10.254                                #VIP飘逸地址,需要跟外界通信的地址
    }
    track_script {
         chk_redis                                  #检查刚才定义的选项,chk_redis
    }
     notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 192.168.10.254 6379"    #当keepalived 切换到master的时候执行此脚本
     notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 192.168.10.254 6379"    #当keepalived 切换到bakcup的时候执行此脚本
     notify_fault /etc/keepalived/scripts/redis_fault.sh                        #当keepalived 出现故障的时候执行此脚本
     notify_stop /etc/keepalived/scripts/redis_stop.sh                          #当keepalived 停止运行前执行此脚本
}

然后配置 eepalived backup

  1、编辑主配置文件

    vim /etc/keepalived/keepalived.conf  

! Configuration File for keepalived
global_defs {
   router_id redis101      #route_id标识,需要跟master 不一样
}
vrrp_script chk_redis
{
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"
     interval
     timeout
     fall
}
vrrp_instance redis {
    state BACKUP         #backup的标识,需要用过大写书写
    interface eno16777736
    virtual_router_id
    priority  100        #优先级要低于MASTER即可
    advert_int 1  
authentication {   #all node must same
        auth_type PASS
        auth_pass
    }

    virtual_ipaddress {
        192.168.10.254
    }
    track_script {
         chk_redis
    }
    notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 192.168.10.254 6379"
    notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 192.168.10.254 6379"
    notify_fault /etc/keepalived/scripts/redis_fault.sh
    notify_stop /etc/keepalived/scripts/redis_stop.sh
}

上边的配置文件中所提到的脚本都是一样的只需要更改参数即可,如何更改下面又详细的介绍。此操作需要在MASTER and BACKUP 同时操作

  上边写的五个脚本需要放在/etc/keepalived/scripts/目录下,大家也可以自定义脚本位置。

  第一个脚本 redis_check.sh   #有些参数可能需要大家根据自身的配置更改,例如:路径、密码、等。。。

 #!/bin/bash
 ALIVE=`/usr/local/bin/redis-cli -a  -h $ -p $ PING`       #redis-cli命令所在路径,根据自己配置更改,可用用which redis-cli命令查看路径。-a  后面跟的是redis的密码 “123456”
 LOGFILE="/var/log/keepalived-redis-check.log"
 echo "[CHECK]" >> $LOGFILE
 date >> $LOGFILE
 if [ $ALIVE == "PONG" ]; then :
    >&
    exit
 else
    >&
    exit
 fi

  第二个脚本 redis_master.sh #有些参数可能需要大家根据自身的配置更改,例如:路径、密码、等。。。

 #!/bin/bash
 REDISCLI="/usr/local/bin/redis-cli -a 123456 -h $1 -p $3"          #redis-cli命令所在路径,根据自己配置所更改,-a 后面的密码也要根据自己的设置而更改,更改方法在上面已经提到过了。
 LOGFILE="/var/log/keepalived-redis-state.log"
 echo "[master]" >> $LOGFILE
 date >> $LOGFILE
 >&
 echo "Run SLAVEOF cmd ... " >> $LOGFILE
 $REDISCLI SLAVEOF $ $ >> $LOGFILE  >&
 #echo "SLAVEOF $2 cmd can't excute ... " >> $LOGFILE
  ##delay  s wait data sync exchange role
 echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
 $REDISCLI SLAVEOF NO ONE >> $LOGFILE >&

  第三个脚本 redis_backup.sh #有些参数可能需要大家根据自身的配置更改,例如:路径、密码、等。。。

 #!/bin/bash
 REDISCLI="/usr/local/bin/redis-cli"                    #设置redis-cli的命令所在路径即可
 LOGFILE="/var/log/keepalived-redis-state.log"
 echo "[BACKUP]" >> $LOGFILE
 date >> $LOGFILE
 >&
 >&
 $REDISCLI SLAVEOF $ $ >> $LOGFILE
  #delay  s wait data async cancel sync
 exit()

  第四个脚本 redis_fault.sh

 #!/bin/bash
 LOGFILE=/var/log/keepalived-redis-state.log
 echo "[fault]" >> $LOGFILE
 date >> $LOGFILE

  第五个脚本 redis_stop.sh

 #!/bin/bash
 LOGFILE=/var/log/keepalived-redis-state.log
 echo "[stop]" >> $LOGFILE
 date >> $LOGFILE

  至此:完成对keepalived 的所有配置。现在重启一下即可完成对redis 的高可用,但是虽然实现了高可用,但是还有一个问题没有解决掉,就是数据同步问题,master 挂掉后,从节点接替主节点,但是从节点并没有主节点的缓存,所以轻则重新同步缓存到服务器上,重责大胆的人可以一试。

然后配置 master redis 的配置文件

  vim /etc/redis/6379.conf

  修改 bind 0.0.0.0

  修改 masterauth 123456    认证密码

  设定文件,指定Master

slaveof 192.168.10.20 6379     指定master的ip和port
masterauth 123456            master有验证的情况下
slave-read-only yes             设置slave为只读模式

然后配置 backup redis 的配置文件

  vim /etc/redis/6379.conf

  修改 bind 0.0.0.0

  修改 masterauth 123456    认证密码

  设定文件,指定Master

slaveof      指定master的ip和port
masterauth             master有验证的情况下
slave-read-only yes             设置slave为只读模式

至此redis 就配置完成了

附加提示

启动redis 命令

redis-server /etc/redis/6379.conf

停止redis 命令

netstat -anpt | grep redis

kill  进程号

验证redis 的主从复制和keepalived 的高可用

首先使用redis 客户端连接进来,然后分别连接master 、backup 、VIP 地址

  1、使用console 控制台连接,键入命令 INFO replication 查看是否是master or slave

  2、键入数据查看备用节点是否同步数据

  3、模仿故障,关闭redis 进程,看看节点是否进行切换VIP是否正常连接

  4、发挥你的特长,自由检查

至此,本篇文档完结。

有写的错的,不好的,希望大神们可以指正,也可以互相交流交流。欢迎大家留言,评论,爱你们@@@

Redis + keepalived 高可用群集搭建的更多相关文章

  1. 高可用群集HA介绍与LVS+keepalived高可用群集

    一.Keepalived介绍 通常使用keepalived技术配合LVS对director和存储进行双机热备,防止单点故障,keepalived专为LVS和HA设计的一款健康检查工具,但演变为后来不仅 ...

  2. LVS+Keepalived 高可用群集部署

    LVS+Keepalived 高可用群集部署 1.LVS+Keepalived 高可用群集概述 2.LVS+Keepalived高可用群集部署 1.LVS+Keepalived 高可用群集概述: LV ...

  3. 22.LVS+Keepalived 高可用群集

    LVS+Keepalived 高可用群集 目录 LVS+Keepalived 高可用群集 keepalived工具介绍 Keepalived实现原理剖析 VRRP(虚拟路由冗余协议) VRRP 相关术 ...

  4. 1. lvs+keepalived 高可用群集

    一. keepalived 工具介绍 1.专为lvs 和HA 设计的一款健康检查工具 2.支持故障自动切换 3.支持节点健康状态检查 二.  keepalived 实现原理剖析 keepalived ...

  5. Redis Sentinel 高可用服务搭建

    阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...

  6. Redis+Keepalived高可用方案详细分析

    背景 目前,Redis集群的官方方案还处在开发测试中,未集成到稳定版中.且目前官方开发中的Redis Cluster提供的功能尚不完善(可参考官方网站或http://www.redisdoc.com/ ...

  7. Redis+Keepalived高可用环境部署记录

    Keepalived 实现VRRP(虚拟路由冗余)协议,从路由级别实现VIP切换,可以完全避免类似heartbeat脑裂问题,可以很好的实现主从.主备.互备方案,尤其是无状态业务,有状态业务就需要额外 ...

  8. [Z]haproxy+keepalived高可用群集

    http://blog.51cto.com/13555423/2067131 Haproxy是目前比较流行的一种集群调度工具Haproxy 与LVS.Nginx的比较LVS性能最好,但是搭建相对复杂N ...

  9. mamcached+(magent+keepalived高可用)搭建及理论概述

    目录 一.理论概述 工作流程 二.部署 环境 环境概述 部署 三.测试 四.总结 一.理论概述 Memcached服务器端与PHP-Memcache客户端安装配置_服务器应用_Linux公社-Linu ...

随机推荐

  1. 跟着内核学框架-从misc子系统到3+2+1设备识别驱动框架

    misc子系统在Linux中是一个非常简单的子系统,但是其清晰的框架结构非常适合用来研究设备识别模型.本文从misc子系统的使用出发,通过了解其机制来总结一套的设备识别的驱动框架,即使用使用同一个驱动 ...

  2. html5中的meta标签

    1. <meta http-equiv="X-UA-Compatible" content="IE=edge" /> IE=edge告诉IE使用最新 ...

  3. linux下载时提示请尝试移除磁盘中不需要的文件并重试,或者保存到其他位置

    因为我是用虚拟机装的linux,所以当时就分配了20G硬盘,下载了几个应用后再下载就提示我这个了.一开始我还以为是因为下载链接的问题,后来才知道原来是因为/tmp的满了. 然后我输入以下连个命令就能正 ...

  4. Xamarin组件包 Xamarin.ToolKit第二波

    Xamarin.ToolKit第二波 一 圆角按钮 xamarin.froms提供的标准button按钮设置了圆角和边框,都没有明显圆角样式,于是乎自己重写了渲染类.道理吧就是重写ButtonRend ...

  5. canvas实例:旋转缩放的方块

    首先在页面中创建一个canvas标签: <body> <canvas id="c1" width="500" height="500 ...

  6. JavaScript中定义变量和存储值的类型判断

    以严谨的语法表示作为前提 首先变量被定义,然后给变量赋予一定的值,变量真正的作用就是存储值 变量的定义和赋值 变量的定义: var a 使用关键字var+变量名表示定义一个变量 a 变量的赋值: va ...

  7. 纯CSS3之五子棋(黑白棋)画法

    无聊想用JS写个五子棋玩玩,这边先用CSS3画出了五子棋,感觉挺惊艳的.发上来看看 PS:第一次发博文T-T  此为个人原创. 不多说上图: 代码如下: <!DOCTYPE html> & ...

  8. WebSite---前台系统图片验证码心得

    背景: 因为移动端APP和Msite手机注册发送短信验证码没有添加图片验证码功能.公司的短信接口被恶意刷取.所以我们就觉得在移动端添加一个图片验证码功能.分享一下大体实现方式思路.PS demo是自己 ...

  9. 《学习记录》ng2-bootstrap中的component使用教程

    前序: 现在angular2已经除了集成的angular-cli,建议大家可以基于这个来快速开发ng2的项目,不用自己再搭建环境: 相关内容请前往:https://angular.cn/docs/ts ...

  10. PHP解耦的三重境界(浅谈服务容器)

    阅读本文之前你需要掌握:PHP语法,面向对象 在完成整个软件项目开发的过程中,有时需要多人合作,有时也可以自己独立完成,不管是哪一种,随着代码量上升,写着写着就"失控"了,渐渐&q ...