Linux部署环境搭建(四)Redis:一主二从三哨兵

2 篇文章 0 订阅

一.介绍

首先介绍一下单机、主从、哨兵、集群是啥。

1.单机

顾名思义就是单台数据库,当服务挂掉时,Redis可以通过持久化保存数据,保证了数据重启也能恢复数据。但某天你的硬盘出现故障,所有的数据全部丢失,这就愁人了,于是主从模式出现了。

2.主从

如果每次操作数据时,我们自动将数据同步到另一台Redis服务上,这样是不是就避免了单台服务故障导致的数据损失呢!于是主从模式出现,主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库,保留了数据的火种。

这样数据同步到了从服务,主服务挂了,开发者可以选择一个从服务升为主服务,保证系统正常运行。但人又不是24小时能实时监管服务啊,于是哨兵模式出现了。

3.哨兵

哨兵是redis2.8提出的工具,用来实现自动化系统监控和故障恢复功能。哨兵的作用就是监控Redis的运行状况,出现故障时,自从从数据库中选举一个升为主服务。哨兵至少要部署3台,符合半数原则,如5台 或7台。超过一半(不包含一半)存活的时候,才能够选举出leader,才能进行主从的切换功能。

4.集群

即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,将数据分开储存。集群模式至少需要3主3从,当主挂了,大家会投票将从升为主,若是没有从,redis集群就挂了。(本文主要介绍一主二从三哨兵,集群下篇文章再补上)

5.一主二从三哨兵

顾名思义就是1个主服务,2个从服务,3个哨兵服务。这样的搭配可以应对大部分小公司的需求了。

二.环境准备

1.三台服务器。(我这里就用一台做实验,所以需要修改端口号避免冲突)

服务器redis端口哨兵端口
主:172.17.0.10637926379
主:172.17.0.10638926389
主:172.17.0.10639926399

 redis的安装这里就不做介绍了,参考:https://blog.csdn.net/qq_35378008/article/details/95063928

 2.安装好3台redis,我的安装位置是/usr/local下

通过mv  redis-5.0.5  redis-master给文件重命名,方面区认。

 三.修改主服务

1.修改redis.conf

cd /usr/local/redis-master/

vim redis.conf

# 1. 注释掉此配置,表示所有主机都可以连接此服务。(注意:bind 的作用是绑定本机的网卡对应的IP地址,而非限制只有此ip访问,限制指定ip访问只能通过防火墙限制)
# bind 127.0.0.1

# 2. 保护模式修改为否,允许远程连接
protected-mode no

# 4. 设定密码
requirepass "123456"

# 5. 设定主库密码与当前库密码同步,保证从库能够提升为主库
masterauth "123456"

2.修改sentinel.conf

vim sentinel.conf

#指定监控的master,最后一位表示quorum(法人数量),即认定master'客观下线'成立的最低票数
sentinel monitor mymaster 172.17.0.10 6379 2
#主数据库密码
sentinel auth-pass mymaster 123456

四.修改从服务(2台从)

1.修改redis.conf

# 注释掉,允许任何服务访问
# bind 127.0.0.1

#设置端口号,一个6389,一个6399
prot 6389
# 指定主服务的地址
slaveof 172.17.0.10 6379
# 保护模式修改为否,允许远程连接
protected-mode no
# 设定从服务密码
requirepass "123456"
# 主服务密码
masterauth "123456"

2.修改sentinel.conf

#设置端口号,一台36379,一台46379
prot 36379
#指定监控的master
sentinel monitor mymaster 172.17.0.10 6379 2
#主数据库密码
sentinel auth-pass mymaster 123456

五.启动服务

1.启动服务

进入redis的src目录下

#启动redis
./redis-server ../redis.conf &
#启动哨兵
./redis-sentinel ../sentinel.conf &

查看一下进程Redis:ps -ef | grep redis

2. 查询同步状态

#连接redis
./redis-cli -h 172.17.0.10 -p 6379 -a 123456
#连接成功后输入命令
info replication

主库显示:

从库显示:

 

 六.测试

1.主库写入测试同步

主服务添加K-V值,查看从服务,发现值同步更新到从服务

# 主服务
set b b
# 从服务1
keys *
get b
# 从服务2
keys *
get b

2.从库只读测试

从服务默认为只读模式。

# 从服务1
set c c
# result : (error) READONLY You can't write against a read only slave.
# 从服务2
set c c
# result : (error) READONLY You can't write against a read only slave.

3.测试高可用

关闭主服务,会发现从服务升为主服务。

#关闭主服务
./redis-cli -h 127.0.0.1 -p  6379 -a 123456 shutdown

再剩下两台从服务中添加键值对,有一台会成功。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值