Redis主从复制最佳搭建方案
为了方便学习,我们将本该搭建在三台不同服务器上的Redis放在一台虚拟机上通过启动三个不同端口号的Redis运行。
这里我们以简单的一主二仆为例,并假设我们所有服务器的密码都是password123。
首先,我们在根目录下创建myredis文件夹
cd /
mkdir myredis
然后复制redis.conf文件到 /myredis 文件夹。
cp /etc/redis.conf /myredis/redis.conf
注意:实际操作前两个步骤不需要做,直接修改每台服务器上面redis的配置文件即可。
**为了少写几行代码,这里我们把redis的AOF关掉,即修改redis文件中appendonly的值为no。如果对数据的完整性比较严重,建议开启。**这里,我们修改redis.conf文件如下:
appendonly no
接着我们创建三个conf文件(分别取名redis6379.conf、redis6380.conf、redis6381.conf)。内容如下:(其实有个真实的三台服务器的情况下,主机没啥好配的,记得写个密码加密就行了,端口号最好也记得改一下,我就有过不配密码不改端口号,写博客暴露ip地址导致被攻击的惨痛经历。。。。)
redis6379.conf
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
requirepass password123
redis6380.conf
include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
replicaof 127.0.0.1 6379
requirepass password123
masterauth password123
replica-priority 80
redis6381.conf(作为6380端口的从机,实现薪火相传)
include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
replicaof 127.0.0.1 6380
requirepass password123
masterauth password123
replica-priority 90
介绍一下各个属性:
属性 | 介绍 |
---|---|
include /myredis/redis.conf | 引入/myredis/redis.conf文件的所有配置信息 |
pidfile /var/run/redis_6381.pid | pid文件位置 |
port | redis的端口号 |
dbfilename | 数据库名称(RDB数据库) |
replicaof | 从属于哪台主机 |
requirepass | 本机的密码 |
masterauth | 主机的密码 |
replica-priority | 哨兵模式的权重,值越小,成为主机的优先级越高 |
最后我们还可以整一个Redis的哨兵模式,实现当主机宕机的时候,从机主动切换为主机,防止自家的产品某天主机宕机导致整个产品直接裂开的情况。
在myredis目录下新建一个sentinel.conf文件(不要改他的文件名):
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster password123
解释一下,这里mymaster是为监控对象起的服务器的名称,1是至少有多少个哨兵同意就可以迁移 的数量。
然后开启我们的哨兵:
redis-sentinel sentinel.conf
他的默认端口号是26379。
最后我们启动我们所有的redis服务器即可。