云服务器搭建redis主从复制以及哨兵模式(附踩坑记录)
踩坑记录见最后
搭建一主两从:
-
在根目录下任意新建一个目录/myredis来存放配置文件:
-
将我们常用的redis.conf文件拷贝到该目录下:
-
创建三个配置文件,分别对应不同端口的redis服务:
主机的配置文件
由于我之前使用的是RDB的方式持久化,因此这里只需要更改dbfilename “dump6379.rdb”include /myredis/redis.conf pidfile "/var/run/redis_6379.pid" port 6379 dbfilename "dump6379.rdb"
两个从机的配置文件
注意!这里的replicaof 127.0.0.1 6380 如果将127.0.0.1修改为服务器的ip地址,则一定要在安全组中将该服务器的对应的6380,6381端口放行!!建议初学者这里直接使用127.0.0.1,否则后面会有麻烦!如果有设置密码,则需要加masterauth 你的密码
include /myredis/redis.conf pidfile "/var/run/redis_6380.pid" port 6380 dbfilename "dump6380.rdb" replicaof 127.0.0.1 6380 masterauth 你的密码
-
以不同的配置文件分别启动redis-server,可以开三个窗口能更方便的检测变换。
-
以不同的端口号启动redis-cli
-
在不同的redis客户端查看各个redis的对应信息:
使用命令info replication
主机的部分信息:
从机的部分信息:
-
在主机中测试,发现可以进行读和写,在从机中测试,发现只能读不能写。
这样主从复制就搭建完毕
搭建哨兵模式
-
先创建一个配置文件,命名为sentinel.conf
-
在配置文件中加入一段代码:
如果之前的服务器都设有密码则需要 sentinel auth-pass mymaster (你的密码),如果没有设置密码则不需要该句sentinel monitor mymaster 127.0.0.1 6379 1 sentinel auth-pass mymaster (你的密码)
该Sentinel监控的master(主服务器)的名字叫做mymaster,地址为127.0.0.1:6379
数字1表示 :当一个哨兵主观认为主机断开,就可以客观认为主机故障,然后开始选举新的主机。
-
启动哨兵
redis-sentinel sentinel.conf
-
将主机shutdown
-
此时在查看两个从机:
6380端口对应的redis已经变成了主机
6381端口的主机变为了6380
-
再将6379启动
6379:发现6379变成了6380的从机!新皇登基!
踩坑记录!
主从复制:
- 如果redis的配置文件设置了requiredpass,则在配置从服务器的时候,配置文件需要带上masterauth 你的密码
哨兵模式:
- 如果之前的服务器都设有密码则在写sentinel.conf的时候需要 加上sentinel auth-pass mymaster (你的密码),如果没有设置密码则不需要加。如果不加的话,在开启哨兵模式之后可能无法检测到从服务器。
- 如果redis.conf 保护模式在关闭(protected-mode no),则注释掉ip访问限制(注释掉bind 127.0.0.1)
- 如果redis.conf 保护模式在开启(protected-mode yes),则添加需要的ip访问限制 (bind 需要的ip)
- 在配置主从复制的时候,如果配置从服务器的主服务器IP地址的时候,一定要将服务器的安全组或者防火墙的对应的端口号都打开,否则将不能切换主服务器!
- 在shutdown主服务器之后,哨兵需要等一会才能检测到。