前言
- 1. 在三台服务器上分别创建redis配置文件
- 2. 打开三台服务器的防火墙
- 3.启动redis 服务
- 4.检验是否完成主从同步
- 5.检验读写分离
- 总结
本篇博文,将示例搭建redis 一主两从集群。
在搭建之前,了解一下是怎么实现主从之间数据交互的: 启动一台slave 的时候,他会发送一个psync命令给master .
如果是这个slave第一次连接到master,他会触发一个全量复制。master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave的,slave拿到之后做的第一件事情就是写进本地的磁盘,然后加载进内存,然后master会把内存里面缓存的那些新命名都发给slave。
下面逐步介绍搭建主从同步
默认你在三台服务器上都已经安装了redis。(我是在一台上搭建,然后复制了两台。)
本次搭建主从同步集群使用了三台Centos系统服务器。
角色 | IP地址 | 端口 |
master | 192.168.56.85 | 6379 |
slave-1 | 192.168.56.86 | 6379 |
slave-2 | 192.168.56.87 | 6379 |
1. 在三台服务器上分别创建redis配置文件
由于redis的命令都在redis文件夹的src目录下,所以我们需要在src
目录下创建redis配置文件,这样会比较方便。
可以直接使用vi
命令,来创建并编辑。
主服务器上,src
目录下 : vi master.conf
# 配置别的也可以访问.
bind 0.0.0.0
# 配置守护线程
daemonize yes
# 端口,默认6379
port 6379
# 日志输出文件
logfile "6379.log"
slave-1服务器上,src
目录下 : vi slave-1.conf
bind 0.0.0.0
# 配置守护进程
daemonize yes
# 端口,默认6379
port 6379
# 日志输出文件
logfile "slave-1.log"
# 从属于主redis
slaveof 192.168.56.85 6379
slave-2服务器上,src
目录下 : vi slave-2.conf
bind 0.0.0.0
# 配置守护进程
daemonize yes
# 端口,默认6379
port 6379
# 日志输出文件
logfile "slave-2.log"
# 从属于主redis
slaveof 192.168.56.85 6379
2. 打开三台服务器的防火墙
由于我们是在三台服务器上搭建一主两从,所以需要关闭防火墙。
Centos 查看防火墙状态的命令是
systemctl status firewalld.service
Centos关闭防火墙的命令是
systemctl stop firewalld.service
开启防火墙的命令是
systemctl start firewalld.service
3.启动redis 服务
在主服务器上,打开redis服务
./redis-server master.conf
在slave-1服务器上打开redis服务
./redis-server slave-1.conf
在slave-2服务器上打开redis服务
./redis-server slave-2.conf
4.检验是否完成主从同步
可以在src目录下使用过./redis-cli
命令,以客户端的身份连接到redis服务器上。通过 info replication
命令来查看主从配置信息。
同样在从redis服务器上分别检查
5.检验读写分离
redis 主从同步搭建完毕之后,会默认使用读写分离,即主redis读,从redis写,我们在主redis上 set 一个key
可以去从redis上get一下试试
可以看到,从redis 无法写,只能读。 并且可以读到主redis 刚才set的数据。
总结
本篇是redis 搭建集群的入门篇,只是实现了最基础的一主两从,在实战中,可能要多主多从 ,并且要配置哨兵。哨兵可以实时监控master是否宕机,若宕机,可以通过投票机制选举出来一个slave来当新的master。
当然,哨兵也是需要配置多个的。