腾讯云使用HAVIP+CVM基于keepalived+redis主从搭建高可用。

腾讯云使用HAVIP+CVM基于keepalived+redis主从搭建高可用。

背景描述:

①、背景说明:

项目上有要求,所有中间件都需要做到高可用,这里需要考虑redis、memcached两个组件的高可用,本篇先将如何做redis的高可用。
redis高可用请参考:Keepalive+redis主从复制实现redis高可用
以上只是在测试环境做的测试!

②、环境准备

服务器:
HAVIP: 10.255.253.83
redis01: 10.255.253.107
redis02: 10.255.253.94
软件:
Keepalived: v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
redis: 3.2.12
注:公有云服务器需要先调研是否支持keepalived。

一、申请HAVIP

CVM架构图
高可用虚拟 IP(HAVIP)是从 VPC 子网 CIDR 分配的一个内网 IP 地址,通常和高可用软件(如 keepalived 或 Windows Server Failover Cluster)配合使用,应用于搭建高可用主备集群场景。
在这里插入图片描述

二、安装、部署redis

主要修改如下参数:

bind 0.0.0.0
requirepass aaaaaaa
masterauth aaaaaaa

其他参数默认
详细配置文件如下:

[root@localhost ~]# cat /etc/redis.conf |grep -v '#'|grep -v '^$'
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 96
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
masterauth aaaaaaa
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
requirepass aaaaaaa
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
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
hz 10
aof-rewrite-incremental-fsync yes

三、安装、部署、调试keepalived

[root@VM-253-107-centos script]$ cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   router_id redis01
}
vrrp_script chk_redis
{
     script "/bin/bash /data/keepalived/script/redis_check.sh 10.255.253.107 6379 aaaaaaa"   ## 修改auth为密码
     interval 2
     timeout 2
     fall 3
}
vrrp_instance redis {
    state BACKUP   ##两台都是BACKUP角色
    interface eth0   ##需要修改为实际网卡名称
    virtual_router_id 77
    nopreempt      # 设置keepalived为不抢占模式需要添加该参数
    priority 90          ##权重,数字越大权重越大,主节点数值大于备节点
    advert_int 1
    unicast_src_ip 10.255.253.107  # 设置本机内网IP地址
    unicast_peer {
          10.255.253.94             # 对端设备的 IP 地址
    }
    authentication {   #all node must same
        auth_type PASS
        auth_pass xxxxxxxx
    }
    virtual_ipaddress {
        10.255.253.83     ##需要修改为实际分配的虚拟IP
    }
    track_script {
         chk_redis
    }
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送 ARP 报文的时间间隔
    notify_master "/bin/bash /data/keepalived/script/redis_master.sh 127.0.0.1 10.255.253.94 6379 aaaaaaa"     ## 172.18.40.174 6379需要修改为实际的远端主机IP   ## 修改auth为密码
    notify_backup "/bin/bash /data/keepalived/script/redis_backup.sh 127.0.0.1 10.255.253.94 6379 aaaaaaa"     ## 172.18.40.174 6379需要修改为实际的远端主机IP   ## 修改auth为密码
}

四、测试高可用集群。

①、测试redis主从复制是否正常。
②、停止一台redis,看看keepalived是否会把异常redis服务拉起来。
③、停止keepalived服务,看看另外一台状态是否会变为Master,并且redis是否变成主Master服务器。

腾讯HAVIP参考:https://cloud.tencent.com/document/product/215/20186
阿里云HAVIP参考:https://help.aliyun.com/document_detail/184485.htm?spm=a2c4g.11186623.0.0.370c84a2IlIAe4#task-1938181
阿里云HAVIP还在公测阶段,目前需要提交申请才能使用!


版权声明:本文为xjjj064原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。