5.87-PHP中使用Redis
5.88-Redis主从配置
5.89-Redis高可用哨兵介绍
5.87 PHP中使用Redis
5.87.1php安装redis扩展模块
- 使用pecl安装
/usr/local/php-fpm/bin/pecl install redis #过程中保持默认
vi /usr/local/php/etc/php.ini //增加extension = redis.so - 通过源码安装
wget https://github.com/phpredis/phpredis/archive/4.2.0.tar.gz mv 4.2.0.tar.gz php-redis.tar.gz
tar zxvf php-redis.tar.gz
cd phpredis-4.2.0/
/usr/local/php-fpm/bin/phpize
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install
vi /usr/local/php/etc/php.ini //增加extension = redis.so
5.87.2 php中使用redis - 存储session
- 修改php-fpm配置:
vim /usr/local/php-fpm/etc/php.ini//更改或增加
session.save_handler = "redis"//原来这里是"file"
session.save_path = "tcp://127.0.0.1:6379"
如何验证:
/usr/local/php-fpm/bin/php -i |grep session - 或者apache虚拟主机配置文件中也可以这样配置:
php_value session.save_handler "redis"
php_value session.save_path "tcp://127.0.0.1:6379" - 或者php-fpm配置文件对应的pool中增加:
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://127.0.0.1:6379"
5.87.3创建测试文件
wgt http://study.lishiming.net/.mem_se.txt mv .mem_se.txt session.php /usr/local/php/bin/php session.php
5.88Redis主从配置
- 为了节省资源,我们可以在一台机器上启动两个redis服务
cp /etc/redis.conf /etc/redis2.conf
vim /etc/redis2.conf //需要修改port,dir,pidfile,logfile - 还要增加一行
replicaof 127.0.0.1 6379 - 如果主上设置了密码,还需要增加
masterauth aminglinux>com //设置主的密码 - 启动之前不要忘记创建新的dir目录
- 启动从
redis-server /etc/redis2.conf - 测试:在主上创建新的key,在从上查看
注意:redis主从和mysql主从不一样,redis主从不用事先同步数据,它会自动同步过去
5.89Redis sentinel介绍
Redis Sentinel是Redis高可用的实现方案。
Sentinel是一个管理多个Redis实例的工具,它可以实现对Redis的监控、通知、自动故障转移。
5.89.1 Redis Sentinel的主要功能
Sentinel的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移(failover)、主从切换。
Redis的Sentinel最小配置是一主一从。 Redis的Sentinel系统可以用来管理多个Redis服务器,该系统可以执行以下四个任务:
-
监控
Sentinel会不断的检查主服务器和从服务器是否正常运行。 -
通知
当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。 -
自动故障转移
当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将与失效主节点是主从关系的其中一个从节点升级为新的主节点, 并且将其他的从节点指向新的主节点。 -
配置提供者 在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息。
5.89.2 Redis Sentinel的工作流程
-
Sentinel负责监控集群中的所有主、从Redis,当发现主故障时: Sentinel会在所有的从中选一个成为新的主。
并且会把其余的从变为新主的从。
同时那台有问题的旧主也会变为新主的从。
也就是说当旧的主即使恢复时,并不会恢复原来的主身份,而是作为新主的一个从。 -
在Redis高可用架构中,Sentinel往往不是只有一个,而是有3个或者以上。目的是为了让其更加可靠,毕竟主和从切换角色这个过程还是蛮复杂的。
5.89.3 相关概念
-
主观失效 SDOWN(subjectively down),直接翻译的为”主观”失效,即当前sentinel实例认为某个redis服务为”不可用”状态.
-
客观失效 ODOWN(objectively down),直接翻译为”客观”失效,即多个sentinel实例都认为master处于”SDOWN”状态,那么此时master将处于ODOWN,ODOWN可以简单理解为master已经被集群确定为”不可用”,将会开启failover