亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Redis集群搭建全記錄

2020-02-24 15:36:11
字體:
供稿:網(wǎng)友

Redis由于其出色的性能,大多數(shù)互聯(lián)網(wǎng)公司將Redis用作服務(wù)器端緩存使用,本文是武林技術(shù)頻道小編為大家介紹的Redis集群搭建全記錄,一起來聽聽專業(yè)的解析吧。

Redis集群是一個提供在多個Redis節(jié)點間共享數(shù)據(jù)的程序集。

  Redis集群中不支持處理多個keys的命令。

  Redis集群通過分區(qū)來提供一定程度的可用性。在某個節(jié)點宕機或者不可用的時候可以繼續(xù)處理命令。

Redis集群數(shù)據(jù)分片

  在Redis集群中,使用數(shù)據(jù)分片(sharding)而不是一致性hash(consistency hashing)來實現(xiàn),一個Redis集群包含16384個哈希槽(hash slot),數(shù)據(jù)庫中的每個鍵都存在這些哈希槽中的某一個,通過CRC16校驗后對16384取模來決定。

  加入說現(xiàn)在集群中有三個節(jié)點,那么

 ?、俟?jié)點A包含0到5500號哈希槽。

 ?、诠?jié)點B包含5501到11000號哈希槽。

  ③節(jié)點C包含11001到16384號哈希槽。

  然后如果我們要增加一個節(jié)點的時候,會從ABC三個節(jié)點分別得到一部分槽到D上。如果我們移除一個節(jié)點的時候,就會把移除的節(jié)點的分隔槽移到剩下的槽上面。

Redis主從復(fù)制模型

  為了實現(xiàn)Redis的集群的高可用性。Redis提供了一個主從復(fù)制模型。每個節(jié)點都會有N-1個復(fù)制品。

  如果在創(chuàng)建集群的時候,我們?yōu)槊總€節(jié)點添加了一個從節(jié)點,這時候,如果其中的某個主節(jié)點掛掉了,便會把它的從節(jié)點做為新的主節(jié)點,繼續(xù)提供服務(wù)。但是如果主節(jié)點和從節(jié)點都掛掉了,那就不可以繼續(xù)使用了。

Redis集群搭建

  Redis集群由多個云新在集群模式下的Redis實例組成。實例的集群模式需要通過配置來開啟。

  下面是一個包含了最少選項的集群配置文件實例:

port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yespidfile /var/run/redis_xxxx.piddir /usr/local/redis-cluster/xxxx

port指定了節(jié)點的端口號

cluster-enabled yes選項用于開啟實例的集群模式

cluster-config-file nodes.conf設(shè)置了保存節(jié)點的配置文件路徑,這個文件無須認(rèn)為修改,是在集群啟動的時候創(chuàng)建。

cluster-node-timeout 5000:設(shè)置了方式失敗的等待時間。即5秒還訪問不了就認(rèn)為這個節(jié)點不可用。

appendonly yes:用于開啟aof持久化

?pidfile /var/run/redis_xxxx.pid設(shè)置pid文件的位置,其中xxxx為端口號

dir /usr/local/redis-cluster/xxxx設(shè)置工作目錄,其中xxxx為端口號。

此時目錄中的文件是這樣的

[root@localhost 10:49 /usr/local/redis-cluster]# ll 7000 7001 7002 7003 7004 70057000:總用量 7080-rw-r--r--. 1 root root  57787 9月 10 10:44 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 09:50 redis-server7001:總用量 7080-rw-r--r--. 1 root root  57787 9月 10 10:46 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7002:總用量 7080-rw-r--r--. 1 root root  57787 9月 10 10:46 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7003:總用量 7080-rw-r--r--. 1 root root  57787 9月 10 10:47 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7004:總用量 7080-rw-r--r--. 1 root root  57787 9月 10 10:48 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7005:總用量 7080-rw-r--r--. 1 root root  57787 9月 10 10:48 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server[root@localhost 10:49 /usr/local/redis-cluster]#

下面啟動這六個節(jié)點

[root@localhost 10:51 /usr/local/redis-cluster]# ./7000/redis-server ./7000/redis.conf3547:C 10 Sep 10:51:58.519 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3547:C 10 Sep 10:51:58.519 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3547, just started3547:C 10 Sep 10:51:58.519 # Configuration loaded[root@localhost 10:51 /usr/local/redis-cluster]# ./7001/redis-server ./7001/redis.conf3552:C 10 Sep 10:52:05.549 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3552:C 10 Sep 10:52:05.550 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3552, just started3552:C 10 Sep 10:52:05.550 # Configuration loaded[root@localhost 10:52 /usr/local/redis-cluster]# ./7002/redis-server ./7002/redis.conf3557:C 10 Sep 10:52:13.098 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3557:C 10 Sep 10:52:13.098 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3557, just started3557:C 10 Sep 10:52:13.098 # Configuration loaded[root@localhost 10:52 /usr/local/redis-cluster]# ./7003/redis-server ./7003/redis.conf3563:C 10 Sep 10:52:18.986 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3563:C 10 Sep 10:52:18.986 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3563, just started3563:C 10 Sep 10:52:18.986 # Configuration loaded[root@localhost 10:52 /usr/local/redis-cluster]# ./7004/redis-server ./7004/redis.conf3568:C 10 Sep 10:52:23.709 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3568:C 10 Sep 10:52:23.710 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3568, just started3568:C 10 Sep 10:52:23.710 # Configuration loaded[root@localhost 10:52 /usr/local/redis-cluster]# ./7005/redis-server ./7005/redis.conf3573:C 10 Sep 10:52:27.146 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo3573:C 10 Sep 10:52:27.147 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3573, just started3573:C 10 Sep 10:52:27.147 # Configuration loaded[root@localhost 10:52 /usr/local/redis-cluster]#

查看啟動后的進(jìn)程:

[root@localhost 10:52 /usr/local/redis-cluster]# ps aux|grep redisroot   3548 0.2 0.2 41964 2288 ?    Ssl 10:51  0:00 ./7000/redis-server 127.0.0.1:7000 [cluster]root   3553 0.1 0.2 41964 2288 ?    Ssl 10:52  0:00 ./7001/redis-server 127.0.0.1:7001 [cluster]root   3558 0.2 0.2 41964 2288 ?    Ssl 10:52  0:00 ./7002/redis-server 127.0.0.1:7002 [cluster]root   3564 0.1 0.2 41964 2292 ?    Ssl 10:52  0:00 ./7003/redis-server 127.0.0.1:7003 [cluster]root   3569 0.2 0.2 41964 2292 ?    Ssl 10:52  0:00 ./7004/redis-server 127.0.0.1:7004 [cluster]root   3574 0.1 0.2 41964 2288 ?    Ssl 10:52  0:00 ./7005/redis-server 127.0.0.1:7005 [cluster]root   3580 0.0 0.0  6048  784 pts/2  S+  10:52  0:00 grep redis[root@localhost 10:52 /usr/local/redis-cluster]#

再次查看文件目錄:

[root@localhost 11:01 /usr/local/redis-cluster]# ll 7000 7001 7002 7003 7004 70057000:總用量 7084-rw-r--r--. 1 root root    0 9月 10 10:51 appendonly.aof-rw-r--r--. 1 root root   114 9月 10 10:51 nodes-7000.conf-rw-r--r--. 1 root root  57787 9月 10 10:44 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 09:50 redis-server7001:總用量 7084-rw-r--r--. 1 root root    0 9月 10 10:52 appendonly.aof-rw-r--r--. 1 root root   114 9月 10 10:52 nodes-7001.conf-rw-r--r--. 1 root root  57787 9月 10 10:46 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7002:總用量 7084-rw-r--r--. 1 root root    0 9月 10 10:52 appendonly.aof-rw-r--r--. 1 root root   114 9月 10 10:52 nodes-7002.conf-rw-r--r--. 1 root root  57787 9月 10 10:46 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7003:總用量 7084-rw-r--r--. 1 root root    0 9月 10 10:52 appendonly.aof-rw-r--r--. 1 root root   114 9月 10 10:52 nodes-7003.conf-rw-r--r--. 1 root root  57787 9月 10 10:47 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7004:總用量 7084-rw-r--r--. 1 root root    0 9月 10 10:52 appendonly.aof-rw-r--r--. 1 root root   114 9月 10 10:52 nodes-7004.conf-rw-r--r--. 1 root root  57787 9月 10 10:48 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7005:總用量 7084-rw-r--r--. 1 root root    0 9月 10 10:52 appendonly.aof-rw-r--r--. 1 root root   114 9月 10 10:52 nodes-7005.conf-rw-r--r--. 1 root root  57787 9月 10 10:48 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server[root@localhost 11:01 /usr/local/redis-cluster]#

可以看到生成了aof和nodes文件,保存的時候還會有dump文件生成。

在看看pid

[root@localhost 11:03 /usr/local/redis-cluster]# ll /var/run/redis*-rw-r--r--. 1 root root 5 9月 10 10:51 /var/run/redis_7000.pid-rw-r--r--. 1 root root 5 9月 10 10:52 /var/run/redis_7001.pid-rw-r--r--. 1 root root 5 9月 10 10:52 /var/run/redis_7002.pid-rw-r--r--. 1 root root 5 9月 10 10:52 /var/run/redis_7003.pid-rw-r--r--. 1 root root 5 9月 10 10:52 /var/run/redis_7004.pid-rw-r--r--. 1 root root 5 9月 10 10:52 /var/run/redis_7005.pid[root@localhost 11:03 /usr/local/redis-cluster]#

接下來,我們就需要使用redis-trib工具和這六個節(jié)點來創(chuàng)建集群了。

redis-trib位于redis源碼的src目錄下。

我們復(fù)制一份到redis-cluster目錄下。

[root@localhost 11:03 /usr/local/redis-cluster]# ll ../redis/src/redis-trib*-rwxrwxr-x. 1 root root 60843 7月 24 22:58 ../redis/src/redis-trib.rb[root@localhost 11:04 /usr/local/redis-cluster]# cp ../redis/src/redis-trib.rb ./[root@localhost 11:05 /usr/local/redis-cluster]# ll總用量 84drwxr-xr-x. 2 root root 4096 9月 10 10:51 7000drwxr-xr-x. 2 root root 4096 9月 10 10:52 7001drwxr-xr-x. 2 root root 4096 9月 10 10:52 7002drwxr-xr-x. 2 root root 4096 9月 10 10:52 7003drwxr-xr-x. 2 root root 4096 9月 10 10:52 7004drwxr-xr-x. 2 root root 4096 9月 10 10:52 7005-rwxr-xr-x. 1 root root 60843 9月 10 11:05 redis-trib.rb[root@localhost 11:05 /usr/local/redis-cluster]#

開始啟動集群:

[root@localhost 11:13 /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/usr/bin/env: ruby: 沒有那個文件或目錄[root@localhost 11:15 /usr/local/redis-cluster]#

下面是本人失敗的安裝版本,后面也有成功的版本。

因為是ruby的程序,所以我們需要安裝ruby,

yum -y install? ruby

繼續(xù)啟動集群:

[root@localhost 11:21 /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./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)    from ./redis-trib.rb:24[root@localhost 11:22 /usr/local/redis-cluster]#

還是報錯了,說需要rubygems,我們繼續(xù)安裝:

yum -y install rubygems

繼續(xù)啟動集群:

[root@localhost 11:24 /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/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'    from ./redis-trib.rb:25[root@localhost 11:24 /usr/local/redis-cluster]#

依然還是報錯了...,我們需要安裝更高版本的ruby。

?所以,我決定,先卸載掉1.8的ruby。

yum -y remove ruby

然后重新安裝

wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gztar xzvf ruby-2.4.1.tar.gzcd ruby-2.4.1./configuremakemake install

然后查看ruby的版本:

[root@localhost 12:47 ~]# ruby -vruby 2.4.1p111 (2017-03-22 revision 58053) [i686-linux][root@localhost 12:47 ~]#

最后,為了運行redis-trib我們需要安裝redis gem。

如果出現(xiàn)下面的錯誤

[root@localhost 13:01 /usr/local/redis-cluster]# gem install redisERROR: Loading command: install (LoadError)    cannot load such file -- zlibERROR: While executing gem ... (NoMethodError)  undefined method `invoke_with_build_args' for nil:NilClass

我們繼續(xù)開啟集群:依然還是報錯,幾經(jīng)折騰,還是沒解決掉

最好,找到了下面這種方法。

成功版本

通過rvm這個ruby的管理工具來安裝ruby。

首先安裝rvm,如果下面的命令提示找不到curl,可以通過yum install -y crul來安裝crul。

[root@localhost 19:45 ~]# curl -L get.rvm.io | bash -s stable % Total  % Received % Xferd Average Speed  Time  Time   Time Current                 Dload Upload  Total  Spent  Left Speed100 24090 100 24090  0   0 11517   0 0:00:02 0:00:02 --:--:-- 48276Downloading https://github.com/rvm/rvm/archive/1.29.3.tar.gzDownloading https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.ascgpg: 于 2017年09月11日 星期一 05時59分21秒 JST 創(chuàng)建的簽名,使用 RSA,鑰匙號 BF04FF17gpg: 無法檢查簽名:No public keyWarning, 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 409B6B1796C275462A1703113804BB82D39DC0E3or 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/mpapisNOTE: 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.[root@localhost 19:45 ~]#

發(fā)現(xiàn)失敗了,我們按照提示進(jìn)行操作。

[root@localhost 19:45 ~]# curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -gpg: 鑰匙環(huán)‘/root/.gnupg/secring.gpg'已建立gpg: /root/.gnupg/trustdb.gpg:建立了信任度數(shù)據(jù)庫gpg: 密鑰 D39DC0E3:公鑰“Michal Papis (RVM signing) <mpapis@gmail.com>”已導(dǎo)入gpg: 合計被處理的數(shù)量:1gpg:      已導(dǎo)入:1 (RSA: 1)gpg: 沒有找到任何絕對信任的密鑰[root@localhost 19:45 ~]# curl -L get.rvm.io | bash -s stable % Total  % Received % Xferd Average Speed  Time  Time   Time Current                 Dload Upload  Total  Spent  Left Speed100 24090 100 24090  0   0  3763   0 0:00:06 0:00:06 --:--:-- 3763Downloading https://github.com/rvm/rvm/archive/1.29.3.tar.gzDownloading https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.ascgpg: 于 2017年09月11日 星期一 05時59分21秒 JST 創(chuàng)建的簽名,使用 RSA,鑰匙號 BF04FF17gpg: 完好的簽名,來自于“Michal Papis (RVM signing) <mpapis@gmail.com>”gpg:        亦即“Michal Papis <michal.papis@toptal.com>”gpg:        亦即“[jpeg image of size 5015]”gpg: 警告:這把密鑰未經(jīng)受信任的簽名認(rèn)證!gpg:    沒有證據(jù)表明這個簽名屬于它所聲稱的持有者。主鑰指紋: 409B 6B17 96C2 7546 2A17 0311 3804 BB82 D39D C0E3子鑰指紋: 62C9 E5F4 DA30 0D94 AC36 166B E206 C29F BF04 FF17GPG 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@localhost 19:46 ~]

發(fā)現(xiàn)rvm已經(jīng)安裝成功了,為了讓配置立即生效,我們需要用source命令導(dǎo)入rvm的配置文件。

先查看下配置文件的路徑,然后導(dǎo)入。

[root@localhost 19:46 ~]# find / -name rvm.sh/etc/profile.d/rvm.sh[root@localhost 19:49 ~]# source /etc/profile.d/rvm.sh

接下來就可以安裝高版本的ruby了,建議安裝2.2.3版本,不然的話,等下gen install redis的時候,可能會報下面的錯誤:

[root@localhost 19:59 ~]# gem install redisFetching: redis-4.0.0.gem (100%)ERROR: Error installing redis:    redis requires Ruby version >= 2.2.2.

廢話少說,接下來安裝2.2.3版本的ruby

[root@localhost 20:16 ~]# rvm install 2.3.3Searching for binary rubies, this might take some time.No binary rubies available for: centos/6/i386/ruby-2.3.3.Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.Checking requirements for centos.Requirements installation successful.Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.3.3, this may take a while depending on your cpu(s)...ruby-2.3.3 - #downloading ruby-2.3.3, this may take a while depending on your connection... % Total  % Received % Xferd Average Speed  Time  Time   Time Current                 Dload Upload  Total  Spent  Left Speed100 13.7M 100 13.7M  0   0 1285k   0 0:00:10 0:00:10 --:--:-- 1394kruby-2.3.3 - #extracting ruby-2.3.3 to /usr/local/rvm/src/ruby-2.3.3....ruby-2.3.3 - #applying patch /usr/local/rvm/patches/ruby/ruby_2_3_gcc7.patch.ruby-2.3.3 - #applying patch /usr/local/rvm/patches/ruby/2.3.3/random_c_using_NR_prefix.patch.ruby-2.3.3 - #configuring..........................................................ruby-2.3.3 - #post-configuration..ruby-2.3.3 - #compiling....................................................................................-ruby-2.3.3 - #installing...........................ruby-2.3.3 - #making binaries executable..ruby-2.3.3 - #downloading rubygems-2.6.13ruby-2.3.3 - #extracting rubygems-2.6.13.....ruby-2.3.3 - #removing old rubygems.........ruby-2.3.3 - #installing rubygems-2.6.13..........................ruby-2.3.3 - #gemset created /usr/local/rvm/gems/ruby-2.3.3@globalruby-2.3.3 - #importing gemset /usr/local/rvm/gemsets/global.gems..........................................|ruby-2.3.3 - #generating global wrappers........ruby-2.3.3 - #gemset created /usr/local/rvm/gems/ruby-2.3.3ruby-2.3.3 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem listruby-2.3.3 - #generating default wrappers........ruby-2.3.3 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).Install of ruby-2.3.3 - #completePlease be aware that you just installed a ruby that requires 2 patches just to be compiled on an up to date linux system.This may have known and unaccounted for security vulnerabilities.Please consider upgrading to ruby-2.4.1 which will have all of the latest security patches.Ruby was built without documentation, to build it run: rvm docs generate-ri[root@localhost 20:27 ~]# ruby -vruby 2.3.3p222 (2016-11-21 revision 56859) [i686-linux][root@localhost 20:28 ~]# gem -v2.6.13[root@localhost 20:28 ~]#

可以看到,不進(jìn)ruby安裝好了2.3.3版本,還把rubygems也安裝好了。

如果要刪除掉某個版本的ruby可以用這個命令:rvm remove 1.9.3。

我們繼續(xù)安裝:

[root@localhost 20:28 ~]# gem install redisFetching: redis-4.0.0.gem (100%)Successfully installed redis-4.0.0Parsing documentation for redis-4.0.0Installing ri documentation for redis-4.0.0Done installing documentation for redis after 3 seconds1 gem installed[root@localhost 20:33 ~]#

看到這里,折騰了兩個晚上終于弄好了。接下來就是使用我們的redis-trib開啟集群了。

為了方便,我把redis-trib.rb這個文件復(fù)制了一份到/usr/local/bin這個目錄下,因為這個目錄在PATH下面,里面的命令可以直接執(zhí)行。

再次確認(rèn)下六個redis節(jié)點的運行是ok的。

[root@localhost 20:35 /usr/local/redis-cluster]# ps aux|grep redisroot   2486 0.1 0.2 46060 2304 ?    Ssl 18:30  0:12 ./7000/redis-server 127.0.0.1:7000 [cluster]root   2491 0.1 0.2 46060 2308 ?    Ssl 18:30  0:13 ./7001/redis-server 127.0.0.1:7001 [cluster]root   2496 0.1 0.2 46060 2308 ?    Ssl 18:30  0:13 ./7002/redis-server 127.0.0.1:7002 [cluster]root   2501 0.1 0.2 46060 2304 ?    Ssl 18:30  0:13 ./7003/redis-server 127.0.0.1:7003 [cluster]root   2506 0.1 0.2 46060 2308 ?    Ssl 18:30  0:14 ./7004/redis-server 127.0.0.1:7004 [cluster]root   2511 0.1 0.2 46060 2304 ?    Ssl 18:30  0:12 ./7005/redis-server 127.0.0.1:7005 [cluster]root   31426 0.0 0.0  6048  784 pts/2  S+  20:35  0:00 grep redis[root@localhost 20:35 /usr/local/redis-cluster]#
[root@localhost 20:35 /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>>> Creating cluster>>> Performing hash slots allocation on 6 nodes...Using 3 masters:127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002Adding replica 127.0.0.1:7003 to 127.0.0.1:7000Adding replica 127.0.0.1:7004 to 127.0.0.1:7001Adding replica 127.0.0.1:7005 to 127.0.0.1:7002M: 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2 127.0.0.1:7000  slots:0-5460 (5461 slots) masterM: 9bf2ee5d32fc350ec411d3eaad18f82492796e99 127.0.0.1:7001  slots:5461-10922 (5462 slots) masterM: 6de604de12b4b4a3be46766bb95ccf4618dc0d75 127.0.0.1:7002  slots:10923-16383 (5461 slots) masterS: f1bdbd841e37825169426486d6502e2cd99b76fe 127.0.0.1:7003  replicates 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2S: 3ff95d180ec47fc58c9c5f73e2f54354128bfe7e 127.0.0.1:7004  replicates 9bf2ee5d32fc350ec411d3eaad18f82492796e99S: a4a09d80a4bb6c82345c376c59e5ae49e1d49701 127.0.0.1:7005  replicates 6de604de12b4b4a3be46766bb95ccf4618dc0d75Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join...>>> Performing Cluster Check (using node 127.0.0.1:7000)M: 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2 127.0.0.1:7000  slots:0-5460 (5461 slots) master  1 additional replica(s)S: f1bdbd841e37825169426486d6502e2cd99b76fe 127.0.0.1:7003  slots: (0 slots) slave  replicates 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2M: 6de604de12b4b4a3be46766bb95ccf4618dc0d75 127.0.0.1:7002  slots:10923-16383 (5461 slots) master  1 additional replica(s)M: 9bf2ee5d32fc350ec411d3eaad18f82492796e99 127.0.0.1:7001  slots:5461-10922 (5462 slots) master  1 additional replica(s)S: 3ff95d180ec47fc58c9c5f73e2f54354128bfe7e 127.0.0.1:7004  slots: (0 slots) slave  replicates 9bf2ee5d32fc350ec411d3eaad18f82492796e99S: a4a09d80a4bb6c82345c376c59e5ae49e1d49701 127.0.0.1:7005  slots: (0 slots) slave  replicates 6de604de12b4b4a3be46766bb95ccf4618dc0d75[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.[root@localhost 20:37 /usr/local/redis-cluster]#

?

在創(chuàng)建的過程中,redis會給出一份預(yù)想的配置給我們看,確定沒問題就輸入yes并回車。系統(tǒng)就給我們創(chuàng)建了三個主,三個從的集群結(jié)構(gòu)。

可以看到All 16384 slots covered。

redis-cli

redis-cli默認(rèn)情況下連接的是本地的6379端口的redis服務(wù)器。

現(xiàn)在有六個端口,所以需要指定參數(shù)。

redis-cli -h xxx -p xxx -a xxx

-h:指定服務(wù)器

-p:指定端口號

-a:指定密碼

-c:開啟集群模式

[root@localhost 20:53 /usr/local/redis-cluster]# redis-cli -c -p 7000127.0.0.1:7000> set name zhangsan-> Redirected to slot [5798] located at 127.0.0.1:7001OK127.0.0.1:7001> exit[root@localhost 20:53 /usr/local/redis-cluster]# redis-cli -c -p 7002127.0.0.1:7002> get name-> Redirected to slot [5798] located at 127.0.0.1:7001"zhangsan"127.0.0.1:7001>

可以看到,已經(jīng)可以共享數(shù)據(jù)了。

?但是,如果我們把某一個主節(jié)點殺掉呢?

[root@localhost 19:52 /usr/local/redis-cluster]# redis-cli -p 7002 debug segfaultError: Server closed the connection[root@localhost 19:53 /usr/local/redis-cluster]# redis-trib.rb check 127.0.0.1:7000>>> Performing Cluster Check (using node 127.0.0.1:7000)M: 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2 127.0.0.1:7000  slots:0-5460 (5461 slots) master  1 additional replica(s)M: 9bf2ee5d32fc350ec411d3eaad18f82492796e99 127.0.0.1:7001  slots:5461-10922 (5462 slots) master  1 additional replica(s)S: 3ff95d180ec47fc58c9c5f73e2f54354128bfe7e 127.0.0.1:7004  slots: (0 slots) slave  replicates 9bf2ee5d32fc350ec411d3eaad18f82492796e99M: a4a09d80a4bb6c82345c376c59e5ae49e1d49701 127.0.0.1:7005  slots:10923-16383 (5461 slots) master  0 additional replica(s)S: f1bdbd841e37825169426486d6502e2cd99b76fe 127.0.0.1:7003  slots: (0 slots) slave  replicates 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.[root@localhost 19:54 /usr/local/redis-cluster]#

可以看到7005端口的節(jié)點已經(jīng)變成主節(jié)點了。那如果繼續(xù)把7005節(jié)點也宕掉呢?

[root@localhost 19:58 /usr/local/redis-cluster]# redis-cli -p 7005 debug segfaultError: Server closed the connection[root@localhost 19:58 /usr/local/redis-cluster]# redis-trib.rb check 127.0.0.1:7000[ERR] Sorry, can't connect to node 127.0.0.1:7005>>> Performing Cluster Check (using node 127.0.0.1:7000)M: 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2 127.0.0.1:7000  slots:0-5460 (5461 slots) master  1 additional replica(s)M: 9bf2ee5d32fc350ec411d3eaad18f82492796e99 127.0.0.1:7001  slots:5461-10922 (5462 slots) master  1 additional replica(s)S: 3ff95d180ec47fc58c9c5f73e2f54354128bfe7e 127.0.0.1:7004  slots: (0 slots) slave  replicates 9bf2ee5d32fc350ec411d3eaad18f82492796e99S: f1bdbd841e37825169426486d6502e2cd99b76fe 127.0.0.1:7003  slots: (0 slots) slave  replicates 6d996f9e34f40b02afe06aa9d3c8f18a41875cb2[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[ERR] Not all 16384 slots are covered by nodes.[root@localhost 19:58 /usr/local/redis-cluster]#

可以看到集群已經(jīng)出現(xiàn)問題了。

追記:

在搭建多機多點集群的時候,遇到以下問題:

1、一直在等待...

>>> 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.......................

解決辦法:確認(rèn)端口是否開放。如果沒有開發(fā),可以修改/etc/sysconfig/iptables文件,開放端口(復(fù)制一行前面開放端口的來修改),然后service iptables restart重啟防火墻。

極端的可以service iptables stop來關(guān)閉防火墻

2、槽被利用

/usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb:119:in `call': ERR Slot 5461 is already busy (Redis::CommandError) from /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis.rb:2742:in `block in method_missing' from /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis.rb:45:in `block in synchronize' from /usr/local/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' from /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis.rb:45:in `synchronize' from /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis.rb:2741:in `method_missing' from /usr/local/bin/redis-trib.rb:212:in `flush_node_config' from /usr/local/bin/redis-trib.rb:776:in `block in flush_nodes_config' from /usr/local/bin/redis-trib.rb:775:in `each' from /usr/local/bin/redis-trib.rb:775:in `flush_nodes_config' from /usr/local/bin/redis-trib.rb:1296:in `create_cluster_cmd' from /usr/local/bin/redis-trib.rb:1700:in `<main>'

解決辦法:刪除掉在redis.conf的dir目錄下的幾個文件redis.conf文件除外。

如果還是有相同的問題,可以考慮對所有節(jié)點執(zhí)行下面兩個命令。

redis-cli -p 端口號-h 主機物理地址 FLUSHALL

redis-cli -p 端口號-h 主機物理地址 CLUSTER RESET SOFT

以上就是Redis集群搭建全記錄的內(nèi)容,相信大家都了解了吧?更多的知識就在武林技術(shù)頻道,武林技術(shù)頻道小編也會及時為你答疑,靜等你的關(guān)注。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

亚洲成人www| 久热中文字幕在线精品首页| 亚洲激情一二三区| 91亚洲一区精品| 香蕉免费一区二区三区在线观看| a毛片不卡免费看片| 欧美—级在线免费片| 久久久久成人片免费观看蜜芽| 亚洲一级片免费观看| 一本到不卡免费一区二区| 国产绳艺sm调教室论坛| 欧美videos另类| 午夜影院免费体验区| 国产精品三级av在线播放| 亚洲精品成人无限看| 久久国产在线视频| 白白在线精品| 一级片免费网址| 91chinesevideo永久地址| 97影院在线观看| 高清av中文在线字幕观看1| 午夜影院免费观看视频| 激情成人综合| 欧美成人午夜剧场免费观看| 男女私大尺度视频| 精品久久久久久久久久久aⅴ| 欧美日韩一区二区综合| 欧美精品久久久久久久久久| 欧洲亚洲在线| 日韩一二三四| 国产伦精一区二区三区| 免费不卡在线视频| 成年人小视频网站| 亚洲自拍高清视频网站| 亚洲精品欧洲精品| 日韩电影免费观看在线观看| 日韩色性视频| 欧美激情亚洲激情| 精品欧美国产| 久久久久久久久久一区二区| 欧美黄色激情视频| 久久夜色精品国产亚洲aⅴ| 国产高清视频免费| 欧美精品hd| 免费毛片在线看片免费丝瓜视频| 邻居大乳一区二区三区| 欧美不卡在线视频| 在线观看日韩| julia一区二区三区中文字幕| 日本成人在线视频网址| 国产精品一二三四五区| 免费在线稳定资源站| 久久99爱视频| av免费在线观看网站| 最新日本在线观看| 麻豆一区二区99久久久久| 男女羞羞电影免费观看| 欧美一区二区三区在线看| 亚洲成人三级在线| 黄色网址在线免费| 91精品国产99久久久久久红楼| 久久夜精品va视频免费观看| 欧美日韩精品在线视频| 久久国产中文字幕| 一区二区三区四区日本视频| 日韩免费av网站| 日本免费色视频| 亚洲在线观看视频| 丁香色欲久久久久久综合网| 国内外成人免费激情在线视频网站| 亚洲欧美小说国产图片| 欧美午夜精品免费| 黄黄的网站在线观看| 丰满人妻一区二区三区免费| 91免费视频大全| 亚洲18色成人| 狠狠色综合欧美激情| av在线电影免费观看| www.成人.com| 在线观看国产精品一区| 亚洲bt欧美bt日本bt| 国产日韩一区二区在线观看| 嫩草精品影院| 美女日批在线观看| 国产一区一一区高清不卡| 欧美视频三区在线播放| 色棕色天天综合网| 久久爱www成人| 日韩av一区二区在线| 精品一二三区| 美女视频久久久| 人人妻人人藻人人爽欧美一区| 人成网站免费观看| 国产亚洲观看| 日韩激情啪啪| 精品国产一区三区| 欧美日韩国产精品激情在线播放| 国产精品7区| 粉嫩绯色av一区二区在线观看| 亚洲女女做受ⅹxx高潮| 国产青春久久久国产毛片| 88av在线播放| av在线播放亚洲| 久操视频免费在线观看| 欧美呦呦网站| 影音先锋在线影院| 91精品久久久久久久久青青| 日韩一区二区免费看| 国内精品久久久久久久影视简单| 精品国产1区二区| 九色porny丨国产首页在线| 手机免费看av网站| 国产老妇伦国产熟女老妇视频| 久久亚洲精精品中文字幕早川悠里| 国产91精品久久久久| 波多野结衣亚洲一区| 动漫视频在线一区| 午夜精品久久久久久久99樱桃| 影音先锋亚洲精品| 国产午夜视频在线| 日本久久成人网| 国产精品久久777777毛茸茸| 91久久在线观看| www.日韩不卡电影av| av免费精品一区二区三区| 老司机免费在线视频| 性xxxx视频播放免费| 精品久久久久久亚洲| 亚洲视频手机在线观看| 国产免费a∨片在线观看不卡| 精品成人国产在线观看男人呻吟| 欧美h视频在线| 全球成人免费直播| 在线观看国产原创自拍视频| 91麻豆精品国产91久久久| 不卡一区二区中文字幕| 欧美一级高清免费播放| 最新av免费在线| 国产美女扒开尿口久久久| 免费色片视频| 久久久91麻豆精品国产一区| 美女尤物久久精品| 日本少妇一区二区| 91精品在线麻豆| 成人一区二区在线观看| 高清乱码毛片入口| 黄在线免费看| 国产性色一区二区| 国产精品日韩久久久久| 久久久久久久久91| 大地资源网在线观看免费官网| 国产精品99久久久久久久久久久久| 色欧美激情视频在线| 中日韩av在线播放| 欧美人与禽猛交乱配视频| 欧美亚洲免费在线一区| 色综合男人天堂| 韩剧1988在线观看免费完整版| 精品69视频一区二区三区| 国产手机视频在线| 国产精选在线观看91| 国产亚洲一区二区三区| 成人在线超碰| 天天色 色综合| 久久久黄色av| 亚洲高清在线播放| 国产伦精品一区二区三区四区视频_| 91精品动漫在线观看| 久热综合在线亚洲精品| 色噜噜亚洲精品中文字幕| 涩涩视频网站在线观看| 最爽无遮挡行房视频在线| 欧美综合77777色婷婷| 国产极品视频在线观看| 午夜dj在线观看高清视频完整版| 深夜做爰性大片蜜桃| 在线视频一区二区三区在线播放| 在线观看亚洲大片短视频| 美女免费观看一区二区三区| 欧美日韩一区二区三区高清| 久久都是精品| 欧美一级xxx| 精品色蜜蜜精品视频在线观看| 欧美激情喷水视频| 91免费看片网站| 免费成人黄色大片| 久久久久久久久久久久久久久99| 91免费精品国自产拍在线不卡| 三级a三级三级三级a十八发禁止| 欧美国产日韩在线视频| 日日摸夜夜添夜夜添精品视频| 天堂中文av在线资源库| 亚洲美女久久精品| 国产又粗又猛又爽又黄视频| 欧美精品中文字幕一区二区| 嫩草视频免费在线观看| 国产精品视频免费在线观看| 性做久久久久久久久久| 337p粉嫩色噜噜噜大肥臀| 久久久亚洲欧洲日产国码αv| 2017天天干夜夜操| 在线看片中文字幕| 国产一区二区丝袜高跟鞋图片| 成人性生生活性生交12| 久久综合伊人77777蜜臀| 巨骚激情综合| 精品国产视频| 国产精品无码久久久久成人app| 精品国产91乱高清在线观看| 午夜性色一区二区三区免费视频| 国语自产精品视频在线看| 美乳视频一区二区| 久久精彩免费视频| 欧美变态网站| 欧美成人xxx| 亚洲熟妇av一区二区三区漫画| 久久无码人妻一区二区三区| 美女av网站| 一区二区自拍偷拍| 欧美孕妇性xxxⅹ精品hd| 欧美成人三级在线| 激情影院在线| 日本韩国一区二区三区| www.xxx国产| 国产精品久久久久久久免费软件| 卡通动漫国产精品| 野外性满足hd| 国产精品免费丝袜| 国产视频在线观看一区二区| √天堂资源地址在线官网| 在线人成日本视频| 国产欧美日韩一级| 中文字幕日韩视频| 亚洲人成伊人成综合网小说| 免费欧美一区| 九色porny丨国产首页在线| 中国一级特黄录像播放| 精品一区久久久| 日韩欧美在线看| 欧美成人家庭影院| 日本亚洲精品| 久草福利在线视频| av一线二线| 91免费人成网站在线观看18| 免费99热在线观看| 欧美影院一区二区| 婷婷精品国产一区二区三区日韩| 给我免费观看片在线电影的| seba5欧美综合另类| 国产精品视频1区| 99re久久| 久久久精品蜜桃| 97电影在线看视频| 五月天av网站| 欧美一级二级三级| 成人精品在线观看| 亚洲美女av在线| a视频网址在线观看| 在线观看国产亚洲| 久久人妻免费视频| 亚洲国产日韩精品在线| 成人在线视频你懂的| 色综合久久天天综线观看| 国产亚洲欧美日韩俺去了| 深夜视频在线免费| 日本激情一区二区三区| 在线观看国产一区| 成人影院在线观看| 一区二区三区视频免费| 黑人中文字幕一区二区三区| 久热精品在线播放| 欧美日韩一区二区欧美激情| 一级毛片aaaaaa免费看| 国产精品伦一区二区三区级视频频| 亚洲高清视频免费观看| 日本不卡一二三区| 国产 欧美 日韩 一区| 日韩欧美国产麻豆| 欧美黄色www| 国产毛片一区| 国产区精品在线观看| 2023国产精品| 国产三级精品三级在线| 国产精品久久久久久久久妇女| 欧美日本啪啪无遮挡网站| 精品久久久久久一区| 国产一级片在线| 亚洲女人****多毛耸耸8| 尤物视频在线观看网站| 美女扒开腿免费视频| 欧美爱爱小视频| 久久99蜜桃综合影院免费观看| 国产视频一区二区不卡| 中文字幕一区二区免费| 一区二区国产精品视频| 亚洲三级在线| 亚洲精品成人少妇| 欧美综合77777色婷婷| 国产精品麻豆免费版| 爱爱的免费视频| 91精品国模一区二区三区| 国产一区二区三区香蕉| 不卡的av中国片| 国产自产一区二区| 国产精品久久色| 成人网址在线观看| 韩国一区二区视频| 成人久久久精品国产乱码一区二区| 国产a∨精品一区二区三区仙踪林| 久久精品视频18| 亚洲在线视频福利| 暖暖在线中文免费日本| 久久国产欧美精品| 亚洲天堂av资源在线观看| 伊人国产在线| 亚洲不卡在线播放| 欧美老熟妇一区二区三区| 在线电影中文字幕| 天天操夜夜操国产精品| 免费成人美女在线观看.| 人xxxx性xxxxx欧美| 色香色香欲天天天影视综合网| 国产一区二区在线观看免费播放| 先锋资源在线视频| 蜜桃传媒九九九| 国产成人精品优优av| 操女生的网站| 蜜臀av色欲a片无码精品一区|