redis的主从搭建和密码配置

主从的概念

  • 主Redis写入数据时,从Redis会通过Redis Sync机制,同步数据,确保数据一致。并且Redis有哨兵(Sentinel)机制,Redis主挂掉会自动帮我们提升从为主,不过哨兵我发现只适用一主多从,不太适合级联模式。
  • ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
  • master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
  • 通过主从配置可以实现读写分离
  • master和slave都是一个redis实例(redis服务)
    主从结构图

主从的配置

  • 配置主服务器 master

    这里自己用自己私有的uclude云服务器当做master

  1. 确认关闭所有服务器的防火墙
    关闭防火墙:
    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
  2. 查看master ip
[root@10-23-117-188 ~]# ip addr
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1452 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:fe:c2:c8 brd ff:ff:ff:ff:ff:ff
    inet 11.23.119.188/16 brd 10.23.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fefe:c2c8/64 scope link 
       valid_lft forever preferred_lft forever
[root@10-23-117-188 ~]# 

可以看到ip为: 11.23.119.188(为云服务器默认配的内网ip)

  1. 设置之前的redis.conf文件,自己放在在cd /usr/local/redis-6.0.8/bin下
[root@10-23-117-188 ~]# cd /usr/local/redis-6.0.8/bin/
[root@10-23-117-188 bin]# ls
backup.db  dump.rdb  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis.conf  redis-sentinel  redis-server
[root@10-23-117-188 bin]# 


  1. 打开当前文件夹下的service.conf
vim service.conf
  1. 修改配置
    bind 11.23.119.188 127.0.0.1
    #绑定redis服务器网卡IP,默认为127.0.0.1,即本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接。如果bind选项为空的话,那会接受所有来自于可用网络接口的连接
    == protected-mode no ==
    #保护模式,默认是开启状态,只允许本地客户端连接
    daemonize yes
    #默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
    appendonly yes
    #默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入appendonly.aof文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
    如果需要设置密码,则添加 requirepass 123456(自己的密码)
  2. 重启redis服务器(先杀死进程,在加载配置文件启动)
[root@10-23-117-188 bin]# ps -aux |grep redis
root       7048  0.1  0.5 173316  9688 ?        Ssl  14:35   0:09 ./redis-server 10.23.117.188:6379
root      11323  0.0  0.1 112828  2296 pts/0    R+   16:25   0:00 grep --color=auto redis
[root@10-23-117-188 bin]# kill -9 7048      
[root@10-23-117-188 bin]# ./redis-server ./redis.conf 
You have new mail in /var/spool/mail/root
[root@10-23-117-188 bin]# 

配置从服务器slave

这里用的本地虚拟机centos中的redis服务器

  1. 查看slave ip
[root@localhost ~]# ip addr
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:24:9c:4e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.111/24 brd 192.168.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::7e0f:4e94:3afd:ae55/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

可以看到ip为: 192.168.0.111

  1. 设置之前的redis.conf文件,同样自己放在 /usr/local/redis-5.0.4/bin下
[root@localhost ~]# cd /usr/local/redis-5.0.4/bin/
[root@localhost bin]# ls
dump.rdb  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis.conf  redis-sentinel  redis-server
  1. 打开redis.conf文件
[root@localhost bin]# vim redis.conf
  1. 修改配置
    bind 192.168.0.111 127.0.0.1
    slaveof 106.75.226.106 6379(主节点的ip和端口)
    #此处为自己的云服务对外网的ip,如果你用的是局域网搭建,则写自己局域网master绑定的ip,端口6379
    port 6379
    因为master 服务器设置了密码,所以slave 还需要加上
    masterauth 123456 (验证master的密码,此密码为master的密码
    requirepass 123456 (给slave设置密码,可设置可不设置,自己选择)
  2. 重启redis服务器(先杀死进程,在加载配置文件启动)
查看主从关系
  1. 在master下 输入 redis-cli -h 11.23.119.188 info replication -a 123456(主master密码)
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=111.19.42.76,port=6379,state=online,offset=3458,lag=0
master_replid:22dc694b36c6634f14ef9f1718fd0c8f0b81e1a1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3458
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3458
You have new mail in /var/spool/mail/root
[root@10-23-117-188 bin]# 

  1. 在slave下输入 redis-cli -h 192.168.0.111(slave绑定的ip) -a 123456(从slave密码)
[root@localhost bin]# ./redis-cli -h 192.168.0.111 -p 6379 -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:106.75.226.106
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:4494
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:22dc694b36c6634f14ef9f1718fd0c8f0b81e1a1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4494
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4494
[root@localhost bin]# 

验证主从读写功能master(读写)slave(只读)
  • masert端
[root@10-23-117-188 bin]# redis
127.0.0.1:6379> set name laowang
(error) NOAUTH Authentication required.
127.0.0.1:6379> 

提示没有验证,输入密码即可 auth 123456

127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set name laowang
OK
127.0.0.1:6379> get name
"laowang"
127.0.0.1:6379> 

  • slave端
[root@localhost bin]# redis
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> get name
"laowang"
127.0.0.1:6379> set age 18
(error) READONLY You can't write against a read only replica.
127.0.0.1:6379> 

由上验证了slave端只能读不能写,master端可读可写。


redis主从搭建与集群搭建密码的配置

  1. redis主从

    • 主服务器修改配置文件
      添加
      requirepass redis2020

    • 从服务器修改配置文件
      添加
      masterauth redis2020
      requirepass redis2020

    • 重启主从服务

  2. redis集群

    • 修改每个节点配置文件
      添加
      masterauth redis2020
      requirepass redis2020
    • 重启集群各节点服务
  3. 验证

    • 无密码进入redis测试
      redis-cli -h ip -p port
      之后执行 keys *
      因为已经设置了密码,所以出现下面的错误
      (error) NOAUTH Authentication required.
      使用密码进入就没有问题,如下所示
      redis-cli -h ip -p port -a redis2020
    • 设置密码后,查看集群状态,关闭服务等命令都需要在后边加上密码配置参数
      如查看集群状态
      redis-cli -h ip -p port -a redis2020 cluster nodes
      关闭服务
      redis-cli -h ip -p port -a redis2020 shutdown
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 要在Linux搭建Redis主从复制,需要按照以下步骤进行操作: 1. 安装Redis:在Linux上安装Redis,可以使用apt-get或yum命令进行安装。 2. 配置Redis主服务器:在Redis主服务器上,需要修改redis.conf配置文件,将bind参数设置为主服务器的IP地址,将protected-mode参数设置为no,将slave-read-only参数设置为no,将requirepass参数设置为一个密码,以保证安全性。 3. 启动Redis主服务器:启动Redis主服务器,使用redis-server命令即可。 4. 配置Redis从服务器:在Redis从服务器上,需要修改redis.conf配置文件,将bind参数设置为从服务器的IP地址,将protected-mode参数设置为no,将slave-read-only参数设置为yes,将masterauth参数设置为主服务器的密码。 5. 启动Redis从服务器:启动Redis从服务器,使用redis-server命令即可。 6. 连接Redis主从服务器:在Redis从服务器上,使用redis-cli命令连接Redis主服务器,使用slaveof命令将从服务器设置为主服务器的从服务器。 7. 测试Redis主从复制:在Redis主服务器上,使用set命令设置一个键值对,然后在Redis从服务器上使用get命令获取该键值对,如果能够获取到,则说明Redis主从复制已经成功搭建。 以上就是在Linux搭建Redis主从复制的步骤,需要注意的是,在配置Redis主从服务器时,需要根据实际情况进行修改,以保证配置的正确性。 ### 回答2: Redis是一种开源的key-value数据库,它可以通过主从复制机制提供可靠性和性能增强。在主从复制模型中,有一个主节点和多个从节点,主节点负责处理所有写操作,从节点则复制主节点的数据以实现高可靠性和高可用性。 搭建Redis主从复制可以带来以下好处: 1. 数据冗余:主节点将数据同时推送到不同的从节点上,一旦主节点宕机,从节点可以立即接管服务,保证数据不丢失; 2. 负载均衡:主节点负责写操作,从节点只负责读操作,可以极大程度上减轻主节点的负载,提高系统性能; 3. 读取速度:多个从节点可以并行读取数据,提高读取速度。 下面是Linux搭建Redis主从复制的步骤: 1. 安装Redis:使用yum命令在CentOS Linux上安装Redis。 ``` yum install redis ``` 2. 准备Redis主从复制的配置文件,创建快照目录 ``` mkdir /etc/redis cp /etc/redis.conf /etc/redis/redis-master.conf cp /etc/redis.conf /etc/redis/redis-slave.conf mkdir /var/redis/redis-master mkdir /var/redis/redis-slave ``` 3. 编辑redis-master.conf文件,设置Redis主节点的ip地址、端口、快照目录和持久化策略 ``` bind 127.0.0.1 port 6379 dir /var/redis/redis-master save 900 1 save 300 10 save 60 10000 ``` 4. 编辑redis-slave.conf文件,设置Redis从节点的ip地址、端口、快照目录,以及主从复制的参数 ``` bind 127.0.0.1 port 6380 dir /var/redis/redis-slave slaveof 127.0.0.1 6379 ``` 5. 启动Redis主节点 ``` redis-server /etc/redis/redis-master.conf ``` 6. 启动Redis从节点 ``` redis-server /etc/redis/redis-slave.conf ``` 在实际应用中,主从复制可以大大增强Redis数据库的可靠性和可用性,使得系统更加健壮和高效。需要注意的是,为了保证整个主从复制的过程正确无误,用户需要根据Redis版本和特定目录等不同因素进行相应的调整。 ### 回答3: Redis是一个高性能的key-value存储系统,常用于缓存、队列等场景。为了提高Redis的可用性和稳定性,通常需要搭建Redis主从复制,实现数据的自动备份和高可用。在Linux操作系统上搭建Redis主从复制,可以按照以下步骤操作: 1.安装Redis:在Linux上安装Redis非常简单,可以在终端中输入命令sudo yum install redis,即可安装Redis软件包。 2.配置Redis主服务器:打开Redis主服务器的配置文件/etc/redis.conf,找到bind,将其注释掉;找到requirepass,输入密码并保存配置文件;找到daemonize,将其改为yes。启动Redis主服务器。 3.配置Redis从服务器:打开Redis从服务器的配置文件/etc/redis.conf,找到bind,将其注释掉;找到requirepass,输入主服务器密码并保存配置文件;找到daemonize,将其改为yes;找到slaveof输入主服务器IP和端口号,并保存配置文件。启动Redis从服务器。 4.测试:在主服务器上通过redis-cli命令行输入的set命令设置一个键值对,在从服务器上通过redis-cli命令行输入的get命令获取键值对,如果返回相同的值,说明Redis主从复制搭建成功。 通过以上步骤可实现Redis主从复制的搭建,实现数据的自动备份和高可用。同时,也需要注意Redis主从服务器的配置和运维,保证Redis服务的稳定性和可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值