您好,登錄后才能下訂單哦!
系統版本:CentOS 6.8 x86_64(適用于CentOS 7.*) gcc 版本 4.4.7 redis版本:4.0.8 安裝方式:源碼安裝redis 軟件包路徑:/opt/tools/ 安裝路徑:/usr/local/
Ruby環境(集群搭建需要用ruby創建, ruby環境在2.2以上。) rubygems:ruby的一個包管理工具 redis.gem :redis集群需要的ruby插件,通過rubygems安裝redis-4.0.1.gem。
[root@redis_1 ~]# cd /opt/tools/ [root@redis_1 tools ]# wget http://download.redis.io/releases/redis-4.0.8.tar.gz [root@redis_1 tools ]# tar xf redis-4.0.8.tar.gz -C /usr/local/ [root@redis_1 tools ]# cd /usr/local/redis-4.0.8/ [root@redis_1 redis-4.0.8 ]# make [root@redis_1 redis-4.0.8 ]# make install
編譯完成后會在src目錄下生成Redis服務端程序redis-server和客戶端程序redis-cli。
[root@redis_1 redis-4.0.8 ]# redis-server
該方式啟動默認為前臺方式運行,使用默認配置。
可以修改redis.conf文件的daemonize參數為yes,指定配置文件啟動,例如:
[root@redis_1 redis-4.0.8 ]# cp -a redis.conf{,_$(date +%F)} [root@redis_1 redis-4.0.8 ]# vim redis.conf # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. daemonize yes 或者執行sed替換命令: [root@redis_1 redis-4.0.8 ]# sed -i 's#daemonize no#daemonize yes#g' redis.conf [root@redis_1 redis-4.0.8 ]# grep 'daemonize yes' redis.conf daemonize yes
指定配置文件啟動。
[root@redis_1 redis-4.0.8 ]# redis-server redis.conf
停止后臺啟動的redis-server進程:
[root@redis_1 redis-4.0.8 ]# redis-cli -h $(hostname -i) -c -p ${端口} 192.168.1.101:7000> SHUTDOWN not connected> exit
例如:
# 指定配置文件后臺啟動
[root@redis_1 redis-4.0.8]# src/redis-server redis.conf 95778:C 30 Jan 00:44:37.633 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 95778:C 30 Jan 00:44:37.634 # Redis version=4.0.7, bits=64, commit=00000000, modified=0, pid=95778, just started 95778:C 30 Jan 00:44:37.634 # Configuration loaded
# 查看Redis進程
[root@redis_1 redis-4.0.8]# ps aux|grep redis root 95779 0.0 0.0 145268 468 ? Ssl 00:44 0:00 src/redis-server 127.0.0.1:6379
更多啟動參數如下:
[root@redis_1 src]# ./redis-server --help Usage: ./redis-server [/path/to/redis.conf] [options] ./redis-server - (read config from stdin) ./redis-server -v or --version ./redis-server -h or --help ./redis-server --test-memory <megabytes> Examples: ./redis-server (run the server with default conf) ./redis-server /etc/redis/6379.conf ./redis-server --port 7777 ./redis-server --port 7777 --slaveof 127.0.0.1 8888 ./redis-server /etc/myredis.conf --loglevel verbose Sentinel mode: ./redis-server /etc/sentinel.conf --sentinel
[root@redis_1 redis-4.0.8]# src/redis-cli redis> set foo bar OK redis> get foo "bar"
Redis的集群部署需要在每臺集群部署的機器上安裝Redis;可參考上述的Redis部署,然后修改配置以集群的方式啟動。 我們要在單臺機器上搭建Redis集群,方式是通過不同的TCP端口啟動多個實例,然后組成集群。 需要注意的是:必須要3個或以上的主節點,否則在創建集群時會失敗,并且當存活的主節點數小于總節點數的一半時,整個集群就無法提供服務了。 最小集群模式需要三個master實例,一般建議起六個實例,即三主三從。因此我們創建6個以端口號命名的目錄存放實例的配置文件和其他信息。
[root@redis_1 redis-4.0.8]# mkdir -pv redis-cluster/{7000,7001,7002,7003,7004,7005} [root@redis_1 redis-4.0.8]# cd redis-cluster/7000
在對應端口號的目錄中創建redis.conf的文件,配置文件的內容可參考如下的集群模式配置。每個配置文件中的端口號port參數改為對應目錄的端口號。 修改配置文件redis.conf,集群模式的配置文件如下:
[root@redis_1 7000]# vim redis.conf daemonize yes //redis后臺運行; port 7000 //端口7000,7001,7002,7003,7004,7005; timeout 600 // 客戶端無響應連接超時時間;默認關閉 bind 192.168.1.91 //默認ip為127.0.0.1 需要改為其他節點機器可訪問的ip 否則創建集群時無法訪問對應的端口,無法創建集群; pidfile /var/run/redis_7000.pid //pidfile文件對應7000,7001,7002,7003,7004,7005; cluster-enabled yes //開啟集群 把注釋#去掉; cluster-config-file nodes_7000.conf //集群的配置 配置文件首次啟動自動生成 7000,7001,7002,7003,7004,7005 ; cluster-node-timeout 15000 //請求超時 默認15秒,可自行設置; appendonly yes //aof日志開啟 有需要就開啟,每次寫操作都記錄一條日志; # 查看 [root@redis_1 7000]# egrep "^daemonize|^port|^timeout|^bind|^pidfile|^cluster-|^appendonly" redis.conf
更多集群配置參數可參考默認配置文件redis.conf中Cluster模塊的說明。
復制redis-server的二進制文件到redis-cluster目錄中,通過指定配置文件的方式啟動redis服務,例如:
[root@redis_1 7000]# pwd /usr/local/redis-4.0.8/redis-cluster/7000 [root@redis_1 7000]# redis-server ./redis.conf # 需在指定實例目錄中執行文件,會在命令當前目錄生成文件。 2497:C 18 May 13:42:24.279 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 2497:C 18 May 13:42:24.279 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=2497, just started 2497:C 18 May 13:42:24.279 # Configuration loaded
如果是以前臺方式運行,則會在控制臺輸出以下信息:
[82462] 26 Nov 11:56:55.329 * No cluster configuration found, I'm 97a3a64667477371c4479320d683e4c8db5858b1
每個實例都會生成一個Node ID,類似97a3a64667477371c4479320d683e4c8db5858b1,用來作為Redis實例在集群中的唯一標識,而不是通過IP和Port,IP和Port可能會改變,該Node ID不會改變。 目錄結構可參考:
redis-cluster/ ├── 7000 │ ├── appendonly.aof │ ├── dump.rdb │ ├── nodes.conf │ └── redis.conf ├── 7001 │ ├── appendonly.aof │ ├── dump.rdb │ ├── nodes.conf │ └── redis.conf ├── 7002 │ ├── appendonly.aof │ ├── dump.rdb │ ├── nodes.conf │ └── redis.conf ├── 7003 │ ├── appendonly.aof │ ├── dump.rdb │ ├── nodes.conf │ └── redis.conf ├── 7004 │ ├── appendonly.aof │ ├── dump.rdb │ ├── nodes.conf │ └── redis.conf ├── 7005 │ ├── appendonly.aof │ ├── dump.rdb │ ├── nodes.conf │ └── redis.conf ├── redis-cli └── redis-server
注:其中dump.rdb為數據存放文件,第一次啟動集群時沒有。 Redis的實例全部運行之后,還需要redis-trib.rb工具來完成集群的創建,redis-trib.rb二進制文件在Redis包主目錄下的src目錄中,運行該工具依賴Ruby環境和gem。
說明:下面步驟3和步驟4針對不同環境,服務器可以連外網推薦步驟3,無法連外網推薦步驟4源碼安裝依賴包,安裝一個即可。
[root@redis_1 src]# yum install ruby rubygems -y
查看Ruby版本信息。
[root@redis_1 src]# ruby --version ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
由于centos6系統默認支持Ruby版本為1.8.7(centos7系統默認支持Ruby版本為2.0.0),因此執行gem install redis命令時會報以下錯誤。
[root@redis_1 src]# gem install redis Fetching: redis-4.0.1.gem (100%) ERROR: Error installing redis: redis requires Ruby version >= 2.2.2.
解決方法是先安裝rvm,再升級ruby版本。
curl -L get.rvm.io | bash -s stable 如果遇到以下報錯,則執行報錯中的gpg2 --recv-keys的命令。
[root@redis_1 ~]# curl -L get.rvm.io | bash -s stable % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 194 100 194 0 0 335 0 --:--:-- --:--:-- --:--:-- 335 100 24090 100 24090 0 0 17421 0 0:00:01 0:00:01 --:--:-- 44446 Downloading https://github.com/rvm/rvm/archive/1.29.3.tar.gz Downloading https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.asc gpg: 于 2017年09月11日 星期一 04時59分21秒 CST 創建的簽名,使用 RSA,鑰匙號 BF04FF17 gpg: 無法檢查簽名:沒有公鑰 Warning, RVM 1.26.0 introduces signed releases and automated check of signatures when GPG software found. Assuming you trust Michal Papis import the mpapis public key (downloading the signatures). GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.29.3.tgz' - 'https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.asc'! Try to install GPG v2 and then fetch the public key: gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 or if it fails: command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - the key can be compared with: https://rvm.io/mpapis.asc https://keybase.io/mpapis NOTE: GPG version 2.1.17 have a bug which cause failures during fetching keys from remote server. Please downgrade or upgrade to newer version (if available) or use the second method described above.
執行報錯中的gpg2 --recv-keys的命令。 例如:
[root@redis_1 ~]# gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 gpg: 鑰匙環‘/root/.gnupg/secring.gpg’已建立 gpg: 下載密鑰‘D39DC0E3’,從 hkp 服務器 keys.gnupg.net gpg: /root/.gnupg/trustdb.gpg:建立了信任度數據庫 gpg: 密鑰 D39DC0E3:公鑰“Michal Papis (RVM signing) <mpapis@gmail.com>”已導入 gpg: 沒有找到任何絕對信任的密鑰 gpg: 合計被處理的數量:1 gpg: 已導入:1 (RSA: 1)
[root@redis_1 ~]# curl -L get.rvm.io | bash -s stable % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 194 100 194 0 0 310 0 --:--:-- --:--:-- --:--:-- 309 100 24090 100 24090 0 0 18230 0 0:00:01 0:00:01 --:--:-- 103k Downloading https://github.com/rvm/rvm/archive/1.29.3.tar.gz Downloading https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.asc gpg: 于 2017年09月11日 星期一 04時59分21秒 CST 創建的簽名,使用 RSA,鑰匙號 BF04FF17 gpg: 完好的簽名,來自于“Michal Papis (RVM signing) <mpapis@gmail.com>” gpg: 亦即“Michal Papis <michal.papis@toptal.com>” gpg: 亦即“[jpeg image of size 5015]” gpg: 警告:這把密鑰未經受信任的簽名認證! gpg: 沒有證據表明這個簽名屬于它所聲稱的持有者。 主鑰指紋: 409B 6B17 96C2 7546 2A17 0311 3804 BB82 D39D C0E3 子鑰指紋: 62C9 E5F4 DA30 0D94 AC36 166B E206 C29F BF04 FF17 GPG verified '/usr/local/rvm/archives/rvm-1.29.3.tgz' Creating group 'rvm' Installing RVM to /usr/local/rvm/ Installation of RVM in /usr/local/rvm/ is almost complete: * First you need to add all users that will be using rvm to 'rvm' group, and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`. * To start using RVM you need to run `source /etc/profile.d/rvm.sh` in all your open shell windows, in rare cases you need to reopen all shell windows.
以上表示執行成功,然后執行以下命令。
[root@redis_1 ~]# source /usr/local/rvm/scripts/rvm
查看rvm庫中已知的ruby版本 rvm list known 例如:
[root@redis_1 ~]# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p431] [ruby-]1.9.2[-p330] [ruby-]1.9.3[-p551] [ruby-]2.0.0[-p648] [ruby-]2.1[.10] [ruby-]2.2[.7] [ruby-]2.3[.4] [ruby-]2.4[.1] ruby-head ...
#安裝ruby
rvm install 2.4.0
#使用新版本
rvm use 2.4.0
#移除舊版本
rvm remove 1.8.7
#查看當前版本
ruby --version
例如:
[root@redis_1 ~]# rvm install 2.4.0 Searching for binary rubies, this might take some time. Found remote file https://rvm_io.global.ssl.fastly.net/binaries/centos/7/x86_64/ruby-2.4.0.tar.bz2 Checking requirements for centos. Installing requirements for centos. Installing required packages: autoconf, automake, bison, bzip2, gcc-c++, libffi-devel, libtool, readline-devel, sqlite-devel, zlib-devel, libyaml-devel, openssl-devel................................ Requirements installation successful. ruby-2.4.0 - #configure ruby-2.4.0 - #download % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 14.0M 100 14.0M 0 0 852k 0 0:00:16 0:00:16 --:--:-- 980k No checksum for downloaded archive, recording checksum in user configuration. ruby-2.4.0 - #validate archive ruby-2.4.0 - #extract ruby-2.4.0 - #validate binary ruby-2.4.0 - #setup ruby-2.4.0 - #gemset created /usr/local/rvm/gems/ruby-2.4.0@global ruby-2.4.0 - #importing gemset /usr/local/rvm/gemsets/global.gems.............................. ruby-2.4.0 - #generating global wrappers........ ruby-2.4.0 - #gemset created /usr/local/rvm/gems/ruby-2.4.0 ruby-2.4.0 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list ruby-2.4.0 - #generating default wrappers........ [root@redis_1 ~]# rvm use 2.4.0 Using /usr/local/rvm/gems/ruby-2.4.0 [root@redis_1 ~]# rvm remove 1.8.7 ruby-1.8.7-p648 - #already gone Using /usr/local/rvm/gems/ruby-2.4.0 [root@redis_1 ~]# ruby --version ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
[root@redis_1 ~]# gem install redis Fetching: redis-4.0.1.gem (100%) Successfully installed redis-4.0.1 Parsing documentation for redis-4.0.1 Installing ri documentation for redis-4.0.1 Done installing documentation for redis after 2 seconds 1 gem installed
官網: https://pkgs.org/download/zlib https://pkgs.org/download/zlib-devel 選擇對應系統版本的zlib和zlib-devel包; 本實驗為CentOS 6 64位,選擇el6的zlib-1.2.3-29.el6.x86_64.rpm和zlib-devel-1.2.3-29.el6.x86_64.rpm包
有yum源: [root@redis_1 tools]# yum install zlib zlib-devel -y 沒有yum源: [root@redis_1 tools]# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/zlib-1.2.3-29.el6.x86_64.rpm [root@redis_1 tools]# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm [root@redis_1 tools]# rpm -ivh zlib-1.2.3-29.el6.x86_64.rpm zlib-devel-1.2.3-29.el6.x86_64.rpm
到Ruby官網:https://www.ruby-lang.org/en/downloads/ 找到2.2版本以上Ruby的穩定版,本實驗用ruby-2.3.6 注意:ruby-2.5.0版本在CentOS6.*上安裝需升級GCC(4.8) 進入linux,選擇一個位置存放安裝包,我的位置是/opt/tools 輸入命令wget + 剛剛復制的安裝包URL
[root@redis_1 tools]# pwd /opt/tools [root@redis_1 tools]# wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.gz [root@redis_1 tools]# tar zxf ruby-2.3.6.tar.gz -C /usr/local/ [root@redis_1 tools]# cd /usr/local/ruby-2.3.6 [root@redis_1 ruby-2.3.6]# ./configure # 可以指定安裝路徑./configure --prefix=/usr/local/ruby [root@redis_1 ruby-2.3.6]# make [root@redis_1 ruby-2.3.6]# make install
驗證:
[root@redis_1 ruby-2.3.6]# source /etc/profile [root@redis_1 ruby-2.3.6]# ruby -v ruby 2.3.6p384 (2017-12-14 revision 61254) [x86_64-linux] [root@redis_1 ruby-2.3.6]# cd ext/zlib/ [root@redis_1 zlib]# pwd /usr/local/ruby-2.3.6/ext/zli [root@redis_1 zlib]# ruby ./extconf.rb checking for deflateReset() in -lz... yes checking for zlib.h... yes checking for crc32_combine() in zlib.h... yes checking for adler32_combine() in zlib.h... yes checking for z_crc_t in zlib.h... no creating Makefile [root@redis_1 zlib]# make compiling zlib.c linking shared-object zlib.so [root@redis_1 zlib]# make install /usr/bin/install -c -m 0755 zlib.so /usr/local/lib/ruby/site_ruby/2.3.0/x86_64-linux [root@redis_1 zlib]#
官網 https://rubygems.org/pages/download wget + URL,在線下載安裝包:
[root@redis_1 tools]# wget https://rubygems.org/rubygems/rubygems-2.7.6.tgz [root@redis_1 tools]# tar xf rubygems-2.7.6.tgz -C /usr/local/ [root@redis_1 tools]# cd /usr/local/rubygems-2.7.6/ [root@redis_1 rubygems-2.7.6]# ruby setup.rb Bundler 1.16.1 installed RubyGems 2.7.6 installed ... ... RubyGems installed the following executables: /usr/local/bin/gem /usr/local/bin/bundle Ruby Interactive (ri) documentation was installed. ri is kind of like man pages for Ruby libraries. You may access it like this: ri Classname ri Classname.class_method ri Classname#instance_method If you do not wish to install this documentation in the future, use the --no-document flag, or set it as the default in your ~/.gemrc file. See 'gem help env' for details.
驗證:
[root@redis_1 rubygems-2.7.6]# gem -v 2.7.6
官網: https://www.openssl.org/source/ wget 下載安裝包:
[root@redis_1 tools]# wget https://www.openssl.org/source/openssl-1.1.1-pre6.tar.gz [root@redis_1 tools]# tar xf openssl-1.1.1-pre6.tar.gz -C /usr/local/ [root@redis_1 tools]# cd /usr/local/openssl-1.1.1-pre6/ [root@redis_1 openssl-1.1.1-pre6]# mkdir -v /usr/local/openssl mkdir: 已創建目錄 "/usr/local/openssl" [root@redis_1 openssl-1.1.1-pre6]# ./config --prefix=/usr/local/openssl --shared [root@redis_1 openssl-1.1.1-pre6]# make [root@redis_1 openssl-1.1.1-pre6]# make install 添加“/usr/local/openssl/lib”到系統類包: [root@redis_1 openssl-1.1.1-pre6]# echo -e "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf [root@redis_1 openssl-1.1.1-pre6]# cat /etc/ld.so.conf.d/openssl.conf /usr/local/openssl/lib [root@redis_1 openssl-1.1.1-pre6]# ldconfig # 重新加載類 添加到環境變量: [root@redis_1 openssl-1.1.1-pre6]# echo -e "# openssl\nexport OPENSSL=/usr/local/openssl/bin\nexport PATH=\$OPENSSL:\$PATH:\$HOME/bin" > /etc/profile.d/openssl.sh [root@redis_1 openssl-1.1.1-pre6]# cat /etc/profile.d/openssl.sh # openssl export OPENSSL=/usr/local/openssl/bin export PATH=$OPENSSL:$PATH:$HOME/bin [root@redis_1 openssl-1.1.1-pre6]# source /etc/profile # 重新加載環境變量
# 驗證:
[root@redis_1 openssl-1.1.1-pre6]# echo $OPENSSL /usr/local/openssl/bin [root@redis_1 openssl-1.1.1-pre6]#
官網:https://rubygems.org/gems/redis
[root@redis_1 redis-4.0.8]# cd /usr/local/redis-4.0.8/ [root@redis_1 redis-4.0.8]# pwd /usr/local/redis-4.0.8 [root@redis_1 redis-4.0.8]# wget https://rubygems.org/downloads/redis-4.0.1.gem [root@redis_1 redis-4.0.8]# gem install -l ./redis-4.0.1.gem Successfully installed redis-4.0.1 Parsing documentation for redis-4.0.1 Done installing documentation for redis after 3 seconds 1 gem installed
#執行redis-trib.rb命令
[root@redis_1 redis-4.0.8]# cd /usr/local/redis-4.0.8/src/ [root@redis_1 src]# ./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
參數create表示創建一個新的集群,--replicas 1表示為每個master創建一個slave。 如果創建成功會顯示以下信息
[OK] All 16384 slots covered
例如:
[root@redis_1 src]# ./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 >>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 Adding replica 127.0.0.1:7004 to 127.0.0.1:7000 Adding replica 127.0.0.1:7005 to 127.0.0.1:7001 Adding replica 127.0.0.1:7003 to 127.0.0.1:7002 >>> Trying to optimize slaves allocation for anti-affinity [WARNING] Some slaves are in the same host as their master M: d5a834d075fd93eefab877c6ebb86efff680650f 127.0.0.1:7000 slots:0-5460 (5461 slots) master M: 13d0c397604a0b2644244c37b666fce83f29faa8 127.0.0.1:7001 slots:5461-10922 (5462 slots) master M: be2718476eba4e56f696e56b75e67df720b7fc24 127.0.0.1:7002 slots:10923-16383 (5461 slots) master S: 3d02f59b34047486faecc023685379de7b38076c 127.0.0.1:7003 replicates 13d0c397604a0b2644244c37b666fce83f29faa8 S: dedf672f0a75faf37407ac4edd5da23bc4651e25 127.0.0.1:7004 replicates be2718476eba4e56f696e56b75e67df720b7fc24 S: 99c07119a449a703583019f7699e15afa0e41952 127.0.0.1:7005 replicates d5a834d075fd93eefab877c6ebb86efff680650f Can I set the above configuration? (type 'yes' to accept): yes # 同意yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join.... >>> Performing Cluster Check (using node 127.0.0.1:7000) M: d5a834d075fd93eefab877c6ebb86efff680650f 127.0.0.1:7000 slots:0-5460 (5461 slots) master 1 additional replica(s) M: be2718476eba4e56f696e56b75e67df720b7fc24 127.0.0.1:7002 slots:10923-16383 (5461 slots) master 1 additional replica(s) M: 13d0c397604a0b2644244c37b666fce83f29faa8 127.0.0.1:7001 slots:5461-10922 (5462 slots) master 1 additional replica(s) S: 3d02f59b34047486faecc023685379de7b38076c 127.0.0.1:7003 slots: (0 slots) slave replicates 13d0c397604a0b2644244c37b666fce83f29faa8 S: 99c07119a449a703583019f7699e15afa0e41952 127.0.0.1:7005 slots: (0 slots) slave replicates d5a834d075fd93eefab877c6ebb86efff680650f S: dedf672f0a75faf37407ac4edd5da23bc4651e25 127.0.0.1:7004 slots: (0 slots) slave replicates be2718476eba4e56f696e56b75e67df720b7fc24 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
使用客戶端redis-cli二進制訪問某個實例,執行set和get的測試。語法:redis-cli -h $IP -c -p $PORT -a $PASSWORD
[root@redis_1 src]# redis-cli -c -p 7000 redis 127.0.0.1:7000> set foo bar -> Redirected to slot [12182] located at 127.0.0.1:7002 OK redis 127.0.0.1:7002> set hello world -> Redirected to slot [866] located at 127.0.0.1:7000 OK redis 127.0.0.1:7000> get foo -> Redirected to slot [12182] located at 127.0.0.1:7002 "bar" redis 127.0.0.1:7000> get hello -> Redirected to slot [866] located at 127.0.0.1:7000 "world"
使用cluster info命令查看集群狀態。
127.0.0.1:7000> cluster info cluster_state:ok #集群狀態 cluster_slots_assigned:16384 #被分配的槽位數 cluster_slots_ok:16384 #正確分配的槽位 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 #當前節點 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_ping_sent:48273 cluster_stats_messages_pong_sent:49884 cluster_stats_messages_sent:98157 cluster_stats_messages_ping_received:49879 cluster_stats_messages_pong_received:48273 cluster_stats_messages_meet_received:5 cluster_stats_messages_received:98157
使用cluster nodes命令查看節點狀態。
127.0.0.1:7000> cluster nodes be2718476eba4e56f696e56b75e67df720b7fc24 127.0.0.1:7002@17002 master - 0 1517303607000 3 connected 10923-16383 13d0c397604a0b2644244c37b666fce83f29faa8 127.0.0.1:7001@17001 master - 0 1517303606000 2 connected 5461-10922 3d02f59b34047486faecc023685379de7b38076c 127.0.0.1:7003@17003 slave 13d0c397604a0b2644244c37b666fce83f29faa8 0 1517303606030 4 connected d5a834d075fd93eefab877c6ebb86efff680650f 127.0.0.1:7000@17000 myself,master - 0 1517303604000 1 connected 0-5460 99c07119a449a703583019f7699e15afa0e41952 127.0.0.1:7005@17005 slave d5a834d075fd93eefab877c6ebb86efff680650f 0 1517303607060 6 connected dedf672f0a75faf37407ac4edd5da23bc4651e25 127.0.0.1:7004@17004 slave be2718476eba4e56f696e56b75e67df720b7fc24 0 1517303608082 5 connected
https://redis.io/download https://redis.io/topics/cluster-tutorial http://blog.csdn.net/huwh_/article/details/79242625 http://blog.csdn.net/michaelehome/article/details/79533496
方式一:修改所有Redis集群中的redis.conf文件加入:
masterauth passwd123 requirepass passwd123
說明:這種方式需要重新啟動各節點 方式二:進入各個實例進行設置:redis-cli -h $IP -c -p 端口
./redis-cli -c -p 7000 config set masterauth passwd123 config set requirepass passwd123 config rewrite
之后分別使用./redis-cli -c -p 7001,./redis-cli -c -p 7002…..命令給各節點設置上密碼。 注意:各個節點密碼都必須一致,否則Redirected就會失敗, 推薦這種方式,這種方式會把密碼寫入到redis.conf里面去,且不用重啟。 用方式二修改密碼,./redis-trib.rb check 10.104.111.174:6379執行時可能會報[ERR] Sorry, can't connect to node 10.104.111.174:6379,因為6379的redis.conf沒找到密碼配置。
如:./redis-trib.rb check 127.0.0.1:7000,則會報錯ERR] Sorry, can’t connect to node 127.0.0.1:7000 解決辦法:
vim /usr/local/rvm/gems/ruby-2.3.0/gems/redis-4.0.1/lib/redis/client.rb # 聯網安裝路徑 vim /usr/local/lib/ruby/gems/2.3.0/gems/redis-4.0.1/lib/redis/client.rb # 源碼安裝路徑
注意:client.rb路徑可以通過find命令查找:find / -name 'client.rb' 然后修改passord
class Client DEFAULTS = { :url => lambda { ENV["REDIS_URL"] }, :scheme => "redis", :host => "127.0.0.1", :port => 6379, :path => nil, :timeout => 5.0, :password => "passwd123", :db => 0, :driver => nil, :id => nil, :tcp_keepalive => 0, :reconnect_attempts => 1, :inherit_socket => false }
帶密碼訪問集群
./redis-cli -c -p 7000 -a passwd123
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。