大概有一年多没写博客,笔头生疏了许多,真是缺乏积累了;最近一直在使用redis,晚上不加班的时候抽空把平常的安装运维过程总结下,方便后面使用时直接查看笔记:
1、安装环境:
RedHat Linux5.5 64bit
2、软件版本:
Redis-2.8.7
3、部署架构:
目前redis框架为两台服务器做主从,当Msater服务异常后由sentinel选举由从服务器切换成主服务器对外提供服务。为了确保主从顺利切换,在二台物理机方案下须保证从服务器的sentinel进程为2。
3、安装方法:
3.1、创建redis系统用户
[root@ngix ~]# groupadd redis [root@ngix ~]# useradd redis redis [root@ngix ~]# passwd redis
3.2、以redis登录系统,并创建目录/home/redis/yourAppHome
[root@ngix ~]# su - redis [redis@ngix ~]$ mkdir yourAppHome
3.3、在目录下解压Redis,并复制一份做sentinel
[redis@ngix ~]$ tar zxvf redis-2.8.7.tar.gz [redis@ngix ~]$ cp -R redis-2.8.7 sentinel_redis-2.8.7
3.4、安装
[redis@ngix ~]$ cd redis-2.8.7 [redis@ngix redis-2.8.7]$ make [redis@ngix ~]$ cd ../sentinel _redis-2.8.7 [redis@ngix ~]$ make注:如安装出现问题,一般为缺少依赖包,按系统错误提示安装相应包重新安装即可。
4、配置修改
4.1、修改redis.conf配置项
4.1.1、修改为后台运行
daemonize yes 2、指定后台运行文件 pidfile /home/redis/cpp/redis_testapp_6389.pid 3、指定端口 port 6389 4、绑定IP bind 10.244.19.91 5、设定日志输出级别(默认notice) loglevel notice 6、设置日志输出文件路径 logfile /home/redis/cpp/redis_testapp_6389.log 7、设置最大内存10G maxmemory 10737418240 8、内存不够时按照LRU算法清除数据 maxmemory-policy allkeys-lru 9、master上同时开启Snapshot和AOF来进行持久化,保证数据的安全性 save 900 1 save 300 10 save 60 10000 根据项目需求有选择性的打开持久化功能,关闭持久化只需要把save注释即可 10、启用AOF appendonly yes 根据项目需求有选择性的打开持久化功能,关闭持久化只需要把appendonly值设置为 no 11、AOF文件的名称 appendfilename appendonly.aof 12、每秒钟强制写入磁盘一次 appendfsync everysec 13、在日志重写时,不进行命令追加操作 no-appendfsync-on-rewrite yes 14、当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程 auto-aof-rewrite-percentage 100 15、启动新的日志重写过程的最小值 auto-aof-rewrite-min-size 64mb 16、配置从服务器时开启(主服务不需要设置该项) slaveof 22.104.102.202 6389
其他配置项暂时不做修改
4.1.2、修改sentinel.conf配置项
1、指定端口 port 26389 注:同一台机器上要设置不同的端口,如:27389 2、指定监控的 redis master sentinel monitor mymaster 22.104.102.203 6389 2 3、5秒钟收不到redis master 的回应,就认为redis master 处于S_DOWN 状态 sentinel down-after-milliseconds mymaster 5000 4、启动故障自动转移功能(新版本好像不需要配置了) sentinel can-failover mymaster yes 5、故障自动转移超时为60秒 sentinel failover-timeout mymaster 60000 6、除了sentinel认为master故障,还最低需2个slave确定master故障了,才认定master故障了,可以进行自动故障转移。 sentinel parallel-syncs mymaster 2
4.1.3、启动
(1) 启动主服务器
[redis@ngix redis-2.8.7]$ src/redis-server redis.conf [redis@ngix redis-2.8.7]$ src/redis-sentinel sentinel.conf &(2) 启动从服务器
[redis@ngix redis-2.8.7]$ src/redis-server redis.conf [redis@ngix redis-2.8.7]$ src/redis-sentinel sentinel.conf & [redis@ngix redis-2.8.7]$ cd ../sentinel_ redis-2.8.7 [redis@ngix sentinel_redis-2.8.7]$ src/redis-sentinel sentinel.conf &
(3) 停止
[redis@ngix redis-2.8.7]$ ps -ef|grep 6389 redis 8711 1 47 16:45 ? 01:58:21 src/redis-server 22.104.102.203:6389 redis 8721 1 0 16:46 ? 00:00:02 src/redis-sentinel *:26389 redis 17907 16598 0 20:56 pts/3 00:00:00 grep 6389 [redis@ngix redis-2.8.7]$ kill -9 8711 8721