Centos 6.9 Redis ---Keepalived 高可用主从切换
来源:互联网 发布:追风打印软件 编辑:程序博客网 时间:2024/05/22 03:08
当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby;
当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从复制功能;
当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,于此同时Slave等待Master同步数据完成之后,恢复Slave身份。
然后依次循环。
----------------------------------------------------------------------------------------------------------------------------------------------
服务器配置
172.16.19.12 Master
172.16.19.13 Slave
172.16.19.199 虚拟地址
----------------------------------------------------------------------------------------------------------------------------------------------
主从配置主机名称
vi /etc/hosts
172.16.19.12 redis12
172.16.19.13 redis13
主从安装环境依赖
yum install gcc gcc-c++ make zlib-devel wget tclkernel-devel openssl-devel popt-devel ipvsadm install libnl libnl-devel libnfnetlink-devel wget vim -y
主从配置下载redis
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
主从解压redis
tar -zxvf redis-4.0.1.tar.gz
主从拷贝到目录
mv redis-4.0.1 /usr/local/redis
编译redis
cd /usr/local/redis
make && make install
主从创建一个redis实力
/usr/local/redis/utils
sh ./install_server.sh
6379 端口
修改主配置(Master)redis IP
vi /etc/redis/6379.conf
# line 70: change to own IP or 0.0.0.0
bind 0.0.0.0
# line 377: add follows if you need
# min-slaves-to-write : if number of slave Hosts are online, Master Host accepts write requests
# min-slaves-max-lag : decision time(sec) for online if Slave Hosts return answer within specified time
min-slaves-to-write 2
min-slaves-max-lag 10
修改从配置(Slave)redis IP
vi /etc/redis/6379.conf
# line 70: change to own IP or 0.0.0.0
bind 0.0.0.0
# line 206: add Master server's IP and port
slaveof 172.16.19.12 6379
# line 213: add connection password set on Master Host
masterauth password
# line 241: verify parameter (set Slave Hosts read-only)
slave-read-only yes
主从下载keepalived
wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
解压
tar zxvf keepalived-1.3.5.tar.gz
主从配置编译并安装
cd keepalived-1.3.5
./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-696.el6.x86_64/
make && make install
主从查看keepalived目录结构
find / -name keepalived
主从拷贝配置
cp /root/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived
cp /root/keepalived-1.3.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
cp /root/keepalived-1.3.5/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
mkdir /etc/keepalived
cp /root/keepalived-1.3.5/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
======================================================================================================================================================
主服务配置keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id redis12
}
vrrp_script chk_redis
{
script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"
interval 2
timeout 2
fall 3
}
vrrp_instance redis {
state MASTER # master set to SLAVE also
interface eth0
virtual_router_id 50
priority 150
nopreempt # no seize,must add
advert_int 1
authentication { #all node must same
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.19.199/24
}
track_script {
chk_redis
}
notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 172.16.19.13 6379"
notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 172.16.19.13 6379"
notify_fault /etc/keepalived/scripts/redis_fault.sh
notify_stop /etc/keepalived/scripts/redis_stop.sh
}
======================================================================================================================================================
从服务配置keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id redis13
}
vrrp_script chk_redis
{
script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"
interval 2
timeout 2
fall 3
}
vrrp_instance redis {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication { #all node must same
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.19.199/24
}
track_script {
chk_redis
}
notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 172.16.19.12 6379"
notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 172.16.19.12 6379"
notify_fault /etc/keepalived/scripts/redis_fault.sh
notify_stop /etc/keepalived/scripts/redis_stop.sh
}
======================================================================================================================================================
主从服务器创建监控Redis的脚本
mkdir /etc/keepalived/scripts
vi /etc/keepalived/scripts/redis_check.sh
#!/bin/bash
ALIVE=`/usr/local/bin/redis-cli -h $1 -p $2 PING`
LOGFILE="/var/log/keepalived-redis-check.log"
echo "[CHECK]" >> $LOGFILE
date >> $LOGFILE
if [ $ALIVE == "PONG" ]; then :
echo "Success: redis-cli -h $1 -p $2 PING $ALIVE" >> $LOGFILE 2>&1
exit 0
else
echo "Failed:redis-cli -h $1 -p $2 PING $ALIVE " >> $LOGFILE 2>&1
exit 1
fi
主服务器创建redis_master脚本
vi /etc/keepalived/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli -h $1 -p $3"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ... " >> $LOGFILE
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1
#echo "SLAVEOF $2 cmd can't excute ... " >> $LOGFILE
sleep 10 ##delay 15 s wait data sync exchange role
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
~
主服务器创建redis_backup脚本
vi/etc/keepalived/scripts/redis_backup.sh
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[BACKUP]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE 2>&1
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE
sleep 100 #delay 10 s wait data async cancel sync
exit(0)
主服务器创建redis_fault脚本
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
主服务器创建redis_stop脚本
vi /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
=====================================================================================
在从服务器创建redis_master脚本
vi /etc/keepalived/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli -h $1 -p $3"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ... " >> $LOGFILE
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1
#echo "SLAVEOF $2 cmd can't excute ... " >> $LOGFILE
sleep 10 ##delay 15 s wait data sync exchange role
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
在从服务器创建redis_backup脚本
vi /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
在从服务器创建redis_fault脚本
vi /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
在从服务器上创建redis_stop脚本
vi /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
主从赋予权限
chmod +x /etc/keepalived/scripts/*.sh
主从启动服务
service keepalived start
service redis_6379 start
主从配置开机启动
chkconfig --add redis_6379
chkconfig redis_6379 on
chkconfig --add keepalived
chkconfig keepalived on
主测试
关闭redis 服务或者杀死进程
service redis_6379 stop
killall -9 redis-server
service keepalived stop
killall -9 keepalived
查看主从Keepalived日志
tailf /var/log/keepalived-redis-state.log
从服务器查看
redis-cli -h 172.16.19.13 INFO 或者 redis-cli info Replication
从服务器测试虚拟IP是否正常
redis-cli -h 172.16.19.199 INFO
当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从复制功能;
当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,于此同时Slave等待Master同步数据完成之后,恢复Slave身份。
然后依次循环。
----------------------------------------------------------------------------------------------------------------------------------------------
服务器配置
172.16.19.12 Master
172.16.19.13 Slave
172.16.19.199 虚拟地址
----------------------------------------------------------------------------------------------------------------------------------------------
主从配置主机名称
vi /etc/hosts
172.16.19.12 redis12
172.16.19.13 redis13
主从安装环境依赖
yum install gcc gcc-c++ make zlib-devel wget tclkernel-devel openssl-devel popt-devel ipvsadm install libnl libnl-devel libnfnetlink-devel wget vim -y
主从配置下载redis
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
主从解压redis
tar -zxvf redis-4.0.1.tar.gz
主从拷贝到目录
mv redis-4.0.1 /usr/local/redis
编译redis
cd /usr/local/redis
make && make install
主从创建一个redis实力
/usr/local/redis/utils
sh ./install_server.sh
6379 端口
修改主配置(Master)redis IP
vi /etc/redis/6379.conf
# line 70: change to own IP or 0.0.0.0
bind 0.0.0.0
# line 377: add follows if you need
# min-slaves-to-write : if number of slave Hosts are online, Master Host accepts write requests
# min-slaves-max-lag : decision time(sec) for online if Slave Hosts return answer within specified time
min-slaves-to-write 2
min-slaves-max-lag 10
修改从配置(Slave)redis IP
vi /etc/redis/6379.conf
# line 70: change to own IP or 0.0.0.0
bind 0.0.0.0
# line 206: add Master server's IP and port
slaveof 172.16.19.12 6379
# line 213: add connection password set on Master Host
masterauth password
# line 241: verify parameter (set Slave Hosts read-only)
slave-read-only yes
主从下载keepalived
wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
解压
tar zxvf keepalived-1.3.5.tar.gz
主从配置编译并安装
cd keepalived-1.3.5
./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-696.el6.x86_64/
make && make install
主从查看keepalived目录结构
find / -name keepalived
主从拷贝配置
cp /root/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived
cp /root/keepalived-1.3.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
cp /root/keepalived-1.3.5/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
mkdir /etc/keepalived
cp /root/keepalived-1.3.5/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
======================================================================================================================================================
主服务配置keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id redis12
}
vrrp_script chk_redis
{
script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"
interval 2
timeout 2
fall 3
}
vrrp_instance redis {
state MASTER # master set to SLAVE also
interface eth0
virtual_router_id 50
priority 150
nopreempt # no seize,must add
advert_int 1
authentication { #all node must same
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.19.199/24
}
track_script {
chk_redis
}
notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 172.16.19.13 6379"
notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 172.16.19.13 6379"
notify_fault /etc/keepalived/scripts/redis_fault.sh
notify_stop /etc/keepalived/scripts/redis_stop.sh
}
======================================================================================================================================================
从服务配置keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id redis13
}
vrrp_script chk_redis
{
script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379"
interval 2
timeout 2
fall 3
}
vrrp_instance redis {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication { #all node must same
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.19.199/24
}
track_script {
chk_redis
}
notify_master "/etc/keepalived/scripts/redis_master.sh 127.0.0.1 172.16.19.12 6379"
notify_backup "/etc/keepalived/scripts/redis_backup.sh 127.0.0.1 172.16.19.12 6379"
notify_fault /etc/keepalived/scripts/redis_fault.sh
notify_stop /etc/keepalived/scripts/redis_stop.sh
}
======================================================================================================================================================
主从服务器创建监控Redis的脚本
mkdir /etc/keepalived/scripts
vi /etc/keepalived/scripts/redis_check.sh
#!/bin/bash
ALIVE=`/usr/local/bin/redis-cli -h $1 -p $2 PING`
LOGFILE="/var/log/keepalived-redis-check.log"
echo "[CHECK]" >> $LOGFILE
date >> $LOGFILE
if [ $ALIVE == "PONG" ]; then :
echo "Success: redis-cli -h $1 -p $2 PING $ALIVE" >> $LOGFILE 2>&1
exit 0
else
echo "Failed:redis-cli -h $1 -p $2 PING $ALIVE " >> $LOGFILE 2>&1
exit 1
fi
主服务器创建redis_master脚本
vi /etc/keepalived/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli -h $1 -p $3"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ... " >> $LOGFILE
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1
#echo "SLAVEOF $2 cmd can't excute ... " >> $LOGFILE
sleep 10 ##delay 15 s wait data sync exchange role
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
~
主服务器创建redis_backup脚本
vi/etc/keepalived/scripts/redis_backup.sh
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[BACKUP]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE 2>&1
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE
sleep 100 #delay 10 s wait data async cancel sync
exit(0)
主服务器创建redis_fault脚本
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
主服务器创建redis_stop脚本
vi /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
=====================================================================================
在从服务器创建redis_master脚本
vi /etc/keepalived/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli -h $1 -p $3"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ... " >> $LOGFILE
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1
#echo "SLAVEOF $2 cmd can't excute ... " >> $LOGFILE
sleep 10 ##delay 15 s wait data sync exchange role
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
在从服务器创建redis_backup脚本
vi /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
在从服务器创建redis_fault脚本
vi /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
在从服务器上创建redis_stop脚本
vi /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
主从赋予权限
chmod +x /etc/keepalived/scripts/*.sh
主从启动服务
service keepalived start
service redis_6379 start
主从配置开机启动
chkconfig --add redis_6379
chkconfig redis_6379 on
chkconfig --add keepalived
chkconfig keepalived on
主测试
关闭redis 服务或者杀死进程
service redis_6379 stop
killall -9 redis-server
service keepalived stop
killall -9 keepalived
查看主从Keepalived日志
tailf /var/log/keepalived-redis-state.log
从服务器查看
redis-cli -h 172.16.19.13 INFO 或者 redis-cli info Replication
从服务器测试虚拟IP是否正常
redis-cli -h 172.16.19.199 INFO
阅读全文
0 0
- Centos 6.9 Redis ---Keepalived 高可用主从切换
- Keepalived实现redis的主从切换高可用原理详解
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis 高可用redis主从解决方案
- keepalived+redis高可用redis主从解决方案
- redis高可用:keepalived+redis主从部署
- 使用keepalived 实现redis主从高可用
- 使用keepalived 实现redis主从高可用
- redis+keepalived,实现主从高可用
- keepalived实现redis主从高可用
- Redis主从配置及通过Keepalived实现Redis自动切换高可用
- KeepAlived+Redis | 高可用 | 主从复制 | 健康检查 | 故障自动切换
- Redis主从配置及使用KeepAlived实现Redis高可用
- Redis主从配置及使用KeepAlived实现Redis高可用
- 一步一步搭建Redis + Keepalived主从高可用之原理(一)
- redis实现主从复制和高可用(主从切换)
- Lua笔记【3】
- 生日蛋糕(BFS)
- 毕业后第一个月工作
- 数据库索引详解
- Revit 进阶 之 不基于Revit提供的IExportContext接口提取交换数据
- Centos 6.9 Redis ---Keepalived 高可用主从切换
- ccf画图
- [PAT乙级]1063. 计算谱半径(20)
- Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
- 锚点滚动效果
- Layer 弹出层在ie8下 错乱的解决办法 亲测完美解决
- js只能输入数字和小数点的文本框
- 自定义组件(三)
- 【学习】kudu、Impala、交互式查询