日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

搭建高可用的redis集群,避免standalone模式带给你的苦难

發(fā)布時(shí)間:2023/12/18 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搭建高可用的redis集群,避免standalone模式带给你的苦难 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  現(xiàn)在項(xiàng)目上用redis的話,很少說(shuō)不用集群的情況,畢竟如果生產(chǎn)上只有一臺(tái)redis會(huì)有極大的風(fēng)險(xiǎn),比如機(jī)器掛掉,或者內(nèi)存爆掉,就比如我們生產(chǎn)環(huán)境

曾今也遭遇到這種情況,導(dǎo)致redis內(nèi)存不夠掛掉的情況,當(dāng)然這些都是我們及其不能容忍的,第一個(gè)必須要做到高可靠,其次才是高性能,好了,下面我來(lái)

逐一搭建一下。

?

一:Redis集群搭建

1. 下載

? ?首先去官網(wǎng)下載較新的3.2.0版本,下載方式還是非常簡(jiǎn)單的,比如官網(wǎng)介紹的這樣。

$ wget http://download.redis.io/releases/redis-3.2.0.tar.gz $ tar xzf redis-3.2.0.tar.gz $ cd redis-3.2.0 $ make

?

2. redis配置

 由于我們要做集群,而且還要redis自帶的redis-trib.rb 能正常運(yùn)行,我們需要在集群中開(kāi)啟三臺(tái)master,三臺(tái)slave,所以這里我需要建立6個(gè)文件

夾,而且文件夾的名稱就使用端口地址的名字,比如:6389. 6380....6384。

3. config配置。

? ?現(xiàn)在directory的分布情況大致如上圖,接下來(lái)要做的事情就是配置redis.conf了,在這里需要配置四個(gè)選項(xiàng)。。。

?

<1> port ?端口地址,比如6380文件夾下面的port就是6380,

# Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. port 6379

?

<2> cluster-enabled 和 cluster-config-file

? ? ? ?這個(gè)顧名思義,首先需要開(kāi)啟redis的cluster模式,然后配置一個(gè)cluster-config-file文件,這個(gè)文件用于存放redis的實(shí)時(shí)信息,redis會(huì)動(dòng)態(tài)追加和修

改這個(gè)conf下面的內(nèi)容信息,不過(guò)要記住,這個(gè)nodes-6379.conf 可以根據(jù) 端口文件夾依次配置,比如6380文件夾可以改成nodes-6380.conf這樣。。。

# Normal Redis instances can't be part of a Redis Cluster; only nodes that are # started as cluster nodes can. In order to start a Redis instance as a # cluster node enable the cluster support uncommenting the following: # cluster-enabled yes# Every cluster node has a cluster configuration file. This file is not # intended to be edited by hand. It is created and updated by Redis nodes. # Every Redis Cluster node requires a different cluster configuration file. # Make sure that instances running in the same system do not have # overlapping cluster configuration file names. # cluster-config-file nodes-6379.conf

?

<3> directory

? ? ? 為了方便管理,我這里配置的root目錄取決于在哪個(gè)文件夾,比如6380下面我的dir就是: dir ./6380/

# Note that you must specify a directory here, not a file name. dir ./6379/

?

<4> protected-mode

? ? ? 這個(gè)是redis 3.2 才追加的一個(gè)功能,從功能注釋中,我們就可以發(fā)現(xiàn),這個(gè)默認(rèn)就是不讓外界可以訪問(wèn)redis,所以這里我們就改為no,可以遠(yuǎn)程訪問(wèn)。

# By default protected mode is enabled. You should disable it only if # you are sure you want clients from other hosts to connect to Redis # even if no authentication is configured, nor a specific set of interfaces # are explicitly listed using the "bind" directive. protected-mode no

?

ok,到現(xiàn)在為止,我們的config就修改完畢了,其他端口的文件夾也可以依次配置之~

?

二:開(kāi)啟redis

? ? 到現(xiàn)在為止,各個(gè)端口文件夾都配置成功了,接下來(lái)準(zhǔn)備開(kāi)啟了,真的好么么噠~~~,窗口太多,有點(diǎn)萌萌的。

?

?

接下來(lái)我們可以看一下,在6379下面是不是有生成node-6379.conf文件,比如下面:

?

三:配置redis-trib.rb

? ?因?yàn)閞edis-trib.rb是ruby寫(xiě)的,而我們的電腦肯定是沒(méi)有ruby和一些配置依賴項(xiàng),不過(guò)沒(méi)關(guān)系,有強(qiáng)大的yum安裝,一切都不是問(wèn)題。

?

1. 執(zhí)行replicas命令

[jack@localhost ~]$ cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 /usr/bin/env: ruby: No such file or directory [jack@localhost ~]$

? ?可以看到ruby是沒(méi)有安裝的,所以下一步我們要安裝ruby了。。。

?

2. 安裝ruby 【一定要是管理員權(quán)限哦】

[jack@localhost ~]$ sudo usage: sudo [-D level] -h | -K | -k | -V usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u username|#uid] usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U username] [-u user name|#uid] [-g groupname|#gid] [command] usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-ggroupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid][VAR=value] [-i|-s] [<command>] usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-ggroupname|#gid] [-p prompt] [-u user name|#uid] file ... [jack@localhost ~]$ su Password: jacsu: incorrect password [jack@localhost ~]$ yum install ruby Loaded plugins: fastestmirror, refresh-packagekit, security You need to be root to perform this command. [jack@localhost ~]$ jack bash: jack: command not found [jack@localhost ~]$ su Password: [root@localhost jack]# yum install ruby Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile* base: mirror.bit.edu.cn* extras: mirror.bit.edu.cn* updates: mirror.bit.edu.cn Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package ruby.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Processing Dependency: ruby-libs = 1.8.7.374-4.el6_6 for package: ruby-1.8.7.374-4.el6_6.x86_64 --> Processing Dependency: libruby.so.1.8()(64bit) for package: ruby-1.8.7.374-4.el6_6.x86_64 --> Running transaction check ---> Package ruby-libs.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Processing Dependency: libreadline.so.5()(64bit) for package: ruby-libs-1.8.7.374-4.el6_6.x86_64 --> Running transaction check ---> Package compat-readline5.x86_64 0:5.2-17.1.el6 will be installed --> Finished Dependency ResolutionDependencies Resolved================================================================================Package Arch Version Repository Size ================================================================================ Installing:ruby x86_64 1.8.7.374-4.el6_6 base 538 k Installing for dependencies:compat-readline5 x86_64 5.2-17.1.el6 base 130 kruby-libs x86_64 1.8.7.374-4.el6_6 base 1.7 MTransaction Summary ================================================================================ Install 3 Package(s)Total download size: 2.3 M Installed size: 7.8 M Is this ok [y/N]: y Downloading Packages: (1/3): compat-readline5-5.2-17.1.el6.x86_64.rpm | 130 kB 00:00 (2/3): ruby-1.8.7.374-4.el6_6.x86_64.rpm | 538 kB 00:00 (3/3): ruby-libs-1.8.7.374-4.el6_6.x86_64.rpm | 1.7 MB 00:02 -------------------------------------------------------------------------------- Total 747 kB/s | 2.3 MB 00:03 warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Importing GPG key 0xC105B9DE:Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>Package: centos-release-6-5.el6.centos.11.1.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5)From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running TransactionInstalling : compat-readline5-5.2-17.1.el6.x86_64 1/3 Installing : ruby-libs-1.8.7.374-4.el6_6.x86_64 2/3 Installing : ruby-1.8.7.374-4.el6_6.x86_64 3/3 Verifying : compat-readline5-5.2-17.1.el6.x86_64 1/3 Verifying : ruby-libs-1.8.7.374-4.el6_6.x86_64 2/3 Verifying : ruby-1.8.7.374-4.el6_6.x86_64 3/3 Installed:ruby.x86_64 0:1.8.7.374-4.el6_6 Dependency Installed:compat-readline5.x86_64 0:5.2-17.1.el6 ruby-libs.x86_64 0:1.8.7.374-4.el6_6 Complete! [root@localhost jack]#

?

3. 安裝rubygems

? ? ?接著我們?cè)俅芜\(yùn)行 replicas命令,看看會(huì)怎么樣。。。?

[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 cluster/redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)from cluster/redis-trib.rb:24 [root@localhost jack]#

? ? ?結(jié)果苦逼了,還是報(bào)錯(cuò),看提示貌似是少了一個(gè)rubygems,這次我們還是通過(guò)yum安裝。

[root@localhost jack]# yum install -y rubygems Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile* base: mirror.bit.edu.cn* extras: mirror.bit.edu.cn* updates: mirror.bit.edu.cn Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package rubygems.noarch 0:1.3.7-5.el6 will be installed --> Processing Dependency: ruby-rdoc for package: rubygems-1.3.7-5.el6.noarch --> Running transaction check ---> Package ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Processing Dependency: ruby-irb = 1.8.7.374-4.el6_6 for package: ruby-rdoc-1.8.7.374-4.el6_6.x86_64 --> Running transaction check ---> Package ruby-irb.x86_64 0:1.8.7.374-4.el6_6 will be installed --> Finished Dependency ResolutionDependencies Resolved================================================================================Package Arch Version Repository Size ================================================================================ Installing:rubygems noarch 1.3.7-5.el6 base 207 k Installing for dependencies:ruby-irb x86_64 1.8.7.374-4.el6_6 base 317 kruby-rdoc x86_64 1.8.7.374-4.el6_6 base 381 kTransaction Summary ================================================================================ Install 3 Package(s)Total download size: 905 k Installed size: 3.0 M Downloading Packages: (1/3): ruby-irb-1.8.7.374-4.el6_6.x86_64.rpm | 317 kB 00:00 (2/3): ruby-rdoc-1.8.7.374-4.el6_6.x86_64.rpm | 381 kB 00:00 (3/3): rubygems-1.3.7-5.el6.noarch.rpm | 207 kB 00:00 -------------------------------------------------------------------------------- Total 625 kB/s | 905 kB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running TransactionInstalling : ruby-irb-1.8.7.374-4.el6_6.x86_64 1/3 Installing : ruby-rdoc-1.8.7.374-4.el6_6.x86_64 2/3 Installing : rubygems-1.3.7-5.el6.noarch 3/3 Verifying : ruby-rdoc-1.8.7.374-4.el6_6.x86_64 1/3 Verifying : ruby-irb-1.8.7.374-4.el6_6.x86_64 2/3 Verifying : rubygems-1.3.7-5.el6.noarch 3/3 Installed:rubygems.noarch 0:1.3.7-5.el6 Dependency Installed:ruby-irb.x86_64 0:1.8.7.374-4.el6_6 ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6 Complete! [root@localhost jack]#

?

4. 安裝redis驅(qū)動(dòng)

?

? ?還是繼續(xù)不死心,我們繼續(xù)運(yùn)行replicas命令命令。

[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 /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 cluster/redis-trib.rb:25 [root@localhost jack]#

?

臥槽,還是有問(wèn)題,這次貌似是一個(gè)gem_original_require沒(méi)有安裝,當(dāng)然這個(gè)一般是說(shuō)ruby版本太老了,所以現(xiàn)在親要么升級(jí)ruby版本,要么直接安裝

ruby的redis驅(qū)動(dòng)。

[root@localhost jack]# gem install redis Successfully installed redis-3.3.0 1 gem installed Installing ri documentation for redis-3.3.0... Installing RDoc documentation for redis-3.3.0...

?

6. 運(yùn)行replicas命令

? ?終于貌似所有的依賴我們都解決了,接下來(lái)就可以真的執(zhí)行了,真是一把辛酸淚啊。。。操。。。

[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384 >>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 Adding replica 192.168.161.133:6382 to 192.168.161.133:6379 Adding replica 192.168.161.133:6383 to 192.168.161.133:6380 Adding replica 192.168.161.133:6384 to 192.168.161.133:6381 M: fdae457e803e2e04a7c549c69b44a2beefdae3bc 192.168.161.133:6379slots:0-5460 (5461 slots) master M: 74285cee0fa65e64b443ecc630e447a8a65ee9f8 192.168.161.133:6380slots:5461-10922 (5462 slots) master M: 14ed067a1b85044325d5800fa8479a6b4e41a10c 192.168.161.133:6381slots:10923-16383 (5461 slots) master S: c50b1ff1fe3a00b16703f3b5705d2dafe046240b 192.168.161.133:6382replicates fdae457e803e2e04a7c549c69b44a2beefdae3bc S: 8f7bd92f7ffb48e327820693a5820b5be7ea5556 192.168.161.133:6383replicates 74285cee0fa65e64b443ecc630e447a8a65ee9f8 S: 4a85ed078b4c99afad7f3a9a8df09082c681a649 192.168.161.133:6384replicates 14ed067a1b85044325d5800fa8479a6b4e41a10c Can 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 cluster Waiting for the cluster to join.... >>> Performing Cluster Check (using node 192.168.161.133:6379) M: fdae457e803e2e04a7c549c69b44a2beefdae3bc 192.168.161.133:6379slots:0-5460 (5461 slots) master M: 74285cee0fa65e64b443ecc630e447a8a65ee9f8 192.168.161.133:6380slots:5461-10922 (5462 slots) master M: 14ed067a1b85044325d5800fa8479a6b4e41a10c 192.168.161.133:6381slots:10923-16383 (5461 slots) master M: c50b1ff1fe3a00b16703f3b5705d2dafe046240b 192.168.161.133:6382slots: (0 slots) masterreplicates fdae457e803e2e04a7c549c69b44a2beefdae3bc M: 8f7bd92f7ffb48e327820693a5820b5be7ea5556 192.168.161.133:6383slots: (0 slots) masterreplicates 74285cee0fa65e64b443ecc630e447a8a65ee9f8 M: 4a85ed078b4c99afad7f3a9a8df09082c681a649 192.168.161.133:6384slots: (0 slots) masterreplicates 14ed067a1b85044325d5800fa8479a6b4e41a10c [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. [root@localhost jack]#

從上面可以看到,trib程序告知我們是否用 6379,6380,6381 作為主, 6382,6383,6384作為從。。然后我就恩準(zhǔn)了。。就這樣我們的集群

就創(chuàng)建好了,好了,這篇就講到這里,也不是特別復(fù)雜吧~~~

?

轉(zhuǎn)載于:https://www.cnblogs.com/huangxincheng/p/5615037.html

總結(jié)

以上是生活随笔為你收集整理的搭建高可用的redis集群,避免standalone模式带给你的苦难的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。