Redis、Sentinel集群环境搭建

来源:互联网 发布:java servlet菜鸟 编辑:程序博客网 时间:2024/05/18 21:43

一:安装、配置redis

1:到redis官网下载最新版的源码。

2:linux下新建目录。

mkdir /usr/local/redis

3:将下载的tar.gz文件上传到该目录。在该目录下解压文件:

tar xzf redis-3.2.1.tar.gz

4:进入解压出来的目录中:cd redis-3.2.1,执行命令进行编译:

make

5:编译完成后进入Src目录,将可执行文件redis-server、redis-benchmark、redis-cli拷贝到上层目录中。
注:最好在redis目录下新建bin目录 ,将可执行文件拷贝到bin目录中

6:将redis.conf、sentinel.conf拷贝到bin目录中,方便redis启动。

7:修改redis默认配置:

 bind xxx.xxx.xxx.xx

指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求。在生产环境中最好设置该项。
如果设置成127.0.0.1,则直接收来自本机的请求。


port 15882

指定redis的运行端口。默认为6379


daemonize yes

默认情况下,redis不是运行在后台的。如果需要在后台运行,把该值更改为yes


pidfile "/var/run/redis_15882.pid"

当redis运行在后台的时候,Redis会默认把pid文件放在”/var/run/redis.pid”,可以配置到其他地址。
当运行多个redis服务时,需要指定不同的pid文件和端口。


loglevel notice

指定日志记录级别,其中Redis总共支持四个级别:debug、verbose、notice、warning。默认为verbose。
debug:记录很多信息,用于开发和测试。
verbose:记录有用的信息,但不像debug会记录那么多。
notice:普通的verbose,常用于生产环境。
warning:只有非常重要或严重的信息才会记录。


 logfile "/opt/redis/log/15882/redis.log"

配置log文件地址,默认为stdout。若后台模式会输出到/dev/null


databases 16

可用数据库数,默认值为16,默认数据库为0。
数据库范围在0~15之间切换,彼此隔离。


save 900 1save 300 10save 60 10000

保存数据到磁盘,格式:save 。指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb。相当于条件触发抓取快照,可以多个条件配合。
save 900 1:900秒内至少有一个key被改变就保存到磁盘


rdbcompression yes

持久化到rdb是否压缩数据,默认为yes


dbfilename "dump.rdb"

本地持久化数据库文件名,默认为dump.rdb


dir "/opt/redis/data/15882"

工作目录,数据库镜像备份的文件存放的路径。这里的路径和文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把临时文件替换为上面指定的文件。而这里的临时文件和上面配置的本分文件都会放在这个指定的路径中,AOF文件也会存放在这个目录下面。
这里必须指定一个目录而不是文件。


slaveof xxx.xxx.xxx.xxx port

主从复制,设置该redis实例为其他redis实例的从数据库。当设置本机为slave服务时,需设置master服务的IP和Port。
在redis启动时,会自动从master进行数据同步。


slave-priority 100

当主master redis实例宕机时,从slave实例切换为master实例的优先级。redis提供三个等级:10, 100, 25
值越小,则优先级越高。


masterauth "password"

当master服务设置了密码保护时,slave服务连接master的密码。


slave-serve-stale-data yes

当从库同主机失去连接或者复制正在进行时,从库有两种运行方式:
slave-serve-stale-data yes:从库会继续响应客户端的请求。
slave-serve-stale-data no:除去INFO和SLAVEOF命令之外的任何请求都会返回一个错误“SYNC with master in progress”


repl-ping-slave-period 10

从库会按照一个时间间隔向主库发送PING,可以通过repl-ping-slave-period 设置时间间隔,默认是10秒。


repl-timeout 60

设置主库批量数据传输时间或者ping回复时间间隔。默认是10秒,一定要确保repl-timeout大于repl-ping-slave-period


requirepass "password"

设置客户端连接后进行任何操作前需要使用密码。因为redis速度非常块,所以在一台比较好的服务器下,一个外部用户可以在1秒内进行150K次的密码尝试,这意味着需要指定非常强大的密码来防止暴力破解。


rename-command CONFIG ""

命令重命名,在一个共享环境下可以重命名相对危险的命令,比如把CONFIG重命名为一个不容易猜测到的字符。
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52。
如果想删除一个命令,直接把它重命名为一个空字符”“即可。rename-command CONFIG “”


maxclients 10000

设置同一时间最大客户端连接数,默认无限制。Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符。
如果设置maxclients 0,表示不限制。当客户端连接数达到限制时,Redis会关闭新的进程并向客户端返回max number of clients reached错误信息。


maxmemory <bytes>

指定Redis最大内存限制。Redis在启动时会把数据库加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将过期的key,Redis同时也会移除空的list对象。当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍可以进行读操作。
注意:Redis新的VM机制,会把key存放内存,value会存放在swap。


maxmemory-policy volatile-lru

当内容达到最大值的时候,Redis会选择删除哪些数据。用五种方式可供选择:
volatile-lru:利用LRU算法移除设置过期时间的key(LRU:Least Recently Used 最近使用)。
allkeys-lru:利用LRU算法移除任何key。
volatile-random:移除设置过期时间的随机key。
allkeys-random:移除一个随机的key。
volatile-ttl:移除即将过期的key(minor ttl)。
noeviction:不移除任何key,只是返回一个写错误。


appendonly yes

默认情况下,Redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。
如果发生诸如拉闸限电,拔插头等状况,那么将造成比较大范围的数据丢失,所以Redis提供了另一种更加高效的数据库备份及灾难恢复方式。
开启appendonly 模式后,Redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中。当Redis重启启动时,会从该文件恢复之前的状态,但是这样会造成appendonly.aof文件过大,所以Redis还支持了BGREWRITEAOF指令对appendonly.aof进行重新整理。
可以同时开启asynchronous dumps和AOF。


 auto-aof-rewrite-percentage 100

当目前AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写。


auto-aof-rewrite-min-size 64mb

允许重写的最小AOF文件大小


appendfilename "appendonly.aof"

AOF文件名,默认为appendonly.aof


no-appendfsync-on-rewrite no

正在导出rdb快照时,是否停止aof同步。
如果设置为yes,在aof rewrite时,将aof策略改为no时,可能会有30s的数据丢失。
如果设置为no,将aof策略改为everysec,将不会出现数据丢失问题。
在BGSAVE或者BGREWRITEAOF,redis会读取这个参数来决定aof写入策略。

appendfsync everysec

Redis支持三种同步AOF文件的策略:
no:写入工作交给操作系统由操作系统判定系统缓冲区大小,统一写入到aof。同步频率低,速度快
always:每一个命令都会立即同步到aof。安全速度慢,I/O耗性能。
everysec:对写操作进行累积,每秒同步一次,默认是“everysec”,按照速度和安全折中这是最好的。

8:启动3个redis实例。最好是在3台linux服务器上,Master配置:bind、requirepass。2个Slave配置:bind、requirepass、slaveof、masterauth、slave-priority等。

9:启动redis实例,指定配置文件地址:redis-sever ./redis.conf

10:客户端连接redis命令:redis-cli -h xxx.xxx.xxx.xxx -p port -a password

11:连接成功后,查看每个redis实例的信息及主从信息,输入命令:info

0 0