搭建redis集群發現對Redis的bind的誤區

2021-09-24 06:06:22 字數 1552 閱讀 9351

今天在搭建集群的時候修改了bind為伺服器ip,發現redis就啟動不起來了。錯誤如下

才發現自己一直以來對redis中bind的理解的乙個誤區。 

在今天以前,我一直認為redis中的配置檔案中的bind的作用是:用來限制redis伺服器用來接收來自哪些伺服器(ip位址)的redis連線請求。即:只有在bind指定的ip位址的計算機才可以訪問這個redis伺服器。(直到今天我才知道以上的理解都是錯誤)

例如:

bind 127.0.0.1      就是用來限制只有本機可以連線redis服務連線

bind 0.0.0.0         就是用來允許任意計算機都可以連線redis服務連線。

注意:以上的理解都是錯誤的。他們正好是特例,對我們產生了一種錯覺。

不信的的話你們可以試一試:(最好試一試)

bind 10.0.0.1(或者除了127.0.0.1和0.0.0.0之外的任何ip位址)  然後重啟redis,就會發現啟動不起來。

對於為什麼啟動不起來,你們知道了bind的真正意思之後,就會明白啟動不起來的原因。

對於redis中bind的正確的理解是:

如果指定了bind,則說明只允許來自指定網絡卡的redis請求。如果沒有指定,就說明可以接受來自任意乙個網絡卡的redis請求。

我們的配置檔案:bind ip1。  只有我們通過ip1來訪問redis伺服器,才允許連線redis伺服器,如果我們通過ip2來訪問redis伺服器,就會連不上redis。

這就說明了上面例子(bind 10.0.0.1)為什麼啟動不起來,因為我們沒有對應的網絡卡ip位址。這就說明了bind並不是指定redis中可以接受來自哪些伺服器請求的ip位址。

附註:bind 127.0.0.1的解釋:(為什麼只有本機可以連線,而其他不可以連線)

我們從ifconfig可以看出:lo網絡卡(對應127.0.0.1ip位址):是乙個回環位址(local loopback),也就是只有本地才能訪問到這個回環位址,而其他的計算機也只能訪問他們自己的回環位址。

那麼來自這個lo網絡卡的計算機只有本機,所以只有本機可以訪問,而其他計算機不能訪問。

bind 172.18.235.206的話,只要通過這個網絡卡位址(172.18.235.206)來的redis請求,都可以訪問redis。我使用的阿里雲的伺服器。我在另乙個伺服器上去請求              redis-cli 阿里雲公網ip位址        就會連線到redis伺服器。

當你們不使用那個回環位址,基本上外部的計算機都可以訪問本機的redis伺服器。

如果我們想限制只有指定的主機可以連線到redis中,我們只能通過防火牆來控制,而不能通過redis中的bind引數來限制。

使用阿里雲的安全組,來限制指定的主機連線6379埠。

搭建redis集群

sudo apt get install git python python pip sudo pip install redis sudo pip install e git sudo pip install e git git clone ll binaries total 19m 173582...

redis集群搭建

redis集群搭建持久化保證了即使redis服務重啟不會丟失資料,因為redis服務重啟後會將硬碟上持久化的資料恢復到記憶體中,但是當redis伺服器的硬碟損壞了可能會導致資料丟失,如果通過redis的主從複製機制就可以避免這種單點故障。接下來開始redis集群的搭建。1 ruby環境2 建立集群 ...

redis集群搭建

redis集群部署文件 centos6系統 要讓集群正常工作至少需要3 個主節點,在這裡我們要建立6個 redis 節點,其中三個為主節點,三個為從節點,對應的 redis 節點的ip 和埠對應關係如下 127.0.0.1 7000 127.0.0.1 7001 127.0.0.1 7002 127...