Keepalived架构高可用的redis数据库缓存服务器
2014-08-20 10:34
477 查看
一. 架构图:
二. keepalived + redis安装
略......
三. 配置文件配置
1. master:
/etc/keepalived/keepalived.conf
/opt/redis/conf/redis.conf
/opt/redis/script/redis_master.sh
/opt/redis/script/redis_backup.sh
/opt/redis/script/redis_check.sh
/opt/redis/script/redis_fault.sh
/opt/redis/script/redis_stop.sh
master-keepalived:
master-redis:
redis检测脚本:
2.slaver
/etc/keepalived/keepalived.conf
/opt/redis/conf/redis.conf
/opt/redis/script/redis_master.sh
/opt/redis/script/redis_backup.sh
/opt/redis/script/redis_check.sh
/opt/redis/script/redis_fault.sh
/opt/redis/script/redis_stop.sh
slave-keepalived:
slave-redis:
keepalived检测脚本:
四.检查
二. keepalived + redis安装
略......
三. 配置文件配置
1. master:
/etc/keepalived/keepalived.conf
/opt/redis/conf/redis.conf
/opt/redis/script/redis_master.sh
/opt/redis/script/redis_backup.sh
/opt/redis/script/redis_check.sh
/opt/redis/script/redis_fault.sh
/opt/redis/script/redis_stop.sh
master-keepalived:
# keepalived.conf # /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL } vrrp_script Monitor_Redis { script "/opt/redis/script/redis_check.sh" ###监控脚本 interval 3 # 每3秒执行一次 #weight -20 } # VIP1 vrrp_instance VI_1 { state BACKUP # 主备服务器都设置成BACKUP interface eth1 virtual_router_id 155 # 主备服务器一致 priority 100 # 备份服务上将100改为90 advert_int 1 # 检查间隔 nopreempt # 设置为不抢占,注意这个配置只能设置在state为BACKUP的主机上,而且这个主机的priority必须比另外一台高 authentication { auth_type PASS auth_pass 1111 } notify_master /opt/redis/script/redis_master.sh notify_backup/opt/redis/script/redis_backup.sh notify_fault /opt/redis/script/redis_fault.sh notify_stop /opt/redis/script/redis_stop.sh track_script { Monitor_Redis # 调用redis进程检测脚本 } virtual_ipaddress { 192.168.98.155/24 dev eth1 # 如果有多个VIP,继续换行填写. } } |
# /opt/redis/conf/redis.conf daemonize yes pidfile /opt/redis/logs/redis1m.pid port 6379 timeout 180 tcp-keepalive 60 loglevel notice logfile /opt/redis/logs/redis1m.log databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /opt/redis/redis-db/ slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 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 10000 slowlog-max-len 128 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-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 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 |
#!/bin/bash # /opt/redis/script/redis_master.sh REDISCLI="/usr/local/bin/redis-cli" LOGFILE="/opt/redis/logs/keepalived-redis-state.log" echo "[master]" >> $LOGFILE date >> $LOGFILE echo "master Being master...." >> $LOGFILE 2>&1 echo "master Run SLAVEOF cmd ..." >> $LOGFILE $REDISCLI -h 192.168.98.53 -p 6379 SLAVEOF 192.168.98.54 6379 >> $LOGFILE 2>&1 sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态 (要和backup.sh里面的延迟时间一直) echo "master Run SLAVEOF NO ONE cmd ..." >> $LOGFILE $REDISCLI -h 192.168.98.53 -p 6379 SLAVEOF NO ONE >> $LOGFILE 2>&1 |
#!/bin/bash # /opt/redis/script/redis_backup.sh REDISCLI="/usr/local/bin/redis-cli" LOGFILE="/opt/redis/logs/keepalived-redis-state.log" echo "backup [backup]" >> $LOGFILE date >> $LOGFILE echo "backup Being slave...." >> $LOGFILE 2>&1 sleep 10 #延迟15秒待数据被对方同步完成之后再切换主从角色 (要和master.sh里面的延迟时间一致) echo "backup Run SLAVEOF cmd ..." >> $LOGFILE $REDISCLI -h 192.168.98.53 -p 6379 SLAVEOF 192.168.98.54 16379 >> $LOGFILE 2>&1 |
#!/bin/bash # /opt/redis/script/redis_check.sh LOGFILE="/opt/redis/logs/keepalived-redis-state.log" ALIVE=`/usr/local/bin/redis-cli -p 6379 PING` if [ "$ALIVE" == "PONG" ] then echo "check $ALIVE alive" >> $LOGFILE exit 0 #(keepalived会根据这个返回值判断自身状态 0:正常,1:非正常状态) else echo "check $ALIVE dead" >> $LOGFILE exit 1 #(keepalived会根据这个返回值判断自身状态 0:正常,1:非正常状态) fi |
#!/bin/bash # /opt/redis/script/redis_fault.sh # 作用为记录状态到日志文件 LOGFILE=/opt/redis/logs/keepalived-redis-state.log echo "fault [fault]" >> $LOGFILE date "fault " >> $LOGFILE |
#!/bin/bash # /opt/redis/script/redis_stop.sh # 作用为记录状态到日志文件 LOGFILE=/opt/redis/logs/keepalived-redis-state.log echo "sstop [stop]" >> $LOGFILE date >> $LOGFILE |
/etc/keepalived/keepalived.conf
/opt/redis/conf/redis.conf
/opt/redis/script/redis_master.sh
/opt/redis/script/redis_backup.sh
/opt/redis/script/redis_check.sh
/opt/redis/script/redis_fault.sh
/opt/redis/script/redis_stop.sh
slave-keepalived:
# keepalived.conf global_defs { router_id LVS_DEVEL } vrrp_script Monitor_Redis { script "/uniapp/users/pards01/script/redis_check.sh" interval 3 # 每3秒执行一次 #weight -20 } # VIP1 vrrp_instance VI_1 { state BACKUP # 主备服务器都设置成BACKUP interface eth1 virtual_router_id 155 priority 90 # 备份服务上将100改为90 advert_int 1 # 检查间隔 nopreempt # 设置为不抢占,注意这个配置只能设置在state为BACKUP的主机上,而且这个主机的priority必须比另外一台高 authentication { auth_type PASS auth_pass 1111 } notify_master /uniapp/users/pards01/script/redis_master.sh notify_backup /uniapp/users/pards01/script/redis_backup.sh notify_fault /uniapp/users/pards01/script/redis_fault.sh notify_stop /uniapp/users/pards01/script/redis_stop.sh track_script { Monitor_Redis # 调用redis进程检测脚本 } virtual_ipaddress { 192.168.98.155/24 dev eth1 # 如果有多个VIP,继续换行填写. } } |
# /opt/redis/conf/redis.conf daemonize yes pidfile /opt/redis/logs/redis1s.pid port 6379 timeout 180 tcp-keepalive 60 loglevel notice logfile /opt/redis/logs/redis1s.log databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /opt/redis/redis-db/ slaveof 192.168.98.53 6379 slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 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 10000 slowlog-max-len 128 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-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 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 |
#!/bin/bash # /opt/redis/script/redis_check.sh LOGFILE="/opt/redis/logs/keepalived-redis-state.log" ALIVE=`/usr/local/bin/redis-cli -p 6379 PING` if [ "$ALIVE" == "PONG" ]; then echo "check $ALIVE" >> $LOGFILE exit 0 else echo "check $ALIVE" >> $LOGFILE exit 1 fi |
#!/bin/bash # /opt/redis/script/redis_master.sh REDISCLI="/usr/local/bin/redis-cli" LOGFILE="/opt/redis/logs/keepalived-redis-state.log" echo "[master]" >> $LOGFILE date >> $LOGFILE echo "master Being master...." >> $LOGFILE 2>&1 echo "master Run SLAVEOF cmd ..." >> $LOGFILE $REDISCLI -h 192.168.98.54 -p 6379 SLAVEOF 192.168.98.53 6379 >> $LOGFILE 2>&1 sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态 echo "master Run SLAVEOF NO ONE cmd ..." >> $LOGFILE $REDISCLI -h 192.168.98.54 -p 6379 SLAVEOF NO ONE >> $LOGFILE 2>&1 |
#!/bin/bash # /opt/redis/script/redis_backup.sh REDISCLI="/usr/local/bin/redis-cli" LOGFILE="/opt/redis/logs/keepalived-redis-state.log" echo "[backup]" >> $LOGFILE date >> $LOGFILE echo "backup Being slave...." >> $LOGFILE 2>&1 sleep 10 #延迟15秒待数据被对方同步完成之后再切换主从角色 echo "backup Run SLAVEOF cmd ..." >> $LOGFILE $REDISCLI -h 192.168.98.54 -p 6379 SLAVEOF 192.168.98.53 6379 >> $LOGFILE 2>&1 |
#!/bin/bash # /opt/redis/script/redis_fault.sh LOGFILE="/uniapp/users/pards01/logs/keepalived-redis-state.log" echo "[fault]" >> $LOGFILE date >> $LOGFILE |
#!/bin/bash # /opt/redis/script/redis_stop.sh LOGFILE="/uniapp/users/pards01/logs/keepalived-redis-state.log" echo "[stop]" >> $LOGFILE date >> $LOGFILE |
keepalived : tail -f /var/log/messsage ----可以查看主机IP地址变化以及keepalived的状态变化 redis: redis-cli -h 192.168.98.155 -p 16379 info redis-cli -h 192.168.98.53 -p 16379 info redis-cli -h 192.168.98.54 -p 16379 info ---> 可以查看各主机的redis状态 role/master/slave |
相关文章推荐
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- [转]数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
- Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- 高可用haproxy调度varnish服务器缓存后端动静分离集群架构
- Redis 高可用: twemproxy实现缓存服务器分片集群
- redis做DB缓存mysql做冗余数据库,memcached主备存储session下的集群高可用方案
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- 使用redis服务器缓存数据库内容
- Linux的企业-Redis数据库、缓存和哨兵Sentinal、Redis高可用
- Nginx+Redis+Ehcache:大型高并发与高可用的三层缓存架构总结
- redis服务器环境下mysql实现lnmp架构缓存
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- redis服务器缓存数据库查询出来的数据
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)