首页 > 数据库 >redis部署手册_20221129

redis部署手册_20221129

时间:2023-01-04 18:00:19浏览次数:214  
标签:00 20221129 redis 手册 6379 repl master logfile

1. 软件版本及下载

Keepalived: https://www.keepalived.org/download.html

Redis下载地址:https://redis.io/download/

本次安装版本:

Redis:7.0.5

Keepalived:2.2.7

2. 主机优化

2.1. 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.2. 关闭安全加固(SELinux)

setenforce 0

将/etc/selinux/config文件中的SELINUX=enabled修改为SELINUX=disabled

2.3. 配置虚拟内存使用策略

vi /etc/sysctl.conf

vm.swappiness=1
vm.overcommit_memory = 1 

--生效

sysctl -p

说明:这块先温和些,暂不disable。目前最新的联机文档是6.2,建议disable swap

From 6.2文档

Swap space is used by the Linux OS to help manage memory (pages) by copying pages from RAM to disk and the OS is configured by default to be fairly aggressive. For Redis Enterprise Software (RS) with the way it utilizes and manages memory, it is best to eliminate the likelihood of the OS swapping. If you would like to understand why, please read more on memory limits for best functionality and performance. The formal recommendation is to disable Linux swap completely in the OS.

2.4. 设置文件句柄

vi /etc/security/limits.conf
redis soft nofile 100240
redis hard nofile 100240

2.5. 关闭透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled

2.6. 检查服务器时间时区

[root@rac19c1 ~]# timedatectl status
   Local time: 三 2022-11-23 23:23:04 CST
 Universal time: 三 2022-11-23 15:23:04 UTC
   RTC time: 三 2022-11-23 15:23:04
   Time zone: Asia/Shanghai (CST, +0800)
   NTP enabled: yes
   NTP synchronized: yes
   RTC in local TZ: no
   DST active: n/a`

3. Redis单实例部署

3.1. 创建用户和环境变量

groupadd -g 1300 redis
useradd -u 1300 -g redis redis
echo "redis"|passwd redis –stdin

3.2. 解压缩并安装

mkdir /redis

tar zxf redis-7.0.5.tar.gz -C /redis
cd redis-7.0.5/
make

这个地方,变化下,以后可以放到/use/local/redis下

3.3. 配置参数文件

//注意,requirepass表示密码,根据实际情况替换

mkdir /redis/redis_6379

vi /redis/redis_6379/redis_6379.conf

bind 0.0.0.0
daemonize yes
port 6379
tcp-backlog 1024
timeout 300 
tcp-keepalive 300
databases 16
requirepass 123456
pidfile "/redis/redis_6379/redis.pid"
loglevel notice 
logfile "/redis/redis_6379/redis.log"
dbfilename "dump.rdb"
dir "/redis/redis_6379"
maxclients 100000
maxmemory 162144kb
maxmemory-policy allkeys-lru
save 900 10
save 300 10
save 60 10000
slave-read-only yes
slave-serve-stale-data yes
repl-disable-tcp-nodelay no
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
aof-load-truncated yes
no-appendfsync-on-rewrite no
aof-rewrite-incremental-fsync yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 4mb

3.4. 创建并修改目录和文件权限

chown -R redis.redis /redis

3.5. 修改密码

Redis默认是没有提供密码的,通过修改配置文件可以打开访问控制,我们自定的参数文件中将密码认证注释掉了,

[root@rac19c2 redis]# cat redis_6379/redis_6379.conf |grep requirepass

#requirepass 123456

3.6. 数据库启动

su - redis

/redis/redis-7.0.5/src/redis-server  /redis/redis_6379/redis_6379.conf

4. 搭建Redis主从复制

4.1. 安装redis

Ø 同一台主机部署

按照2中单实例方式安装,但要注意这几点:

(1)部署在同一台机器上,端口不能相同,并且二进制目录可以公用,配置dir参数和配置文件不同即可

(2)主库先安装,从库redis增加参数

slaveof 127.0.0.1 6379
批量替换配置文件端口信息:
%s#6379#6380#g

Ø 不同主机部署:

按照2中单实例方式安装软件。从库redis增加参数

##设置requirepass和 masterauth前,先检查这2个参数是否设置

requirepass 123456

masterauth 123456

## 从redis 5起,建议使用replicaof

replicaof IP 6379

如:replicaof 10.10.10.241 6379

设置完后,重启redis

4.2. 主从验证

/redis/redis-7.0.5/src/redis-cli

auth 123456
info

主库输出:

# Replication
role:master
connected_slaves:1
slave0:ip=10.10.10.242,port=6379,state=online,offset=224,lag=1
master_failover_state:no-failover
master_replid:1a776c0ba2b19b2a207327f64958507e2b667cc2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:224
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:224

备库输出:

# Replication
role:slave. 
master_host:10.10.10.241
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_read_repl_offset:98
slave_repl_offset:98
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:1a776c0ba2b19b2a207327f64958507e2b667cc2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98

4.3. Replication指标说明

主节点:

role:master:表明这是一个主节点

connected_slaves:1:当前有一个从节点

slave0:ip=10.10.10.242,port=6379,state=online,offset=224,lag=1: 显示了这个从节点的信息,如果有多个从服务,还会有salve1…等等的心思。很明显,这里显示了从节点的ip和端口,state表示从节点的当前的状态。offset用于数据同步,lag表示从节点“落后”了多少数据,lag=0表示主从结点的数据是一致的。

master_replid:1a776c0ba2b19b2a207327f64958507e2b667cc2:master的id值,用于唯一标记一个结点,从节点同步时会记住这个id,同步时会校验主结点的id是否匹配。

master_repl_offset:224:这是一个偏移量,主节点会将新写的数据缓存在一个队里里面,从节点同步时会保存当前同步的偏移量,从节点同步主节点数据时,会将主节点的id和上次保存的偏移量发送给主节点,主节点收到同步请求后,如果id和自己的id相同而且发送来的偏移量比自己记录的偏移小,说明新写的数据没同步,遍将N字节的数据和偏移量+N一并发送给从节点。从节点收到数据后,记住偏移量用于下一次同步使用

从节点:

role:slave:表明此节点是从服务

master_host:master:主节点ip,由于我使用的是docker,在docker实例中,我指定了主节点的hostname为master,而docker的user bridge网络类型为连在这个网络下的主从结点提供了自动DNS服务,所以我配置的master最终会被解析成主节点的ip

master_port:6379:主节点端口

master_replid:1a776c0ba2b19b2a207327f64958507e2b667cc2:主节点的id,注意看主节点的是一致的。

master_repl_offset:3883:偏移量,用于同步数据,同上。

5. Redis高可用

5.1. 高可用说明

5.2. Redis+keepalived配置

5.2.1.keepalived安装

[root@rac19c1 soft]# yum install curl gcc openssl-devel libnl3-devel net-snmp-devel
[root@rac19c1 soft]# tar -zxvf keepalived-2.2.7.tar.gz
[root@rac19c1 ~]# cd keepalived-2.2.7
[root@rac19c1 soft]# ./configure && make && make install

如果configure不加-C的话,默认的安装路径 /usr/local/etc/keepalived

 [root@rac19c1 local]# keepalived -version
 
 Keepalived v2.2.7 (01/16,2022)
 
 Copyright(C) 2001-2022 Alexandre Cassen, <[email protected]>
 Built with kernel headers for Linux 3.10.0
 Running on Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020
 Distro: CentOS Linux 7 (Core)
 configure options:
 
 Config options: LVS VRRP VRRP_AUTH VRRP_VMAC OLD_CHKSUM_COMPAT INIT=systemd
 
 System options: VSYSLOG LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK RTA_VIA IFA_FLAGS NET_LINUX_IF_H_COLLISION LIBIPTC_LINUX_NET_IF_H_COLLISION LIBIPVS_NETLINK IFLA_LINK_NETNSID GLOB_BRACE GLOB_ALTDIRFUNC INET6_ADDR_GEN_MODE SO_MARK

5.2.2.keepalived配置

cp keepalived.conf.sample keepalived.conf

conf配置文件里内容很多,可以只保留如下内容

! Configuration File for keepalived

 

global_defs {
  notification_email {
   [email protected]
   [email protected]
   [email protected]
  }

  notification_email_from [email protected]
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  route_id 19c1
  vrrp_skip_check_adv_addr
  vrrp_strict
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}

vrrp_script chk_redis {
 script "/usr/local/etc/keepalived/scripts/redis-check.sh"
 interval 2
# weight -10
 fall 2
 rise 2
}

vrrp_instance VI_1 {
  state MASTER
  interface ens192
  virtual_router_id 51
  priority 100
#  nopreempt
  advert_int 1
  authentication {
     auth_type PASS
     auth_pass 1111
  }

  virtual_ipaddress {
     10.10.10.240
  }

  track_script {
     chk_redis
  }

  notify_master "/usr/local/etc/keepalived/scripts/redis-master.sh"
  notify_backup "/usr/local/etc/keepalived/scripts/redis-backup.sh"
  notify_fault "/usr/local/etc/keepalived/scripts/redis-backup.sh" 

}

红色背景是相对于模版而言增加的。

以上是keepalived的master端配置,而backup端,需要调整如下:

route_id XXX #MASTER和BACKUP不同

virtual_router_id 51 #同一个实例下,MASTER和BACKUP相同

priority 100 #优先级,同一个实例下,MASTER高于BACKUP,备库这里改成了90

5.2.3.监控脚本配置

Ø redis-master.sh

#!/bin/bash
Redisclit="/redis/redis-7.0.5/src/redis-cli -a 123456"
logfile="/usr/local/etc/keepalived/scripts/redis_master_`date '+%Y%m%d%H'`.log"
echo "***************************`date`****[begin master]*****************************************" >> $logfile
ps -ef|grep redis-server  >> $logfile

killall -0 redis-server

if [ $? == 1 ];then
   echo "redis server is not running and begin to startup">>$logfile
   su - redis -c "redis-server  /redis/redis_6379/redis_6379.conf"
   if [ $? == 1 ];then
      echo "startup failed and exits script" >>$logfile
      exit 1
   fi
   sleep 3
fi

$Redisclit ping
if [ $? == 1 ];then
   echo "redis server is exists and ping is not success">>$logfile
   echo "kill redis process and begin to startup ">>$logfile
   killall -9 redis-server
   su - redis -c "redis-server  /redis/redis_6379/redis_6379.conf"
   if [ $? == 1 ];then
      echo "startup failed and exits script">>$logfile
      exit 1
   fi
fi

sync=`$Redisclit info replication|grep master_sync_in_progress|awk -F: '{print $2}'|sed 's/\r//'`
if [ $? == 1 ];then
  echo "exec command is failed :$Rediscli info replication" >> $logfile 2>&1
  exit 1
fi

echo $sync
echo "-------------------`date`---------------change to master-------------------" >> $logfile 2>&1

if [ $sync == 0 ]; then :
    echo "the master_sync_in_progress is 0 and excute slaveof no one" >>$logfile 2>&1
    $Redisclit slaveof no one
elif [ $sync == 1 ]; then :
    sleep 10
    $Redisclit slaveof no one
else
    echo "the host is master,do nothing" >>$logfile
fi

echo "***************************`date`****[end master]*****************************************" >> $logfile

Ø redis-check.sh

#!/bin/sh
Rediscli="/redis/redis-7.0.5/src/redis-cli -a 123456"
logfile="/usr/local/etc/keepalived/scripts/redis_check_`date '+%Y%m%d%H'`.log"
echo "***************************`date`****[Begin Check Redis server]*****************************************" >> $logfile

killall -0 redis-server

if [ $? == 1 ];then
      echo "Failed:Redis server is not startup ,so return 1 and keepalive will swich;" >> $logfile 2>&1
      exit 1
fi

result=$($Rediscli ping)

if [ $? == 1 ];then
   echo "Failed:the result is down " >> $logfile 2>&1
   exit 1
else
   echo $result
   echo "-------------------redis-check-------------------" >> $logfile
   if [ $result == "PONG" ]; then :
      echo "Success: the result is $result" >> $logfile 2>&1
      exit 0
   else
      echo "Failed:the result is $result " >> $logfile 2>&1
      exit 1
   fi
fi
echo "***************************`date`****[End Check Redis server]*****************************************" >> $logfile

Ø redis-backup.sh

#!/bin/bash
Ip="10.10.10.242"
Redisclit="/redis/redis-7.0.5/src/redis-cli -a 123456"
logfile="/usr/local/etc/keepalived/scripts/redis_backup_`date '+%Y%m%d%H'`.log"

echo "***************************`date`****[begin backup]*****************************************" >> $logfile
ps -ef|grep redis-server     >> $logfile
result1=`killall -0 redis-server`
if [ $result1 == 1 ];then
   echo "redis server is not running and begin to startup">>$logfile
   su - redis -c "redis-server  /redis/redis_6379/redis_6379.conf"
   if [ $? == 1 ];then
      echo "startup failed and exits script" >>$logfile
      exit 1
   fi
   sleep 3
fi

result2=$($Redisclit ping)
if [ $? == 1 ];then
   echo "redis server is exists and ping is not success">>$logfile
   echo "kill redis process and begin to startup ">>$logfile
   killall -9 redis-server
   su - redis -c "redis-server  /redis/redis_6379/redis_6379.conf"
   if [ $? == 1 ];then
      echo "startup failed and exits script">>$logfile
      exit 1
   fi
fi

echo "Being slave...." >>$logfile
sleep 10
echo "backup Run SLAVEOF cmd ...">> $logfile
$Redisclit slaveof $Ip 6379 >>$logfile
echo "***************************`date`****[end backup]*****************************************" >> $logfile

注意:Ip=“10.10.10.242”, 这个地方,主节点的脚本写备节点的ip,备节点的脚本写主节点的ip

5.2.4.Keepalived启动

[root@rac19c1 keepalived]# systemctl start keepalived
[root@rac19c1 keepalived]# ps -ef |grep keep
root   3474   1 0 23:43 ?    00:00:00 /usr/local/sbin/keepalived -D
root   3475 3474 0 23:43 ?    00:00:00 /usr/local/sbin/keepalived -D
root   3476 3474 0 23:43 ?    00:00:00 /usr/local/sbin/keepalived -D
root   3711 3201 0 23:44 pts/0  00:00:00 grep --color=auto keep 

主节点

[root@rac19c1 keepalived]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever

2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  link/ether 00:0c:29:2f:fb:1f brd ff:ff:ff:ff:ff:ff
  inet 10.10.10.241/24 brd 10.10.10.255 scope global noprefixroute ens192
    valid_lft forever preferred_lft forever
    inet 192.168.200.16/32 scope global ens192
    valid_lft forever preferred_lft forever
  inet6 fe80::5439:4b14:deb2:ad3e/64 scope link noprefixroute
   valid_lft forever preferred_lft forever

备节点

[root@rac19c2 keepalived]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever

2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  link/ether 00:0c:29:49:23:b6 brd ff:ff:ff:ff:ff:ff
  inet 10.10.10.242/24 brd 10.10.10.255 scope global noprefixroute ens192
    valid_lft forever preferred_lft forever
  inet6 fe80::20c:29ff:fe49:23b6/64 scope link
    valid_lft forever preferred_lft forever

5.2.5.Keepalived conf说明

参考:https://www.cnblogs.com/coprince/p/6738710.html

5.3. Redis+keepalived模拟切换

5.3.1.切换前检查

主节点:

[redis@rac19c1 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2f:fb:1f brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.241/24 brd 10.10.10.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet 10.10.10.240/32 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::5439:4b14:deb2:ad3e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2f:fb:29 brd ff:ff:ff:ff:ff:ff
    inet 10.10.11.241/24 brd 10.10.11.255 scope global noprefixroute ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:fb29/64 scope link
       valid_lft forever preferred_lft forever
[redis@rac19c1 ~]$
[redis@rac19c1 ~]$ redis-cli -a 123456 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:1
slave0:ip=10.10.10.242,port=6379,state=online,offset=630,lag=0
master_failover_state:no-failover
master_replid:bf7b4abc2b9b3a0abc4bd7b38842b1f14088ad88
master_replid2:4866ba082edcf49e4dc18c6f6bd679a6a735bf62
master_repl_offset:630
second_repl_offset:295
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:239
repl_backlog_histlen:392

可以看到主节点的vip和redis的role都正常,都是主角色。

备节点:

[redis@rac19c2 ~]$ redis-cli -a 123456 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:10.10.10.241
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:602
slave_repl_offset:602
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:bf7b4abc2b9b3a0abc4bd7b38842b1f14088ad88
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:602
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:295
repl_backlog_histlen:308

5.3.2.开始切换

本次采用kill 主节点redis进程方式,模拟数据库crash。

原主库:

[redis@rac19c1 ~]$
Nov 29 22:19:05 rac19c1 systemd: Removed slice User Slice of redis.
Nov 29 22:19:07 rac19c1 Keepalived_vrrp[11217]: Script `chk_redis` now returning 1
Nov 29 22:19:09 rac19c1 Keepalived_vrrp[11217]: VRRP_Script(chk_redis) failed (exited with status 1)
Nov 29 22:19:09 rac19c1 Keepalived_vrrp[11217]: (VI_1) Entering FAULT STATE
Nov 29 22:19:09 rac19c1 Keepalived_vrrp[11217]: (VI_1) sent 0 priority
Nov 29 22:19:09 rac19c1 Keepalived_vrrp[11217]: (VI_1) removing VIPs.
Nov 29 22:19:09 rac19c1 su: (to redis) root on none
Nov 29 22:19:09 rac19c1 systemd: Created slice User Slice of redis.
Nov 29 22:19:09 rac19c1 systemd: Started Session c3 of user redis.
Nov 29 22:19:11 rac19c1 Keepalived_vrrp[11217]: Script `chk_redis` now returning 0
Nov 29 22:19:13 rac19c1 Keepalived_vrrp[11217]: VRRP_Script(chk_redis) succeeded
Nov 29 22:19:13 rac19c1 Keepalived_vrrp[11217]: (VI_1) Entering BACKUP STATE

可以看到,原主库OS message有这几个关键输出,redis状态检查失败->keepalived改为FAULT STATE,0 priority、remove vip、自定义脚本拉库、BACKUP STATE。

原备库:

[redis@rac19c2 ~]$
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: (VI_1) Backup received priority 0 advertisement
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: (VI_1) Backup received priority 0 advertisement
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: (VI_1) Receive advertisement timeout
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: (VI_1) Entering MASTER STATE
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: (VI_1) setting VIPs.
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: (VI_1) Sending/queueing gratuitous ARPs on ens192 for 10.10.10.240
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:21:57 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:22:01 rac19c2 systemd: Started Session 27 of user root.
Nov 30 06:22:02 rac19c2 Keepalived_vrrp[7975]: (VI_1) Sending/queueing gratuitous ARPs on ens192 for 10.10.10.240
Nov 30 06:22:02 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:22:02 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:22:02 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:22:02 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240
Nov 30 06:22:02 rac19c2 Keepalived_vrrp[7975]: Sending gratuitous ARP on ens192 for 10.10.10.240

可以看到keepalived状态改为了master state, 并且有了VIP

5.3.3.切换后

新主节点:

[redis@rac19c2 ~]$ redis-cli -a 123456 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:1
slave0:ip=10.10.10.241,port=6379,state=online,offset=742,lag=0
master_failover_state:no-failover
master_replid:9c1a4ab55b26b80a640ff9f6543591846c997b39
master_replid2:bf7b4abc2b9b3a0abc4bd7b38842b1f14088ad88
master_repl_offset:756
second_repl_offset:687
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:295
repl_backlog_histlen:462
 

新备节点:

[redis@rac19c1 ~]$ redis-cli -a 123456 info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:10.10.10.242
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_read_repl_offset:714
slave_repl_offset:714
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:9c1a4ab55b26b80a640ff9f6543591846c997b39
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:714
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:687
repl_backlog_histlen:28

6. 附录

6.1 keepalve启动状态

keepalive所有主机都同时重启时,首先启动的服务器的会执行check脚本,如果此时返回为–1,当keepalive启动完成时,在执行check脚本,如果返回为0时,进入BACKUP状态

标签:00,20221129,redis,手册,6379,repl,master,logfile
From: https://www.cnblogs.com/www-htz-pw/p/17025631.html

相关文章

  • 云redis自定义参数
    云redis自定义参数自定义的参数支持组合排列定义 参数说明支持版本disable-command-list设置禁用命令,用户可根据实际业务需要关闭某些时间复杂度高或危险程......
  • Redis面试题及答案整理(2023最新版)
    **Redis面试题及答案**,适用于应届生、有工作经验的程序员,每道都是认真筛选出的高频面试题,助力大家能找到满意的工作!**Redis**###**下载链接**:[**全部面试题及答案PDF**](ht......
  • DSP+ZYNQ硬件说明手册【XQTyer】
    【开源资料】XQTyer硬件说明手册.pdf链接:https://share.weiyun.com/7TufhN89密码:2f4mvy    XQ6657Z35/45-EVM(XQTyer评估板)是一款基于TIKeyStone架构C6000......
  • 使用Jmeter读取和使用Redis数据
    前言消息队列和缓存是目前主流的中间件,我们在日常测试过程中,无论是接口还是压力测试,都会遇到需要处理这些中间件数据的情况。本文以Redis对缓存做一个简单的介绍,并基于Jme......
  • redis的学习笔记
    Redis只会用缓存?16种妙用让同事直呼牛X  1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据......
  • 基于redis实现的分布式锁
     基于redis实现的分布式锁我们知道,在多线程环境中,锁是实现共享资源互斥访问的重要机制,以保证任何时刻只有一个线程在访问共享资源。锁的基本原理是:用一个状态值表示锁,对锁......
  • nginx+tomcat+redis完成session共享
    nginx安装redis安装准备两个tomcat,修改相应的端口 名称IP端口tomcat版本JDKtomcat110.10.49.2380807.0.401.7.0_25tomcat210.10.49.1580817.0.401.7.0_25 修改nginx.conf......
  • 如何用 Redis 统计用户访问量?
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构等核心......
  • redis常用命令之Hash
    redis常用命令之HashHash常用命令redis可以理解为一个全局的大字典,key就是数据的唯一标识符。对应的key不同,value也不同。redis有5个基本的数据类型。1redis={2......
  • redis集群切换ip
    问题描述根据应用服务日志显示"Noreachablenodeincluster"问题解决01、登录redis服务查看nodes信息clusternodes02、修改node.conf修改正确的主从依赖关系[webl......