redis的主从搭建和密码配置

目录

  • 主从的概念
  • 主从的配置
        • 配置主服务器 master
        • 配置从服务器slave
        • 查看主从关系
        • 验证主从读写功能master(读写)slave(只读)
  • redis主从搭建与集群搭建密码的配置

主从的概念

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

主从的配置

  • 配置主服务器 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

你可能感兴趣的:(redis,linux,redis,数据库,centos,python)