大数据开发:Redis主从架构搭建

之前我们陆续对Redis入门(大数据开发:Redis入门简介),Redis集群环境搭建(大数据开发:Redis集群环境搭建流程详解)都做了介绍,今天的大数据开发学习分享,我们来接着讲,Redis主从架构的搭建。
 

大数据培训:Redis主从架构搭建


本次示例,准备搭建的是主从架构( Master/Slave )中的一主两从模式;其中 Master 为 Redis 的主服务器,主要负责写操作,两个 Slave 为 Redis 的从服务器,主要负责读操作,该架构最终可以实现主从复制和读写分离,架构图如下:
 

大数据培训:Redis主从架构搭建


搭建步骤

这里采用在一台虚拟机上启动多个 Redis 服务,模拟多个 Redis 服务器环境(与实际生产环境中相比,基本配置几乎相同,仅 IP 地址和端口号不同)

第一步:修改 redis.conf 配置文件

将 redis.conf 配置文件复制三份,通过修改端口分别模拟三台 Redis 服务器

[root@dtinone2 redis-5.0.9]# cp redis.conf 6379redis.conf
[root@dtinone2 redis-5.0.9]# cp redis.conf 6380redis.conf
[root@dtinone2 redis-5.0.9]# cp redis.conf 6381redis.conf
分别对 6379redis.conf、6380redis.conf 和 6381redis.conf 三份配置文件进行修改


注:以下以 6379redis.conf 配置修改为例,其他两个配置文件修改方式相似(唯一区别是端口号不同)

1)将默认的 daemonize no 修改为 daemonize yes,表示指定 Redis 以守护进程的方式启动(后台启动)

daemonize yes


2) 配置 pidfile 文件路径, 表示当 Redis 作为守护进程运行的时候,它会把 pid 进程号默认写到 pidfile 文件里面

pidfile /var/run/redis_6379.pid


3) 配置 port 端口号(其他两个配置文件的端口号分别为 6380 和 6381)

port 6379


4)配置 log 文件名

logfile "6379.log"


5) 配置rdb文件名

dbfilename dump_6379.rdb


注:再依次修改 6380redis.conf 、6381redis.conf 两个配置文件,则配置完毕。

第二步:分别启动三个 Redis 服务

启动时一定要分别加载三个 Redis 配置文件,如下:

[root@dtinone2 redis-5.0.9]# ./redis-server ../6379redis.conf
[root@dtinone2 redis-5.0.9]# ./redis-server ../6379redis.conf
[root@dtinone2 redis-5.0.9]# ./redis-server ../6379redis.conf


通过命令查看三个 Redis 后台服务是否启动,如下:

[root@dtinone2 redis-5.0.9]# ps -ef | grep redis             
root       1991      1  0 04:46 ?        00:00:05 ./redis-server *:6379          
root       1996      1  0 04:46 ?        00:00:04 ./redis-server *:6380          
root       2001      1  0 04:46 ?        00:00:04 ./redis-server *:6381          
root       2559   1819  0 05:28 pts/0    00:00:00 grep redis


以上显示三个 Redis 服务已全部启动成功

第三步:启动 Redis 客户端

-p 选项:表示设置客户端连接的 Redis 服务器的端口号

[root@dtinone2 redis-5.0.9]# ./redis-cli -p 6379


注:以上命令表示启动客户端连接监听端口为 6379 的 Redis 服务器(如需连接其他两个 Redis 服务器,只需要修改 -p 选项后面的端口号即可)

第四步:查看 Redis 服务器的主从关系

info replication 命令:用于查看 Redis 服务器主从关系

127.0.0.1:6379> info replication
# Replication
role:master   #表示该 Redis 服务器是主服务器
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=3875,lag=0
slave1:ip=127.0.0.1,port=6380,state=online,offset=3875,lag=1
master_replid:01db272d607cc12eb5717104bae4bcf53490856c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3875
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3875


继续查看端口号为 6380和 6381 的 Redis 服务器,结果显示三个 Redis 服务器的 role 都是 Master,也就是都是主服务器。

第五步:设置端口号 6380 和 6381 两个服务器为从服务器

通过客户端连接端口号为 6380 的 Redis 服务器

[root@dtinone2 redis-5.0.9]# ./redis-cli -p 6380


设置端口号为 6380 的 Redis 服务器为 端口号 6379 的 Redis 服务器的从服务器

127.0.0.1:6380> slaveof 127.0.0.1 6379
OK


再通过客户端连接端口号为 6381 的 Redis 服务器

[root@dtinone2 redis-5.0.9]# ./redis-cli -p 6381


再设置端口号为 6381 的 Redis 服务器为 端口号 6379 的 Redis 服务器的从服务器

127.0.0.1:6381> slaveof 127.0.0.1 6379
OK


第六步:查看主从关系是否设置成功

使用 info replication 命令查看端口号为 6379 的 Redis 服务器,如下:

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=4701,lag=0
slave1:ip=127.0.0.1,port=6380,state=online,offset=4701,lag=0
master_replid:01db272d607cc12eb5717104bae4bcf53490856c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4701
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4701
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=4701,lag=0
slave1:ip=127.0.0.1,port=6380,state=online,offset=4701,lag=0


以上信息表示当前服务器角色为主服务器,而且有两个从服务器连接,分别是 slave0 和 slave1

使用 info replication 命令查看端口号为 6380 的 Redis 服务器,如下:

127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:4925
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:01db272d607cc12eb5717104bae4bcf53490856c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4925
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:29
repl_backlog_histlen:4897
role:slave
master_host:127.0.0.1
master_port:6379


以上信息表示当前服务器角色为从服务器,它的主服务器端口为 6379

同样,使用 info replication 命令再查看端口号为 6381 的 Redis 服务器,显示结果应该和端口号为 6380 的 Redis 服务器相同。

至此,我们通过命令完成了设置主从架构的搭建。由于设置命令修改的是内存配置,所以一旦 Redis 服务重启,那么服务器之间的角色关系将不复存在,实际生产环境中可以通过 redis.conf 文件来配置,如下:

replicaof 127.0.0.1 6379


第七步:测试主从复制

在 Redis 主服务器执行一个写操作

127.0.0.1:6379> set myname zhangsan
OK


在 Redis 从服务器读取

127.0.0.1:6380> get myname
"zhangsan"

127.0.0.1:6381> get myname
"zhangsan"


第八步:测试主从读写分离

在 Redis 主服务器执行一个写操作和读操作

127.0.0.1:6379> set myname zhansan
OK
127.0.0.1:6379> get myname
"zhansan"


分别在 Redis 从服务器可以执行一个写操作和读操作

127.0.0.1:6380> get myname
"zhansan"
127.0.0.1:6380> set myname lisi
(error) READONLY You can't write against a read only replica.

127.0.0.1:6381> get myname
"zhansan"
127.0.0.1:6381> set myname lisi
(error) READONLY You can't write against a read only replica.


可以看到,主服务器有读写操作,两个从服务器只有读操作,主从读写分离测试成功。

如果想让从服务器也能执行写操作,只需要修改配置文件 redis.conf 中如下配置项:

slave-read-only yes # 表示从服务器仅支持只读操作

注意:从服务器即使支持写操作,其写入的数据是无法同步到主服务器和其他从服务器

第九步:测试主服务器宕机

将 Master 主服务关掉模拟服务器宕机,然后观察从服务器是否发生变化

127.0.0.1:6379> shutdown


查看 Slave 从服务器

# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:322
master_link_down_since_seconds:10
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:18bb9d5dc7016635dd09f21c2fcdcfb5b9b619ba
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:322
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:322127.0.0.1:6380> info replication


以上查看结果为 Master 主服务器挂掉后,Slave 从服务器没有任何改变。

关于大数据开发,Redis主从架构搭建,以上就为大家做了非常详尽的流程介绍了。Redis主从架构的搭建,是学习Redis当中非常关键的一部分,建议跟着教程可以多做实操练习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis主从服务器搭建是一种常见的架构模式,用于提高Redis的可用性和性能。在主从服务器架构中,主服务器负责处理写操作,而从服务器负责处理读操作。 以下是Redis主从服务器搭建的步骤: 1. 安装Redis:首先,在主服务器和从服务器上都需要安装Redis。你可以从Redis官方网站下载并安装Redis。 2. 配置主服务器:在主服务器的配置文件(redis.conf)中,找到并修改以下配置项: - 将`bind`配置项设置为主服务器的IP地址,以允许其他服务器连接。 - 将`protected-mode`配置项设置为`no`,以允许其他服务器连接。 - 将`port`配置项设置为主服务器的端口号。 - 将`daemonize`配置项设置为`yes`,以使Redis以守护进程方式运行。 - 将`logfile`配置项设置为日志文件的路径。 3. 启动主服务器:启动主服务器,确保它正常运行。 4. 配置从服务器:在从服务器的配置文件(redis.conf)中,找到并修改以下配置项: - 将`bind`配置项设置为从服务器的IP地址。 - 将`protected-mode`配置项设置为`no`。 - 将`port`配置项设置为从服务器的端口号。 - 将`daemonize`配置项设置为`yes`。 - 将`logfile`配置项设置为日志文件的路径。 - 将`slaveof`配置项设置为主服务器的IP地址和端口号,例如:`slaveof <主服务器IP> <主服务器端口号>`。 5. 启动从服务器:启动从服务器,确保它正常连接到主服务器。 6. 验证主从复制:在主服务器上执行写操作,然后在从服务器上执行读操作,确保数据同步正常。 7. 配置持久化:为了保证数据的持久性,你可以在主服务器和从服务器上配置RDB快照或AOF日志持久化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值