配置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服务。
5:启动成功后分别客户端命令链接redis服务器
6:查看一下当前上台redis服务器的关系:命令:info replication
可以看到都是mater角色。这个时候需要从中取出两台作为slave
命令如下:SLAVEOF MASTERIP MASTERPORT
就可以将其设置为master的两个从机
到此就是实现了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即可查到版本号:
如果是高版本的那么防火墙的有关开启关闭命令就有所变化,通过网上查询我总结了如下的命令即可开启防火墙并开通对外网
访问的端口:
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