如何在CentOS 8上配置Redis复制(replicaiton)(禁用集群模式)

时间:2019-04-29 03:17:15  来源:igfitidea点击:

禁用群集模式的Redis群集有1个节点组(一个主节点,一到两个副本slave)
启用群集模式的Redis群集有两个以上节点组(每个主节点有一到两个副本slave)

测试环境

主:10.42.0.247
从1:10.42.0.21
从2:10.42.0.34

步骤1:在CentOS 8上安装Redis

#dnf install @redis

2.启动Redis服务

# systemctl start redis
# systemctl enable redis
# systemctl status redis

3.检查监听端口

# ss -ltpn | grep redis-server

步骤2:配置Redis主服务器

  1. Redis 配置文件 /etc/redis.conf
# cp /etc/redis.conf /etc/redis.conf.org
# vi /etc/redis.conf
  1. 绑定监听地址
bind 127.0.0.1 10.42.0.247

6.允许与副本通信

protected-mode no

设置监听端口

port 6379
  1. 设置安全密码
requirepass   mima1234
  1. 配置日志

Redis日志文件存储在/var/log/redis/redis.log

loglevel  notice
logfile  /var/log/redis/redis.log
  1. 设置监控进程
supervised systemd

10.重新启动Redis服务

# systemctl daemon-reload
# systemctl restart redis

11.使用redis-cli访问Redis服务器,进行测试

# redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH mima1234
127.0.0.1:6379> client list

12.使用-h和-p选项指定主机和端口后, 可以连接到副本

# redis-cli -h 10.42.0.21 -p 6379
  1. 设置防火墙规则
# firewall-cmd --zone=public --permanent --add-port=6379/tcp 
# firewall-cmd --reload

步骤3:配置Redis从属服务器(Replica/Slave)

  1. 使用redis-cli将Redis实例即时设置为副本
# redis-cli replicaof 10.42.0.247 6379
或者
# redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379
  1. 使复制连接永久化
# cp /etc/redis.conf /etc/redis.conf.org
# vi /etc/redis.conf

16.要允许客户端连接到副本以读取数据

# 在replica1上的内容
bind 127.0.0.1 10.42.0.21

# 在replica2的内容
bind 127.0.0.1 10.42.0.34

将Redis实例设置为副本

  1. 使用copyof将Redis实例配置为副本
replicaof 10.42.0.247 6379

设置副本以对主服务器进行身份验证

  1. 在副本配置中设置密码,用于向主服务器进行身份验证。
masterauth mima1234

19.此外,当副本失去与主数据库的连接时,或者正在进行复制时,副本被配置为答复客户端请求,可能带有“ 过时 的”数据。但是,如果是第一次同步,则数据集可能只是空的。此行为由复制副本-serve-stale-data参数控制。

而且,从Redis 2.6 开始,默认情况下副本是只读的,因此这由副本只读参数控制。您可以进行其他副本配置调整,以适应您的应用程序需求。

  1. 在所有副本上重新启动Redis服务
# systemctl restart redis
  1. 在防火墙中打开端口6379,以允许从主服务器和客户端到副本的连接
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp
# firewall-cmd --reload

步骤4:检查主副本复制状态

  1. 检查是否工作正常。

在主服务器上,运行以下命令。

# redis-cli
127.0.0.1:6379> AUTH mima1234
127.0.0.1:6379> info replication
  1. 检查副本/从属服务器上的复制状态
# redis-cli
127.0.0.1:6379> info replication
  1. 在主实例中设置键值来测试复制,检查数据是否已同步到副本。

在主服务器上,执行以下操作:

# redis-cli
127.0.0.1:6379> AUTH mima1234
127.0.0.1:6379> set domain 'www.tecmint.com'

24.检查数据是否同步到副本。

# redis-cli
127.0.0.1:6379> get domain

保护主实例免受丢失某些写数据的风险

  1. Redis具有一项功能,可使主实例将在没有足够副本可用的情况下丢失某些写入的风险限制为指定的秒数。

这意味着,如果连接的副本数少于N个,且延迟小于或等于M秒,则主机可以停止接受写操作,这分别受min-replicas-to-write和min-replicas-max-lag选项的控制。

在/etc/redis.conf中设置

min-replicas-to-write 2
min-replicas-max-lag 10