天天看点

redis主从复制读写分离总结

配置redis主从分离的步骤总结如下:

1:复制三份配置文件redis.conf.分别命名为:reids6379.conf   redis6380.conf   redis 6381.conf

2:修改redis6379.conf

(1)port 6379

(2)pidfile /var/run/redis_6379.pid

(3)logfile "redis6379.log"

(4)dbfilename dump6379.rdb

重点是这里:

bind 127.0.0.1   修改为 bind: 0.0.0.0

3:redis6380.conf 和 redis6381.conf根据上述第二个步骤修改即可。

重点依然是这里:

bind 127.0.0.1 修改为 bind 127.0.0.1 121.196.209.29(当前6380端口所在机器的ip)

bind 127.0.0.1 修改为 bind 127.0.0.1 121.196.209.29(当前6381端口所在机器的ip)

4:分别启动6379 6380 6381三个redis服务。

redis主从复制读写分离总结
redis主从复制读写分离总结
redis主从复制读写分离总结

5:启动成功后分别客户端命令链接redis服务器

redis主从复制读写分离总结
redis主从复制读写分离总结
redis主从复制读写分离总结

6:查看一下当前上台redis服务器的关系:命令:info replication

redis主从复制读写分离总结

可以看到都是mater角色。这个时候需要从中取出两台作为slave

命令如下:SLAVEOF MASTERIP  MASTERPORT

就可以将其设置为master的两个从机  

redis主从复制读写分离总结

到此就是实现了redis服务器的一主两备。主从分离的配置

那么这个时候如果在master存入数据。那么两个slave会自动同步master的数据。实现数据的同步

有两个问题需要注意:

第一:如果master主机挂了后,两个slave正常运行,那么master重新再启动。他依然是master角色,但是如果slave从机挂了再

重新启动。就需要重新执行命令:slaveof masterip masterport变成master的slave

第二:如果master有密码比如:requirepass  123456,那么slave的配置文件中需要添加一行:masterauth 123456

ok! 总结一下自己配置需要的问题。加深理解

第三:如果master主机挂了。那么也可以在剩余的slave中选择一个作为master。选择一个slave。执行命令

slaveof no one.

第四:修改bind 127.0.0.1 ::1  为 bind 0.0.0.0 ::1

reids默认这里配置的是127.0.0.1.意思大概就是只接受本地的请求。这样外网如果想要请求就一直报错。端口6379无法telnet通。

这个坑真是搞了好久。

第五:就是开启防火墙。并为其开通6379端口。首先查看linux系统是cteros6还是7以上版本。我的是7以上的版本

通过命令行:lsb_release -a即可查到版本号:

redis主从复制读写分离总结

如果是高版本的那么防火墙的有关开启关闭命令就有所变化,通过网上查询我总结了如下的命令即可开启防火墙并开通对外网

访问的端口:

1:systemctl status firewalld 结果:Active: inactive (dead)  查看防火墙状态

2: systemctl start firewalld  结果:Failed to start firewalld.service: Unit is masked  开启防火墙,如果失败标识被锁定。

3:systemctl unmask firewalld 结果: Removed symlink /etc/systemd/system/firewalld.service 解锁锁定

4:systemctl start firewalld 结果:active (running) 开启防火墙 ,成功。状态running

5: firewall-cmd --zone=public --add-port=6379/tcp --permanent 结果:success 对外开通6379端口

6:firewall-cmd --reload  结果:success 重新加载防火抢策略

7: firewall-cmd --zone=public --query-port=6379/tcp 结果:yes  查询6379端口开启状态 yes 标识已开启

之后本地应用就可以通过jedis访问服务器的redis