首頁 > 後端開發 > php教程 > Redis集群建構教學的總結

Redis集群建構教學的總結

不言
發布: 2023-04-03 13:28:02
原創
1683 人瀏覽過

這篇文章給大家分享的內容是關於Redis集群搭建教程的總結,內容很詳細,有需要的朋友可以參考一下,希望可以幫助到大家。

前言

本文收集並整理了Redis集群搭建的網文、網站、自己的經驗。水平有限,只分享環境搭建。本文分為以下幾個部分:

  • Redis 安裝

  • Rvm 安裝更換來源

  • ## Rvm Ruby 安裝、使用、卸載

  • RubyGems 升級、更換來源、安裝redis

  • ##叢集設定
  • #成果測試
  • 請大家依照上述步驟來查看此文

#說明:

    僅限學習使用,若用於線上,本人不承擔任何責任。
  • 如有問題,請在下方留言。
  • 文中有些指令沒有帶sudo,是因為我用的root權限。
  • Redis 安裝

編譯安裝

wget http://download.redis.io/releases/redis-4.0.10.tar.gz
tar xzf redis-4.0.10.tar.gz
cd redis-4.0.10
make PREFIX=/usr/local/redis install
登入後複製

註:如果不想將Redis當作一個服務,到這就已經安裝完成了

將Redis做成一個服務參考:Redis Quick Start

    Create a directory where to store your Redis config files and your data:(有道字典:建立一個目錄來儲存Redis設定檔和資料:)
  • Redis集群建構教學的總結#

    # 这只是一个目录结构,大家不要着急为什么自己没有,往下看,一步一步来
    [root@amor ~]# cd /usr/local/redis
    [root@amor redis]# tree
    .
    ├── bin  # 编译安装指定目录后自动生成目录及文件
    │   ├── redis-benchmark
    │   ├── redis-check-aof
    │   ├── redis-check-rdb
    │   ├── redis-cli
    │   ├── redis-sentinel -> redis-server
    │   └── redis-server
    ├── conf # 自己建立的存储配置文件的目录及自己创建的单个Redis配置文件
    │   └── 6379.conf
    └── data # 自己建立的存储Redis数据的目录及单个Redis服务数据存储目录
        └── 6379
    
    4 directories, 7 files
    登入後複製
    ##注意:

    cp /usr /src/redis-4.0.10/src/redis-trib.rb /usr/local/redis/bin/

    後面建立叢集要用到

    Copy the init script that you'll find in the Redis distribution under the utils directory into /etc/init.d. We suggest calling it with the name of the port where you are running this instance of Redis. For example:(有道詞典:將在utils目錄下的Redis發行版中找到的init腳本複製到/etc/init.d中我們建議使用正在執行這個Redis實例的連接埠的名稱來呼叫它。例如:)
sudo cp utils/redis_init_script /etc/init.d/redis_6379
登入後複製
  • Edit the init script.(有道字典:編輯init腳本。)
  • #!/bin/sh
    # chkconfig 2345 90 25                         # linux 开机启动设置 2345 运行级别 90 启动优先级(参考 memcached head /etc/rc.d/rc3.d/S90memcached ) 25 关闭优先级 (参考memcached)
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    
    ### BEGIN INIT INFO
    # Provides:     redis_6379
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Redis data structure server
    # Description:          Redis data structure server. See https://redis.io
    ### END INIT INFO
    
    REDISPORT=6379
    EXEC=/usr/local/redis/bin/redis-server         # 修改为自己的可执行文件所在目录
    CLIEXEC=/usr/local/redis/bin/redis-cli         # 修改为自己的可执行文件所在目录
    
    PIDFILE=/var/run/redis_${REDISPORT}.pid        # 默认就好
    CONF="/usr/local/redis/conf/${REDISPORT}.conf" # 修改为自己的配置文件存放目录
    ···省略···
    esac
    登入後複製
  • 開始修改redis.conf

    Make sure to modify REDISPORT accordingly to the port you are using. Both the pid file path and the configuration file name depend on the port number.(有道字典:請確保根據您正在使用的連接埠對重新分配進行相應的修改。pid檔案路徑和配置檔案名稱都取決於連接埠號碼。)

  • Set
      daemonize
    • to yes (by default it is set to no). (需要修改為yes)

      Set the
    • pidfile
    • to /var/run/redis_6379.pid (modify the port if needed). (預設即可)

      #Change the
    • port
    • accordingly. In our example it is not needed as the default port is already 6379. (預設即可,設定叢集的時候需要拷貝設定檔並且重新設定連接埠)

      Set your preferred
    • loglevel
    • .(預設即可)

      Set the
    • logfile
    • to / var/log/redis_6379.log (預設好像為空,需要修改)

      Set the
    • dir
    • to /var/redis/6379 (very important step!) (redis資料保存目錄,需要修改位置自訂路徑)

    • sudo cp redis.conf /usr/local/redis/conf/6379.conf
    • (修改成自己定義的目錄。參考上述目錄結構redis.conf 在你們redis解壓縮目錄中的src目錄下)

    • sudo mkdir /usr/local/redis/data/6379
    • (修改成自己定義的目錄。參考上述目錄結構)

      Edit the configuration file, making sure to perform the following changes:(有道字典:編輯設定文件,確保執行以下更改: )
    注:上面的意思是让你们修改 /usr/local/redis/conf/6379.conf,用vim 打开,搜索上述关键词即可,参考以下设置(如果所有的步骤都是粘贴复制的走下来的,直接修改成下面这样:0.0):
    登入後複製
    port 6379
    daemonize yes
    pidfile /var/run/redis_6379.pid
    loglevel notice
    logfile "/var/log/redis_6379.log"
    dir /usr/local/redis/data/6379
    登入後複製
  • Finally add the new Redis init script to all the default runlevels using the following command:(有道字典:最後,使用以下指令將新的Redis init腳本新增到所有預設的運行等級:)
    # ubuntu
    sudo update-rc.d redis_6379 defaults
    登入後複製
    # centos
    chkconfig --add redis_6379
    登入後複製
  • You are done! Now you can try running your instance with:
  • sudo /etc/init.d/redis_6379 start
    登入後複製
  • 測試
  • Redis集群建構教學的總結Redis停止、啟動

    yum 安裝

    /etc/init.d /redis-server stop
    • /etc/init.d/redis-server start
    • /etc/init.d/redis-server restart
    • 原始碼安裝三種方式
    sudo /etc/init.d/redis_6379 start
    /usr/local/redis/bin/redis-server redis.conf  # 注意此处缺省:配置文件路径
    redis-cli -h 127.0.0.1 -p 6379 shutdown
    登入後複製

    #:如果只是停止本機redis 請執行:

    redis-cli shutdown

    #強制終止

      kill -9 行程編號
    • pkill redis

    Rvm 安装 更换源

    curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
    curl -L get.rvm.io | bash -s stable 
    rvm user gemsets # 建立用户配置目录,更换源的时候需要向 db 文件写入配置信息
    echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db # 更换源
    登入後複製

    Rvm Ruby 安装、使用、卸载

    rvm list known
    rvm install 2.6
    rvm use 2.6
    yum -y remove ruby # 卸载centos yum 安装的 1.8 版本
    ruby --version
    rvm uninstall ruby # 此处带不带版本自己测试
    登入後複製

    RubyGems 升级、更换源、安装redis

    gem install rubygems-update 
    rubygems-update
    gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
    gem sources -l 
    gem install redis
    登入後複製

    集群配置

    注:下面的内容是我自己参考这篇博文加上我熟悉Redis安装后自己的配置过程。大家可以参考NrwLm - Redis 集群搭建详细指南。

    开启 Redis cluster

    cd /usr/local/redis/conf
    cp 6379.conf redis.conf.default  # 用作集群其他配置文件的蓝本
    sudo vim redis.conf.default
    登入後複製

    修改内容如下

    bind 192.168.2.123  # 绑定当前机器 IP
    cluster-enabled yes # 取消注释,启动集群模式
    cluster-config-file nodes-6379.conf # 取消注释,修改为 /usr/local/redis/data/6379/nodes-6379.conf  (如果遇到需要重新建立集群,不将此项修改为指定路径而和启动配置文件放在一起,会导致建立集群时,删除重建conf 文件)
    cluster-node-timeout 15000 # 取消注释
    appendonly yes # 将 no 修改为 yes
    登入後複製

    创建配置文件

    cd /usr/local/redis/conf
    echo 9001.conf 9002.conf 9003.conf 9004.conf 9005.conf 9006.conf | xargs -n 1 cp -v redis.conf.default
    sed -i 's/6379/9001/g'  9001.conf 
    sed -i 's/6379/9002/g'  9002.conf 
    sed -i 's/6379/9003/g'  9003.conf 
    sed -i 's/6379/9004/g'  9004.conf 
    sed -i 's/6379/9005/g'  9005.conf 
    sed -i 's/6379/9006/g'  9006.conf
    登入後複製

    Redis集群建構教學的總結

    Redis集群建構教學的總結

    创建数据存储文件

    cd /usr/local/redis/data
    mkdir -p 9001 9002 9003 9004 9005 9006
    # 后期可能需要删除该文件件下的文件,用于重建集群,所以,删除命令也写一下
    rm -rf 900*/*
    登入後複製

    启动Redis cluster 节点

    /usr/local/redis/bin/redis-server /usr/local/redis/conf/9001.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/9002.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/9003.conf 
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/9004.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/9005.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/conf/9006.conf
    登入後複製

    Redis集群建構教學的總結

    创建集群

    /usr/local/redis/bin/redis-trib.rb create --replicas 1 192.168.2.123:9001 192.168.2.123:9002 192.168.2.123:9003 192.168.2.123:9004 192.168.2.123:9005 192.168.2.123:9006

    Redis集群建構教學的總結

    测试

    执行命令: /usr/local/redis/bin/redis-cli -c -h 192.168.2.123 -p 9001

    <img src="https://img.php.cn//upload/image/755/105/520/1532744572918545.png" title="1532744572918545.png" alt="Redis集群建構教學的總結">

    问题汇总

    • 如果遇到timeout 请查看自己的防火墙,安装宝塔的尤其注意,请先去安全里面放行 9001:9006 的端口

    • redis集群 Waiting for the cluster to join 一直等待,redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口,集群总线端口为redis客户端连接的端口 + 1000Redis集群建構教學的總結

    • redis /usr/bin/env: ruby: 没有那个文件或目录

      • 执行这个命令 rvm get stable --auto-dotfiles,或者执行 nvm list 有详细的错误说明(查了资料说,线上不要用rvm安装ruby)

      Redis集群建構教學的總結

      • 这是我自己的解决方案

        # 把这个添加到 /etc/profile 文件中(放到最后就行)
        rvm use ruby-2.6.0-preview2
        登入後複製

    相关推荐:

    CentOS7系统安装和配置Memcached的方法

    以上是Redis集群建構教學的總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板