Redis安装部署

原创
2018/12/13 16:31
阅读数 36

Redis简介

Redis是一款优秀的NoSQLDB,它在2.x版本不支持集群,集群必须通过外部手段集成;但由于集成方法过于复杂,研发测试和运维要求较高。新版本Redis3.x发布后,自带集群功能,降低了分布式缓存的使用门槛。

Redis2.x单实例支持的业务能力并不小,Redis3.x内部集群后,集群负担工作有一定系统开销,如果使用选型需要结合业务具体分析。一般来说,必须使用分布式场景的或业务数据过亿的可以首先Redis3.x。

Redis3.0.7为目前推荐的最稳定版本,本文基于该版本修订。

Redis3.x引入了一个hash槽的概念,集群将整个系统分为16384个hash槽,这16384个槽位要全部分布在集群中的主节点上。主节点是Redis的读写节点,每个主节点可以配置一个或多个从节点,从节点自动同步主节点数据;当主节点下线时,从节点自动代替主节点工作。

jedis-2.7.2版本开始支持java访问Redis3.x集群。

  1. 缩略语和术语

缩略语/术语

全  称

说  明

append only file(aof)

全持久化模式

 

<REDIS_FILE>

Redis解压目录

 

$REDIS_HOME

Redis安装目录

 

  1. 注意事项
    1. 要求以用户模式安装

如果没有redis用户,请如下创建:

  1. root登录172.20.4.80服务器(root/epaylinks
  2. 创建用户组db,即:

groupadd db

  1. 创建用户redis隶属于db组,redis用户目录位于“/usr/redis”,即:

useradd -u 544 -d /usr/redis -g db -m redis

  1. 设置密码,即:

passwd redis

输入redis2017

  1. 到此,用户redis创建完毕,接下来有关Redis集群环境的安装都要求在redis用户下完成。
    1. 升级注意事项

如果Redis已经安装过,请先备份原Redis的所有配置文件,即$REDIS_HOME目录下的所有文件。

    1. 注意事项

* 每一次修改环境变量之后记得source ~/.bashrc

* 每一次保存新的环境变量,只对当前会话或新连接的会话生效

  1. Redis安装操作步骤说明
    1. 安装前环境说明
      1. 集群环境说明

Redis3.x的最小集群需要3主3从6个实例;在生产环境最小配置3台服务器。测试验证工作可以部署在一台物理机上,用端口来区分实例。本次使用六个端口代表六个实例,搭建“三主三从”的集群环境,六个端口分别为6381 6382 6383 6384 6385 6386。

      1. 目录规范

为方便操作,目录路径统一定义,先创建以下两个常用目录:Redis安装包目录:${REDIS_FILE}、Redis最终安装目录:${REDIS_HOME}。操作如下:

redis/redis2017登录进入主目录;

创建目录software用于存放所有软件安装包:

mkdir software

创建目录environment用于存放所有软件安装目录:

mkdir environment

创建本次环境搭建必要的几项安装目录:

cd environment

mkdir redis ruby

创建本次环境搭建必要的几项安装包目录,并将有需要的bin加入到PATH,示例:

vim ~/.bashrc

- - -  - - -  -

# User specific aliases and functions

export REDIS_HOME=/usr/redis/environment/redis

export RUBY_HOME=/usr/redis/environment/ruby

export PATH=$PATH:$REDIS_HOME/bin:$RUBY_HOME/bin

- - -  - - -  -

source ~/.bashrc

    1. 下载

Redis到官方网站:http://www.redis.io/download下载

本文档用http://download.redis.io/releases/redis-3.0.7.tar.gz

cd software

wget -c http://download.redis.io/releases/redis-3.0.7.tar.gz

    1. Redis 介绍

Redis是Remote Dictionary Server的缩写。他本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是string(字符串)、list(列表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力。redis3.x加入了集群功能(此功能需Ruby环境)。

根目录下:

       redis.conf 默认配置文件

src目录:

redis-trib.rb 创建集群

make命令执行完成后,会在安装目录的bin下生成5个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump

    1. 解压

解压Redis的tar包:

cd software

tar -zxvf redis-3.0.7.tar.gz

这样就在当前目录下新建了一个包含发行版源代码的目录

    1. 安装

将redis安装包目录加入环境变量:

export REDIS_FILE=/usr/redis/software/redis-3.0.7

进入redis解压目录:

cd $REDIS_FILE

执行如下命令指定目录安装Redis:

make PREFIX=$REDIS_HOME install

    1. 创建工作目录并配置

进入Redis安装目录:

cd $REDIS_HOME

为了简洁明了,此处工作目录以端口号命名:

mkdir 6381 6382 6383 6384 6385 6386

分别在6381 6382 6383 6384 6385 6386目录下创建data、log、run、conf文件夹,例如在6381 目录下创建:

cd 6381

mkdir data log run conf

复制配置文件redis.conf到6381 6382 6383 6384 6385 6386目录下的conf目录中

cp $REDIS_FILE/redis.conf $REDIS_HOME/6381/conf/redis.conf

cp $REDIS_FILE/redis.conf $REDIS_HOME/6382/conf/redis.conf

cp $REDIS_FILE/redis.conf $REDIS_HOME/6383/conf/redis.conf

cp $REDIS_FILE/redis.conf $REDIS_HOME/6384/conf/redis.conf

cp $REDIS_FILE/redis.conf $REDIS_HOME/6385/conf/redis.conf

cp $REDIS_FILE/redis.conf $REDIS_HOME/6386/conf/redis.conf

分别修改6381 6382 6383 6384 6385 6386 conf目录下的redis.conf文件,此处以6381为例(注意:这配置文件必须绝对路径):

bind 0.0.0.0

pidfile /usr/redis/environment/redis/6381/run/redis.pid

port 6381

logfile “/usr/redis/environment/redis/6381/log/stdout.log”

dir /usr/redis/environment/redis/6381/data

daemonize yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

建议

先改好一个结点的redis.conf,再复制到其它结点;

使用vim 替换命令全部替换端口号,即:%s/6381/6385/g

查看配置文件:grep -v '^#\|^$' redis.conf

修注:1.pidfile logfile目录配置内容可以用双引号括起来。

      2. 配置文件中有默认的tcp-backlog 511参数,该参数配置不正确不能成功启动。从注释来看该值取/proc/sys/net/core/somaxconn tcp_max_syn_backlog二者的最小配置,二者需要root权限才可以查看,我在centos上配置为tcp-backlog 100

root查看方法:

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

cat /proc/sys/net/core/somaxconn

 

    1. 启动、停止Redis
      1. 启动Redis服务器

进入$REDIS_HOME的bin目录下,命令:

可先将$REDIS_HOME/bin加到PATH:

export PATH=$PATH:$REDIS_HOME/bin

redis-server $REDIS_HOME/6381/conf/redis.conf

redis-server $REDIS_HOME/6382/conf/redis.conf

redis-server $REDIS_HOME/6383/conf/redis.conf

redis-server $REDIS_HOME/6384/conf/redis.conf

redis-server $REDIS_HOME/6385/conf/redis.conf

redis-server $REDIS_HOME/6386/conf/redis.conf

注:此命令仅有一个启动参数,用以指定配置文件,不加参数执行默认配置。

建议将所有redis的启动命令写在一个shell快捷文件

      1. 停止Redis

可指定端口,关闭服务:

redis-cli -p 6381 shutdown

redis-cli -p 6382 shutdown

redis-cli -p 6383 shutdown

redis-cli -p 6384 shutdown

redis-cli -p 6385 shutdown

redis-cli -p 6386 shutdown

建议将所有redis的停止命令写在一个shell快捷文件

注:为了下面的操作,如果执行了关闭服务的操作,请重新执行4.7.1重新开启服务

      1. 连接Redis

单实例链接方式:

redis-cli  -h主机IP  -p 端口号(默认为127.0.0.1 6379)

集群连接需要增加 –c 参数,主机和端口号随便连接一个主节点即可,当操作没有命中链接的主节点时集群内部路由到hash命中节点。这一步路由在网络条件不好时测试性能影响较大。

redis-cli –c  -h主机IP  -p 端口号(默认为127.0.0.1 6379)

示例:

redis-cli -c -h 127.0.0.1 -p 6381

 

注:至此,redis便安装完毕了。

  1. Ruby安装步骤

redis集群的创建需要ruby环境

    1. 下载

Ruby到官方网站:https://www.ruby-lang.org/en/downloads下载

本文挡用ruby-2.4.1

cd software

wget -c https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz

    1. 解压

解压Ruby的tar包:

cd software

tar -zxvf ruby-2.4.1.tar.gz

    1. 安装

将redis安装包目录加入环境变量:

export RUBY_FILE=/usr/redis/software/ruby-2.4.1

进入Ruby解压目录

cd $RUBY_FILE

执行一下命令进行安装

./configure prefix=$RUBY_HOME

make

make install

查看版本号:

 

至此,Ruby便安装好了。

  1. Redis集群的创建
    1. 安装zlib

确保系统安装zlib,否则后续gem install会报 (no such file to load -- zlib)

cd software

wget -c http://www.zlib.net/zlib-1.2.11.tar.gz

tar -xzvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure  

make  

sudo make install (输入redis2017)

    1. 安装RubyGem

可从官网上找最新版本rubygemhttps://rubygems.org/pages/download

以上方式复制rubygem的下载地址,下载到software目录:

cd software

wget -c https://rubygems.org/rubygems/rubygems-2.6.12.tgz

tar -zxvf rubygems-2.6.12.tgz

cd rubygems-2.6.12

ruby setup.rb

    1. 安装RedisGem
      1. 方法1

注:本次采用此方法安装。

创建redis集群需要ruby环境,而ruby需要redis接口(redis-gem),因此先安装redis接口(对应之前redis版本,这里同样用3.0.7版本):

gem install --local redis-3.0.7.gem

 

      1. 方法2

因国内网络环境无法连接到ruby资源库,淘宝给出了解决方案,我们只需要替换资源地址便可,详情可查看http://ruby.taobao.org

移除ruby官方的资源库地址:

gem sources --remove https://rubygems.org/

加入淘宝的资源地址:

gem sources -a https://ruby.taobao.org/

查看此时是否只有ruby.taobao.org

gem sources –l

安装redis接口:

gem install redis

一般来说,安装Redis的服务器链接外网都比较困难,通过以上的网络方式安装局限性较大,建议下载到本地安装。通过命令-l (local)方式安装。

gem install redis-3.2.1.gem -l

    1. 创建集群

进入redis解压目录的src下:

cd $REDIS_FILE/src

执行命令创建集群(此处1表示1个主master对应一个从slave):

./redis-trib.rb create --replicas 1 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386

注:创建集群需使用真实IP,而非127.0.0.1

开发服务器:

./redis-trib.rb create --replicas 1 172.20.4.90:6381 172.20.4.90:6382 172.20.4.90:6383 172.20.4.90:6384 172.20.4.90:6385 172.20.4.90:6386

测试服务器:

./redis-trib.rb create --replicas 1 172.20.4.90:6381 172.20.4.90:6382 172.20.4.90:6383 172.20.4.90:6384 172.20.4.90:6385 172.20.4.90:6386

安装过程根据提示输入yesenter

注:如果报错提示redis未启动,按照“4.7.1启动Redis服务器”启动:

redis集群创建成功。

注意:这里的redis主从是自动分配的。

    1. 测试集群

登录多个redis实例的客户端,通过set <key> <value>在不同实例中验证:

 

 

 

同名原创公众号: 程序大视界

 

本文同步分享在 博客“程序大视界”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部