Redis部署文档
Posted 扯不断得红尘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis部署文档相关的知识,希望对你有一定的参考价值。
Redis部署文档ChangeLog一、安装与部署1. 下载路径2. 解压编译3. 启动redis服务4. 客户端连接5. 停止redis服务6. 开机启动7. 提供的工具8. 配置说明二、集群搭建1. 概述2. 集群架构3. 集群搭建步骤3.1 选择服务器3.2 创建目录3.3 拷贝配置文件3.4 修改配置3.5 创建节点3.6 创建集群3.6.1 安装ruby3.6.2 安装gem3.6.3 集群搭建3.7 创建密码3.7.1 设置密码3.7.2 访问集群4. 测试4.1 创建数据4.2 查看节点信息4.3 查看集群信息
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.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部署文档的主要内容,如果未能解决你的问题,请参考以下文章