redis服务器部署

一、介绍

redis是一个开源的、使用C语言编写的、支持网络、可基于内存也可持久化的日志型Key-Value数据库。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets)和有序集合(sorted sets)等类型。

二、Redis部署

1. 软件下载

wget https://download.redis.io/releases/redis-5.0.10.tar.gz

2. Redis安装

tar fx redis-5.0.10.tar.gz
cd redis-5.0.10/
make && make PREFIX=/usr/local/redis-5.0.10 install
ln -s /usr/local/redis-5.0.10/ /usr/local/redis
mkdir /usr/local/redis/conf
cp redis.conf /usr/local/redis/conf/

3. 配置环境变量

vim /etc/profile

REDIS_HOME=/usr/local/redis
PATH=$REDIS_HOME/bin:$PATH

source /etc/profile

4. 修改配置文件

vim /usr/local/redis/conf/redis.conf

#监听地址,可以写多个以空格分隔
bind 127.0.0.1
#是否开启保护模式
protected-mode yes
#端口
port 6379
#此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度
tcp-backlog 511
#客户端空闲超时时间
timeout 0
#tcp会话保持时间
tcp-keepalive 300
#是否在后台运行
daemonize yes
#和操作系统相关参数可以设置通过upstart和systemd管理Redis守护进程
supervised no
#pid文件路径
pidfile /var/run/redis_6379.pid
#日志级别
loglevel notice
#指定了记录日志的文件
logfile /usr/local/redis/logs/reids.log
#数据库的数量
databases 16
#900s 内如果有 1次 Redis 键值发生改变,就会触发持久化
save 900 1
#300s 内如果有 10次 Redis 键值发生改变,就会触发持久化
save 300 10
#60s 内如果有 10000次 Redis 键值发生改变,就会触发持久化
save 60 10000
#bgsave持久化失败,是否停止持久化数据到磁盘
stop-writes-on-bgsave-error yes
#rdb文件是否压缩
rdbcompression yes
#写入文件和读取文件时是否开启rdb文件检查
rdbchecksum yes
#rdb持久化后存放的文件名
dbfilename dump.rdb
#持久化后文件的存放路径
dir /usr/local/redis
#表示开启AOF持久化,默认为no
appendonly yes
#AOF持久化文件名
appendfilename "appendonly.aof"
##缓冲同步策略
#always:客户端的每一个写操作都保存到aof文件当
#everysec:每秒写入一次aof文件,因此,最多可能会丢失1s的数据。 
#交由操作系统来处理什么时候写入aof文件
appendfsync everysec
#是否重写,默认不重写
no-appendfsync-on-rewrite no
#AOF文件增长率
auto-aof-rewrite-percentage 100
#表示运行AOF重写时文件最小体积,默认为64MB
auto-aof-rewrite-min-size 64mb
#设置密码
requirepass foobared

5. 启动/停止服务

redis-server /usr/local/redis/conf/redis.conf
redis-cli -a foobared shutdown

三、Redis主从复制

1. Redis主从介绍

Master可以拥有多个slave;多个slave可以连接同一个Master外,还可以连接到其他的slave;主从复制不会阻塞Master,在主从复制时,Master可以处理client请求。

2. Redis主从配置

#在从节点上执行
vim /usr/local/redis/config/redis.conf
#连接主节点的IP和端口
replicaof 172.16.120.101 6379
#主节点密码
masterauth foobared

3. 启动服务(从节点)

redis-server /usr/local/redis/conf/redis.conf

四、Redis 哨兵模式

1. 哨兵模式介绍

哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个:监控主机Redis和从机Redis是否运行正常、主机Redis出现故障后自动将从机转化为主机

2. 部署

cp sentinel.conf /usr/local/redis/conf/
vim /usr/local/redis/conf/sentinel.conf

#禁止保护模式
protected-mode no
#端口
port 26379
#修改为后台运行
daemonize yes
#指定PID文件
pidfile /var/run/redis-sentinel.pid
#日志文件
logfile /usr/local/redis/logs/sentinel.log
#配置哨兵工作路径
dir /tmp
#配置哨兵需要监控的主节点ip和端口,1表示哨兵数
sentinel monitor mymaster 172.16.120.101 6379 1
#指定服务器密码
sentinel auth-pass mymaster foobared
#配置多少毫秒后没收到主节点的反馈,则主观认为主节点down了
sentinel down-after-milliseconds mymaster 30000
#指定了在执行故障转移时, 最多可以有多少个slave同时对新的master进行同步
sentinel parallel-syncs mymaster 1
#表示如果30秒后,mysater仍没活过来,则启动failover,从剩下的slave中选一个升级为master
sentinel failover-timeout mymaster 30000

3. 启动服务

redis-sentinel /usr/local/redis/conf/sentinel.conf

五、Redis集群

1. 介绍

Redis 的哨兵和主从模式基本已经可以实现高可用和读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,浪费内存空间,所以在redis上加入了 Cluster 集群模式,实现了 Redis 的分布式存储。在 Redis 的每一个节点上,都有这么两个东西,一个是插槽(slot)它的的取值范围是:0-16383,一个是cluster。

2. ruby安装

wget https://cache.ruby-china.com/pub/ruby/ruby-2.3.1.tar.gz
tar fx ruby-2.3.1.tar.gz
cd ruby-2.3.1/
./configure
make && make install
ln -s /usr/local/bin/ruby /usr/bin/ruby

3. rubygems安装

wget https://rubygems.org/rubygems/rubygems-2.7.7.tgz
tar -zxvf rubygems-2.7.7.tgz
cd rubygems-2.7.7
ruby setup.rb

4. 安装redis和ruby的接口

gem install redis

5. 修改配置文件

vim /usr/local/redis/conf/redis.conf

#启动集群模式
cluster-enabled yes
#集群配置文件
cluster-config-file nodes-6379.conf
#redis节点宕机被发现的时间
cluster-node-timeout 15000

6. 启动Redis服务

redis-server /usr/local/redis/conf/redis.conf

7. 创建集群

redis-cli --cluster create 172.16.120.101:6379 172.16.120.102:6379 172.16.120.103:6379 172.16.120.104:6379 172.16.120.105:6379 172.16.120.106:6379 --cluster-replicas 1 -a foobared
说明:
过程中会根据提示输入yes继续
create: 表示创建一个redis集群
--cluster-replicas: 表示为集群中的每一个主节点指定一个从节点
-a: 指定服务密码

8. 日常操作

#增加从节点
redis-cli --cluster add-node 172.16.120.107:6379 172.16.120.101:6379 --cluster-slave
#删除节点(删除主节点时需要先把主节点的槽位移走)
redis-cli -a foobared cluster nodes
redis-cli --cluster del-node 172.16.120.107:6379 99d2ceb080ef0d701546dea0901d4784a201fc06
#添加主节点(把107高为106的主节点)
redis-cli --cluster add-node 172.16.120.107:6379 172.16.120.106:6379
#重新分配槽位
redis-cli --cluster reshard 172.16.120.107:6379

猜你喜欢

转载自blog.51cto.com/7965676/2633213