安装Redis和哨兵(sentinel)+keepalived模式配置

安装Redis
cd /bea
tar -zxvf redis-5.0.8.tar.gz
cd  redis-5.0.8
cd src && make all (编译)
cd /bea/redis-5.0.8
mkdir install
cd /bea/redis-5.0.8/src
make install PREFIX= /bea/redis-5.0.8/install  (安装) 会安装到install的bin目录下
cd /bea/redis-5.0.8/
cp redis.conf  /bea/redis-5.0.8/install/bin
cd /bea/redis-5.0.8/install/bin
./redis-server ./redis.conf  (启动redis)
ps -ef |grep redis
cd /bea/redis-5.0.8/install/bin/
nohup ./resdis-server ./redis.conf >out.log 2>&1 &  (后台)


哨兵(sentinel)+keepalived
    master:10.97.142.89(xmsmkyhzzjlk06)
    slave:10.97.142.84(xmsmkyhzzjlk01)
    vip:10.97.142.55

参考链接:
https://www.cnblogs.com/cosmos-wong/p/11420194.html
https://blog.csdn.net/a123qwertyuiop/article/details/107957229
https://blog.csdn.net/weixin_38106322/article/details/108525318
https://www.cnblogs.com/flgb/p/10808848.html

https://blog.csdn.net/macro_g/article/details/82593996
https://www.cnblogs.com/kingsonfu/p/10138647.html
部分说明:
    Redis protected-mode属性解读
redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:
1、关闭protected-mode模式,此时外部网络可以直接访问
2、开启protected-mode保护模式,需配置bind ip或者设置访问密码
原文链接:https://blog.csdn.net/macro_g/article/details/82593996
修改sentinel配置文件
vim /usr/local/redis/6379/26379.conf

修改内容:
# 添加守护进程模式
daemonize yes

# 添加指明日志文件名
logfile "/usr/local/redis/6379/sentinel26379.log"

# 修改工作目录
dir "/usr/local/redis/6379"

# 修改启动端口
port 26379

# 添加关闭保护模式
protected-mode no

# 修改sentinel monitor
sentinel monitor macrog-master 192.168.24.131 6379 2

# 将配置文件中mymaster全部替换macrog-master
# 在末行模式下 输入 :%s/mymaster/macrog-master/g

1、master 10.97.142.89:redis.conf配置
[root@xmsmkyhzzjlk06 bin]# grep -E -v "^$|^#" redis.conf
bind 0.0.0.0(只需改这个)
protected-mode no(只需改这个)
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile "/var/run/redis_6379.pid"
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/bea/redis/install/bin"
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
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
aof-use-rdb-preamble 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
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
masterauth "ylzinfo123qazxsw"(只需加这个)
requirepass "ylzinfo123qazxsw"(只需加这个)

#min-slaves-to-write 1 表示只有当1个或以上的slave连接到master,master才是可写的
#min-slaves-max-lag 10 表示允许slave最长失去连接的时间,如果10秒还没收到slave的响应,则master认为该slave以断开

启动命令:./redis-server ./redis.conf >out6379.log &

2、master10.97.142.89:sentinel.conf配置
[root@xmsmkyhzzjlk06 bin]# grep -E -v "^$|^#" sentinel.conf
protected-mode no(只需改这个)
port 26379
daemonize no
pidfile "/var/run/redis-sentinel.pid"
logfile ""
dir "/tmp"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.97.142.89 6379 1
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 702
sentinel monitor xmsmkyhzzjlk06 10.97.142.89 6379 1 (只需改这个) # 最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机,其ip为master的ip以及hostname
sentinel auth-pass xmsmkyhzzjlk06 ylzinfo123qazxsw  (只需改这个) #在redis.conf上配置了密码,则这也需要设置同样的密码 master主密码,不设置的话不能动态切换
# 将配置文件中mymaster全部替换xmsmkyhzzjlk06 (只需改这个)
# 在末行模式下 输入 :%s/mymaster/xmsmkyhzzjlk06/g (只需改这个)
sentinel config-epoch xmsmkyhzzjlk06 598
sentinel leader-epoch xmsmkyhzzjlk06 598
sentinel known-replica xmsmkyhzzjlk06 10.97.142.84 6379
sentinel known-sentinel xmsmkyhzzjlk06 10.97.142.84 26379 c81d8092fef84ca37a9c3c58a623559212c0fa13
sentinel current-epoch 703

启动命令:./redis-sentinel ./sentinel.conf >outsen6379.log &

3、slave10.97.142.84:redis.conf配置
[root@xmsmkyhzzjlk01 bin]# grep -E -v "^$|^#" redis.conf
bind 0.0.0.0(只需改这个)
protected-mode no(只需改这个)
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile "/var/run/redis_6379.pid"
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/bea/redis/install/bin"
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
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
aof-use-rdb-preamble 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
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
masterauth "ylzinfo123qazxsw" (只需改这个)
requirepass "ylzinfo123qazxsw"(只需改这个)
slaveof 10.97.142.89 6379(只需改这个)

启动命令:./redis-server ./redis.conf >out6379.log &

4、slave10.97.142.84:sentinel.conf配置
[root@xmsmkyhzzjlk01 bin]# grep -E -v "^$|^#" sentinel.conf
protected-mode no (只需改这个)
port 26379
daemonize no
pidfile "/var/run/redis-sentinel.pid"
logfile ""
dir "/tmp"
sentinel deny-scripts-reconfig yes
sentinel config-epoch xmsmkyhzzjlk01 0
sentinel leader-epoch xmsmkyhzzjlk01 706
sentinel monitor xmsmkyhzzjlk06 10.97.142.89 6379 1  (只需改这个) ## 最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机,其ip为master的ip以及hostname
sentinel auth-pass xmsmkyhzzjlk06 ylzinfo123qazxsw  (只需改这个)#在redis.conf上配置了密码,则这也需要设置同样的密码。master主密码,不设置的话不能动态切换

# 将配置文件中mymaster全部替换xmsmkyhzzjlk06 (只需改这个)
# 在末行模式下 输入 :%s/mymaster/xmsmkyhzzjlk06/g (只需改这个)
sentinel config-epoch xmsmkyhzzjlk06 598
sentinel leader-epoch xmsmkyhzzjlk06 598
sentinel known-replica xmsmkyhzzjlk06 10.97.142.84 6379
sentinel known-sentinel xmsmkyhzzjlk06 10.97.142.89 26379 024e837f2e4e92e0ad2488d7a7966edd67359056
sentinel monitor mymaster 10.97.142.89 6379 1
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 704
sentinel current-epoch 706

启动命令:./redis-sentinel ./sentinel.conf >outsen6379.log &

5、查看登陆redis命令
[root@xmsmkyhzzjlk01 bin]# /redis-5.0.8/install/bin/redis-cli -c -h 10.97.142.84 -p 6379 -a ylzinfo123qazxsw 2>/dev/null
10.97.142.84:6379> info replication
# Replication
role:slave
master_host:10.97.142.89
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offse
t:1972909
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e2237d6d28a7aab90a9901ec72cac069144ead02
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1972909
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:924334
repl_backlog_histlen:1048576

6、keepalived的配置与redis_check.sh的编写
参考链接:https://blog.csdn.net/weixin_34360651/article/details/91821387
1)    master10.97.142.89:keepalived.conf配置
[root@xmsmkyhzzjlk06 keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id master-node
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_script chk_http_port {      
    script "/etc/keepalived/redis_check.sh"   #只有在检测失败(即exit为非0)时执行以下条件,权重减少,意思是如果在这个脚本执行的结果为exit为非0,会在vrrp实例定义的优先级减去下面的weight值,就表示期望这个节点为备用状态。
    interval 20   #检测间隔时间                
    weight -5    #权重减少                
    fall 1                    
    rise 1                    
}

vrrp_instance VI_1 {
    state  MASTER
    interface eth3
    mcast_src_ip 10.97.142.89
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.97.142.55
    }
   track_script {                      
     chk_http_port                    
   }
}

2)    master10.97.142.89:redis_check.sh配置
[root@xmsmkyhzzjlk06 keepalived]# cat redis_check.sh
#!/bin/bash
ps -ef |grep -E -i -w "6379" | grep -v "grep"
if [ "$?" == "0" ]
then
        sa=`echo "info replication" | /redis-5.0.8/install/bin/redis-cli -c -h 10.97.142.89 -p 6379 -a ylzinfo123qazxsw 2>/dev/null | grep -E -i "role" | cut -f 1 | cut -d ":" -f 2`
    sb=${#sa}
    sh=$(($sb-1))
        if [ "$sh" -eq 5 ]
        then
                exit 1
#        touch /etc/keepalived/down
    else
#        rm -rf /etc/keepalived/down
        exit 0
        fi
else
        sleep 10s
        nohup  /redis-5.0.8/install/bin/redis-server /redis-5.0.8/install/bin/redis.conf >/redis-5.0.8/install/bin/out6379.log &  #重新启动redis
#        rm -rf /etc/keepalived/down
    exit 1
fi
#exit

3)    slave10.97.142.84:keepalived.conf配置
[root@xmsmkyhzzjlk01 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id backup-node
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_script chk_http_port {      
    script "/etc/keepalived/redis_check.sh"   #只有在检测失败(即exit为非0)时执行以下条件,权重减少,意思是如果在这个脚本执行的结果为exit为非0,会在vrrp实例定义的优先级减去下面的weight值,就表示期望这个节点为备用状态。
    interval 20  #检测间隔时间                 
    weight -5    #权重减少                
    fall 1                    
    rise 1                    
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth3
    mcast_src_ip 10.97.142.84
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.97.142.55
    }
   track_script {                      
     chk_http_port                    
   }
}

4)    slave10.97.142.84:redis_check.sh配置
[root@xmsmkyhzzjlk01 keepalived]# cat

#!/bin/bash
ps -ef |grep -E -i -w "6379" | grep -v "grep"
if [ "$?" == "0" ]
then
        sa=`echo "info replication" | /redis-5.0.8/install/bin/redis-cli -c -h 10.97.142.84 -p 6379 -a ylzinfo123qazxsw 2>/dev/null | grep -E -i "role" | cut -f 1 | cut -d ":" -f 2`
    sb=${#sa}
    sh=$(($sb-1))
        if [ "$sh" -eq 5 ]
        then
                exit 1
#        touch /etc/keepalived/down
    else
#        rm -rf /etc/keepalived/down
        exit 0
        fi
else
        sleep 10s
        nohup /redis-5.0.8/install/bin/redis-server /redis-5.0.8/install/bin/redis.conf >/redis-5.0.8/install/bin/out6379.log & #重新启动redis
#        rm -rf /etc/keepalived/down
    exit 1
fi
#exit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yo-ke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值