linux下redis集群( 缓存集群 )的安装配置

redis集群( 缓存集群 )的安装配置

前言

redis集群的使用以及核心算法一致性hash问题:
链接: Redis分布式算法原理—Hash一致性理解.

一.单节点安装
  1. 首先下载redis
    wget http://download.redis.io/releases/redis-5.0.7.tar.gz
  2. 解压压缩包
    tar -zxvf redis-5.0.7.tar.gz
  3. yum安装gcc依赖
    yum install gcc
  4. 跳转到redis解压目录下
    cd redis-5.0.7
  5. 编译安装
    make MALLOC=libc
  6. 将/usr/local/redis-4.0.6/src目录下的文件加到/usr/local/bin目录
    cd src && make install
启动redis 方式

先切换到redis src目录下
方式一: 直接启动redis
./redis-server
方式二: 以后台进程方式启动redis(方式三同样需要修改redis.conf配置)
修改配置
./redis-server ./redis-5.0.7/redis.conf
方式三: 开机自启

  1. 在/etc目录下新建redis目录
    mkdir redis
  2. 将/opt/redis-5.0.7/redis.conf 文件复制一份到/etc/redis目录下,并命名为6379.conf 
    cp /opt/redis-5.0.7/redis.conf /etc/redis/6379.conf
  3. 将redis的启动脚本复制一份放到/etc/init.d目录下
    cp /opt/redis-5.0.7/utils/redis_init_script /etc/init.d/redisd
  4. 设置redis开机自启动
    先切换到/etc/init.d目录下
    cd /etc/init.d
    执行自启命令
    chkconfig redisd on
    如果有错误: service redisd does not support chkconfig
    使用vi编辑redisd文件,在第一行下面加入如下两行注释,保存退出
#chkconfig:   2345 90 10
#description:  Redis is a persistent key-value database
意思:  redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。

再次执行开机自启命令,成功
chkconfig redisd on

  1. 其它服务操作命令
    ps -aux|grep redis 查看进程
    service redisd start 启动服务
    service redisd stop 关闭服务
    ps:不建议使用kill -9杀死进程,这会导致redis服务非法的关闭,没有删除 pid文件,下次无法启动需要手动删除6379.pid文件
以上是redis单节点的安装配置,我们安装redis集群是3主3从的结构,由于我手里只有4个节点node1,node2,node3,node4所以在node1和node2上面进行伪分布式安装将两个从节点分别安装在node1和node2上。
二.redis集群的安装

为什么要用主从结构?
Redis主从复制的功能非常强大,它有以下好处:
1.避免Redis单点故障
2.构建读写分离架构,满足读多写少的应用场景,保证Redis的高可用,提高Redis的读写性能

1.主从架构

1.1 Redis主从架构拓扑图结构
在这里插入图片描述
分片及一致性hash
在这里插入图片描述
问题一: 在分片的集群中,如一台机器出问题,则会丢失数据,如何处理?
方案:结合上面的主从结构,读写分离来完成.,每个分片也是一个小集群,完成主从复制的过程
问题二: 分布式系统每个节点都有可能失效,并且新的节点很可能动态的增加进来的情况,如何保证当系统的节点数目发生变化的时候,我们的系统仍然能够对外提供良好的服务,那么这就是一致性hash算法的解决方案了.

2. 集群配置

先关闭node1上的redis准备配置成集群的环境
按照上面的单节点安装把其他3个节点也装上redis,修改配置并全部设置成开机自启动。
在这里插入图片描述
service redisd start启动4个节点的redis
ps aux|grep 6379 查看服务是否开启
关闭以下四个节点所有的服务.
service redisd stop

3. 安装ruby和ruby gem工具

(以下操作只需要在一台机器上安装即可,这里我选用 node2 上安装 )

  1. 在 redis安装目录的 src 目录下有一个文件: redis-trib.rb 这是一个ruby版的 redis服务安装脚本,为了使用它,请首先安装 ruby. 安装ruby和ruby gem工具(redis3集群配置需要ruby的gem工具,类似yum)
    yum -y install ruby rubygems

  2. 使用gem下载redis集群的配置脚本
    gem install redis
    (错误: 没有反应,访问不到 gem的源 解决方案: 使用淘宝的一个镜像就可以安装redis了)
    gem sources -a https://ruby.taobao.org/
    gem install redis

以上又出现了第二个错误: Fetching: redis-4.2.1.gem (100%)ERROR: Error installing redis:redis requires Ruby version >= 2.3.0.
(错误分析: ruby的版本太低了,要求 2.3以上,当前用命令查一下: ruby --version)
更新一下curl命令的协议版本
yum update -y nss curl libcurl
sudo yum update nss nss-util nss-sysinit nss-tools

修改hosts文件, 加上 美国的ip和raw.githubusercontent.com
sudo vi /etc/hosts sudo
在hosts文件中加入
199.232.68.133 raw.githubusercontent.com

  1. 安装RAM: RAM(Ruby Version Manager )是一款RAM的命令行工具,可以使用RAM轻松安装,管理Ruby版本。RVM包含了Ruby的版本管理和Gem库管理(gemset)
    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -sSL https://get.rvm.io | bash -s stable

(如果上面出错的话,请编辑一下 脚本文件 abc.sh 保存到 ~ 目录, 文件内容)

#!/usr/bin/env bash
shopt -s extglob
set -o errtrace
set -o errexit
set -o pipefail
 
rvm_install_initialize()
{
  DEFAULT_SOURCES=(github.com/rvm/rvm bitbucket.org/mpapis/rvm)
 
  BASH_MIN_VERSION="3.2.25"
  if
    [[ -n "${BASH_VERSION:-}" &&
      "$(\printf "%b" "${BASH_VERSION:-}\n${BASH_MIN_VERSION}\n" | LC_ALL=C \sort -t"." -k1,1n -k2,2n -k3,3n | \head -n1)" != "${BASH_MIN_VERSION}"
    ]]
  then
    echo "BASH ${BASH_MIN_VERSION} required (you have $BASH_VERSION)"
    exit 1
  fi
 
  export HOME PS4
  export rvm_trace_flag rvm_debug_flag rvm_user_install_flag rvm_ignore_rvmrc rvm_prefix rvm_path
 
  PS4="+ \${BASH_SOURCE##\${rvm_path:-}} : \${FUNCNAME[0]:+\${FUNCNAME[0]}()}  \${LINENO} > "
}
 
log()  { printf "%b\n" "$*"; }
debug(){ [[ ${rvm_debug_flag:-0} -eq 0 ]] || printf "%b\n" "$*" >&2; }
warn() { log "WARN: $*" >&2 ; }
fail() { fail_with_code 1 "$*" ; }
fail_with_code() { code="$1" ; shift ; log "\nERROR: $*\n" >&2 ; exit "$code" ; }
 
rvm_install_commands_setup()
{
  \which which >/dev/null 2>&1 || fail "Could not find 'which' command, make sure it's available first before continuing installation."
  \which grep >/dev/null 2>&1 || fail "Could not find 'grep' command, make sure it's available first before continuing installation."
  if
    [[ -z "${rvm_tar_command:-}" ]] && builtin command -v gtar >/dev/null
  then
    rvm_tar_command=gtar
  elif
    ${rvm_tar_command:-tar} --help 2>&1 | GREP_OPTIONS="" \grep -- --strip-components >/dev/null
  then
    rvm_tar_command="${rvm_tar_command:-tar}"
  else
    case "$(uname)" in
      (OpenBSD)
        log "Trying to install GNU version of tar, might require sudo password"
        if (( UID ))
        then sudo pkg_add -z gtar-1
        else pkg_add -z gtar-1
        fi
        rvm_tar_command=gtar
        ;;
      (Darwin|FreeBSD|DragonFly) # it's not possible to autodetect on OSX, the help/man does not mention all flags
        rvm_tar_command=tar
        ;;
      (SunOS)
        case "$(uname -r)" in
          (5.10)
            log "Trying to install GNU version of tar, might require sudo password"
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要沉默我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值