Redis部署文档

Posted 扯不断得红尘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis部署文档相关的知识,希望对你有一定的参考价值。

Redis部署文档

ChangeLog

  • 2019-06-28:by wenjiaqi

    • 默认开启密码

    • 关闭持久化配置

  • 2019-06-10:by wenjiaqi

    • 增加创建密码步骤

一、安装与部署

1. 下载路径

https://redis.io/download

2. 解压编译

//解压
root@ubuntu:/# cd /usr/local
root@ubuntu:/usr/local# tar -xvf redis-4.0.14.tar.gz

//编译
root@ubuntu:/usr/local# cd redis-4.0.14/
root@ubuntu:/usr/local/redis-4.0.14# make

//进入src目录执行安装
root@ubuntu:/usr/local/redis-4.0.14# cd src/
root@ubuntu:/usr/local/redis-4.0.14/src# make install PREFIX=/usr/local/redis

//创建/usr/local/redis/etc目录
root@ubuntu:/usr/local/redis-4.0.14/src# cd /usr/local/redis
root@ubuntu:/usr/local/redis# mkdir etc

//创建日志目录
root@ubuntu:/usr/local/redis# mkdir logs

//拷贝配置文件
root@ubuntu:/usr/local/redis# cp /usr/local/redis-4.0.14/redis.conf ./etc/

3. 启动redis服务

root@ubuntu:/usr/local/redis# ./bin/redis-server ./etc/redis.conf 
2136:C 29 May 23:07:04.636 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2136:C 29 May 23:07:04.637 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=2136, just started
2136:C 29 May 23:07:04.637 # Configuration loaded
2136:M 29 May 23:07:04.638 * Increased maximum number of open files to 10032 (it was originally set to 1024).
              _._                                                  
          _.-``__ \'\'-._                                            
    _.-``   `. `_. \'\'-._           Redis 4.0.14 (00000000/0) 64 bit
.-`` .-```. ```\\/   _.,_ \'\'-._                                  
(   \'     ,       .-` | `,   )     Running in standalone mode
|`-._`-...-` __...-.``-._|\'` _.-\'|     Port: 6379
|   `-._   `._   /     _.-\'   |     PID: 2136
`-._   `-._ `-./ _.-\'   _.-\'                                  
|`-._`-._   `-.__.-\'   _.-\'_.-\'|                                  
|   `-._`-._       _.-\'_.-\'   |           http://redis.io        
`-._   `-._`-.__.-\'_.-\'   _.-\'                                  
|`-._`-._   `-.__.-\'   _.-\'_.-\'|                                  
|   `-._`-._       _.-\'_.-\'   |                                  
`-._   `-._`-.__.-\'_.-\'   _.-\'                                  
    `-._   `-.__.-\'   _.-\'                                      
        `-._       _.-\'                                          
            `-.__.-\'                    

默认情况下,redis不是后台运行的,我们需要把redis放在后台运行,修改配置如下:

//将daemonize改为yes
daemonize yes

//更改日志文件路径
logfile "/usr/local/redis/logs/redis.log"

4. 客户端连接

root@ubuntu:/usr/local/redis/bin# 
root@ubuntu:/usr/local/redis/bin#
root@ubuntu:/usr/local/redis/bin# ./redis-cli
127.0.0.1:6379>

5. 停止redis服务

root@ubuntu:/usr/local/redis/bin# ./redis-cli shutdown
或者
root@ubuntu:/usr/local/redis/bin# pkill redis-server

6. 开机启动

暂未成功

7. 提供的工具

//redis/bin目录下的几个文件
root@ubuntu:/usr/local/redis/bin# ls
dump.rdb         redis-check-aof redis-cli       redis-server
redis-benchmark redis-check-rdb redis-sentinel

//各文件作用
redis-benchmark:redis性能测试工具
redis-check-aof:检查aof日志的工具
redis-check-rdb:检查rdb日志的工具
redis-cli:连接用的客户端
redis-server:redis服务进程

8. 配置说明

参见redis基础教程:https://www.runoob.com/redis/redis-conf.html

二、集群搭建

1. 概述

redis2.6~3.0之间,redis使用哨兵机制进行服务器监控,哨兵的含义就是监控redis系统的运行状态。

redis3.0之后,redis之后支持cluster

2. 集群架构

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

3. 集群搭建步骤

3.1 选择服务器

Redis集群一般至少需要6个服务器,3个主节点,3个从节点,每个服务器启动一个redis服务,多个redis服务组成Redis集群

本文档测试使用了单台虚拟机启动6个服务的方式,搭建伪集群进行测试(性能测试需要6个服务器)

3.2 创建目录

//创建集群目录
root@ubuntu:/usr/local# mkdir redis_cluster

//创建节点目录
root@ubuntu:/usr/local# cd redis_cluster/
root@ubuntu:/usr/local/redis_cluster# mkdir 7000 7001 7002 7003 7004 7005

//创建日志目录
root@ubuntu:/usr/local/redis_cluster# mkdir logs

3.3 拷贝配置文件

//拷贝配置到7000、7001、7002、7003、7004、7005目录
root@ubuntu:/usr/local/redis_cluster# cp ../redis/etc/redis.conf ./7000/
root@ubuntu:/usr/local/redis_cluster# cp ../redis/etc/redis.conf ./7001/
root@ubuntu:/usr/local/redis_cluster# cp ../redis/etc/redis.conf ./7002/
root@ubuntu:/usr/local/redis_cluster# cp ../redis/etc/redis.conf ./7003/
root@ubuntu:/usr/local/redis_cluster# cp ../redis/etc/redis.conf ./7004/
root@ubuntu:/usr/local/redis_cluster# cp ../redis/etc/redis.conf ./7005/

3.4 修改配置

bind  192.168.15.128          //指定IP,默认是127.0.0.1
port 7000       //端口7000,7001,7002...
daemonize yes                           //redis后台运行
pidfile /var/run/redis_7000.pid         //pidfile文件对应7000,7001,7002...
logfile "/usr/local/redis_cluster/logs/redis_7000.log" //日志保存路径7000,7001,7002...
dir /usr/local/redis_cluster/7000/ //工作目录7000,7001,7002...
cluster-enabled yes                     //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf     //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000               //请求超时 设置5秒够了
protected-mode yes //保护模式如果配置yes,需要配置节点密码,线上需要开启
masterauth ppp //配置连接主节点所需的密码
requirepass ppp //配置本节点的密码,集群内各节点密码需要相同

//修改rdb持久化配置,屏蔽此三行,增加save "",关闭rdb持久化
#save 900 1
#save 300 10
#save 60 10000
save ""

//修改aof持久化配置,关闭aof持久化
appendonly no

3.5 创建节点

root@ubuntu:/usr/local/redis/bin# ./redis-server ../../redis_cluster/7000/redis.conf
root@ubuntu:/usr/local/redis/bin# ./redis-server ../../redis_cluster/7001/redis.conf
root@ubuntu:/usr/local/redis/bin# ./redis-server ../../redis_cluster/7002/redis.conf
root@ubuntu:/usr/local/redis/bin# ./redis-server ../../redis_cluster/7003/redis.conf
root@ubuntu:/usr/local/redis/bin# ./redis-server ../../redis_cluster/7004/redis.conf
root@ubuntu:/usr/local/redis/bin# ./redis-server ../../redis_cluster/7005/redis.conf

查看redis是否启动成功:

root@ubuntu:~# ps -ef|grep redis
root     2840     1 0 02:24 ?       00:00:17 ./redis-server 127.0.0.1:7000 [cluster]        
root     2847     1 0 02:24 ?       00:00:08 ./redis-server 127.0.0.1:7001 [cluster]        
root     2857     1 0 02:25 ?       00:00:08 ./redis-server 127.0.0.1:7002 [cluster]        
root     2862     1 0 02:25 ?       00:00:09 ./redis-server 127.0.0.1:7003 [cluster]        
root     2867     1 0 02:25 ?       00:00:07 ./redis-server 127.0.0.1:7004 [cluster]        
root     2872     1 0 02:25 ?       00:00:08 ./redis-server 127.0.0.1:7005 [cluster]

3.6 创建集群

3.6.1 安装ruby

下载地址:http://www.ruby-lang.org/en/downloads/

//先安装这三个库,否则下面会报错
root@ubuntu:/usr/local# sudo apt-get install libssl-dev libreadline-dev libgdbm-dev

//安装
root@ubuntu:/usr/local# tar -xvf ruby-2.6.3.tar.gz
root@ubuntu:/usr/local# cd ruby-2.6.3/
root@ubuntu:/usr/local/ruby-2.6.3# ./configure
root@ubuntu:/usr/local/ruby-2.6.3# make
root@ubuntu:/usr/local/ruby-2.6.3# sudo make install

//查看版本
root@ubuntu:/usr/local/ruby-2.6.3# ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
3.6.2 安装gem

再用 gem 这个命令来安装 redis接口    gem是ruby的一个工具包

gem install redis
3.6.3 集群搭建

接下来运行一下redis-trib.rb

//拷贝redis-trib.rb脚本
root@ubuntu:~# cd /usr/local/redis_cluster/
root@ubuntu:/usr/local/redis_cluster# cp /usr/local/redis-4.0.14/src/redis-trib.rb ./

//版本4.0启动集群方式
root@ubuntu:/usr/local/redis_cluster# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

//版本5.0不支持上面的启动方式了,改成以下方式
root@ubuntu:/usr/local/redis/bin# ./redis-cli -a pass --cluster create 127.0.0.1:7000 127.0.0.1:7000 127.0.0.1:7000 127.0.0.1:7000 127.0.0.1:7000 127.0.0.1:7000 --cluster-replicas 1

解释下,--replicas 1 表示自动为每个master节点分配一个slave节点,上面是6个节点,程序会按照一定规则生产3个master(主)、3个slave(从)

到这里,redis集群已经初步搭建完成了!

3.7 创建密码

3.7.1 设置密码

方式一:

//修改所有Redis节点的配置文件
masterauth ppp
requirepass ppp

注:这种方式需要重启各节点

方式二:

//进入各实例进行设置
root@ubuntu:/usr/local/redis/bin# ./redis-cli -c -p 7000
127.0.0.1:7000> config set masterauth ppp
OK
127.0.0.1:7000> config set requirepass ppp
OK
127.0.0.1:7000> auth ppp
OK
127.0.0.1:7000> config rewrite

//然后分别使用./redis-cli -c -p 7001,./redis-cli -c -p 7002等设置各个节点密码

注:各个节点密码设置必须要一致,否则Redirected会失败,推荐方式二

3.7.2 访问集群

a) 带密码访问集群方式:

root@ubuntu:/usr/local/redis/bin# ./redis-cli -c -p 7000 -a ppp

b) 创建密码后使用redis-trib.rb脚本会报错,解决方法:find / -name client.rb,找到对应版本的此文件,举例:

/usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改password

class Client
  DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :password => "ppp",
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :reconnect_delay => 0,
      :reconnect_delay_max => 0.5,
      :inherit_socket => false
  }

4. 测试

4.1 创建数据

//set和get数据
//注意,这里要连接master节点,因为slave节点不可读也不可写
root@ubuntu:/usr/local/redis/bin# ./redis-cli -c -p 7000
127.0.0.1:7000>
127.0.0.1:7000> set b 1
OK
127.0.0.1:7000> get b
"1"
127.0.0.1:7000>

4.2 查看节点信息

//查看节点info
root@ubuntu:/usr/local/redis/bin# ./redis-cli -c -p 7000
127.0.0.1:7000>
127.0.0.1:7000> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
...

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:2641592
used_memory_human:2.52M
...

# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=7005,state=online,offset=988,lag=0
...

4.3 查看集群信息

//版本4.0检查单个节点
root@ubuntu:/usr/local/redis_cluster# ./redis-trib.rb check 127.0.0.1:7000

//版本5.0不支持上面的检查方式了,改为以下方式
root@ubuntu:/usr/local/redis/bin# ./redis-cli --cluster check 192.168.101.19:7000

//查看集群节点
root@ubuntu:/usr/local/redis/bin# ./redis-cli -p 7000 cluster nodes

 

以上是关于Redis部署文档的主要内容,如果未能解决你的问题,请参考以下文章

Redis集群部署文档(Ubuntu15.10系统)

redis 5.x 三主三从集群模式部署详细文档

Redis集群部署文档(centos6系统)

redis 5.x 三主三从集群模式部署详细文档

redis 5.x 三主三从集群模式部署详细文档

redis 5.x 三主三从集群模式部署详细文档