redis的快照和集群部署

来源:互联网 发布:linux kvm命令 编辑:程序博客网 时间:2024/06/05 16:07

1、安装
使用redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install

(1)redis utils目录下,有个redis_init_script脚本
(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
(3)修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
(4)创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
(5)修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf

(6)修改redis.conf中的部分配置为生产环境

daemonize yes 让redis以daemon进程运行
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置
port 6379 设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置

(7)让redis跟随系统启动自动启动

在redis_6379脚本中,最上面,加入两行注释

#chkconfig: 2345 90 10

#description: Redis is a persistent key-value database

chkconfig redis_6379 on

在slave node上配置:slaveof 192.168.1.1(主机ip) 6379(主机端口),即可

也可以使用slaveof命令
(8)rdb和aof的配置
rdb
save 900 1 #每隔900秒,有一条更新就存入dump.rdb
save 300 10#每隔300秒,有10条更新就存入dump.rdb
save 60 10000#每隔60秒,有10000条更新就存入dump.rdb
aof
appendonly yes#把no修改为yes,默认是no
# appendfsync always———————–每次有更新就存入
appendfsync everysec———————–每隔一秒存入,一般使用这个
# appendfsync no—————————-不主动存入,完全依赖操作系统的机制
下面是两个条件满足,就重新写入一个新的aof文件
auto-aof-rewrite-percentage 100—————————达到上次文件的100%,比如上次是100M,达到200M就满足
auto-aof-rewrite-min-size 64mb—————————-如果达到上次的1倍,比如上次30M,这次60M,不满足
2、强制读写分离

基于主从复制架构,实现读写分离

redis slave node只读,默认开启,slave-read-only

开启了只读的redis slave node,会拒绝所有的写操作,这样可以强制搭建成读写分离的架构

3、集群安全认证

master上启用安全认证,requirepass
master连接口令,masterauth
设置
requirepass XXXXXX

slave上设置
masterauth XXXXXX

4、读写分离架构的测试

在搭建生产环境的集群的时候,不要忘记修改一个配置,bind
在配置文件6379.conf中修改bind 127.0.0.1为自己的真实ip
bind 127.0.0.1 -> 本地的开发调试的模式,就只能127.0.0.1本地才能访问到6379的端口

每个redis.conf中的bind 127.0.0.1 -> bind自己的ip地址
在每个节点上都: iptables -A INPUT -ptcp –dport 6379 -j ACCEPT

先启动主节点
再启动从节点

redis-cli -h ipaddr
info replication

在主上写,在从上读
补充:
对redis读写分离架构进行压测,单实例写QPS+单实例读QPS

redis-3.2.8/src

./redis-benchmark -h 192.168.1.107

-c Number of parallel connections (default 50)
-n Total number of requests (default 100000)
-d Data size of SET/GET value in bytes (default 2)