大概有一年多没写博客,笔头生疏了许多,真是缺乏积累了;最近一直在使用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