當前位置:網站首頁>【Redis 幹貨領域】幫你完全搞定 Cluster 原理(實踐篇)(集群的搭建Redis 的下載、安裝、啟動(單實例))

【Redis 幹貨領域】幫你完全搞定 Cluster 原理(實踐篇)(集群的搭建Redis 的下載、安裝、啟動(單實例))

2022-01-27 22:32:39 程序員社區

【Redis 幹貨領域】幫你完全搞定 Cluster 原理(實踐篇)(集群的搭建Redis 的下載、安裝、啟動(單實例)) , 你了解嗎? 本文就為大家帶來了一篇 【Redis 幹貨領域】幫你完全搞定 Cluster 原理(實踐篇)(集群的搭建Redis 的下載、安裝、啟動(單實例)) 一起看看吧!
另外小編還收集了很多不錯的編程資源,希望對你有幫助:點擊查看
祝您生活愉快~

集群的搭建

Redis 的下載、安裝、啟動(單實例)
下載 redis 壓縮包,然後解壓壓縮文件, 我們統一將 Redis 下載在/opt 目錄下

進入到解壓縮後的 redis 文件目錄(此時可以看到 Makefile 文件),編譯 redis 源文件;

執行命令如下

$ cd /opt$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz$ tar zxvf redis-4.0.9.tar.gz$ cd redis-4.0.9$ make$ make install

1.把編譯好的 redis 源文件安裝到/usr/local/redis 目錄下,如果/local 目錄下沒有 redis 目錄,會自動新建 redis 目錄;

2.然後修改該 $ ./src/redis-server redis.conf 文件->daemonize:no 改為 daemonize:yes;

3.進入/usr/local/redis/bin 目錄,直接./redis-server 啟動 redis(此時為前端啟動 redis);

4.注意,由於 Redis 的保護模式,只綁定了本機的 127.0.0.1,從其他機器是不能訪問的。所以我們需要添加本機的 ip

192.168.xxx.xxx。

1.在/bin 目錄下通過./redis-server redis.conf 啟動 redis(此時為後臺啟動)。

$ cd /opt/redis-4.0.9$ ./src/redis-server .redis.conf

集群的規劃

根據官方推薦,集群部署至少要 3 臺以上的 master 節點,最好使用 3 主 3 從六個節點的模式。

配置文件
咱們准備 6 個配置文件 ,端口 7001,7002,7003,7004,7005,7006

並在 redis-cluster 目錄下創建 6 個節點的配置文件。分別為:

redis-7000.confredis-7001.confredis-7002.confredis-7003.confredis-7004.confredis-7005.conf

後面的 7000,7001 等是 redis 啟動的端口號。接下來編輯文件的內容:

#該集群階段的端口port 7000#為每一個集群節點指定一個pid_filepidfile /var/run/redis_7000.pid#在bind指令後添加本機的ipbind 127.0.0.1 149.28.37.147#找到Cluster配置的代碼段,使得Redis支持集群cluster-enabled yes#每一個集群節點都有一個配置文件,這個文件是不能手動編輯的。確保每一個集群節點的配置文件不通cluster-config-file nodes-7000.conf#集群節點的超時時間,單比特:ms,超時後集群會認為該節點失敗cluster-node-timeout 5000#最後將appendonly改成yesappendonly yes

啟動 redis 節點

挨個啟動節點

看以下啟動情况

首先我們創建 Redis 的配置文件目錄,如下:

$ cd /opt$ mkdir redis-cluster

這樣一個節點的配置就完成,其他的 5 個節點也做同樣的配置。並將 6 個節點的 Redis 實例啟動,使用這 6 個節點創建集群:

$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7000.conf &$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7001.conf &$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7002.conf &$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7003.conf &$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7004.conf &$ nohup /opt/redis-4.0.9/src/redis-server /opt/redis-cluster/redis-7005.conf &

要搭建集群的話,需要使用一個工具(脚本文件),這個工具在 redis 解壓文件的源代碼裏。因為這個工具是一個 ruby 脚本文件,所以這個工具的運行需要 ruby 的運行環境,就相當於 java 語言的運行需要在 jvm 上。所以需要安裝 ruby,指令如下:

yum install ruby

然後需要把 ruby 相關的包安裝到服務器,我這裏用的是 redis-3.0.0.gem,大家需要注意的是:redis 的版本和 ruby 包的版本最好保持一致。

將 Ruby 包安裝到服務器:需要先下載再安裝,安裝命令如下:

gem install redis-3.0.0.gem

上一步中已經把 ruby 工具所需要的運行環境和 ruby 包安裝好了,接下來把這個 ruby 脚本工具複制到 usr/local/redis-cluster 目錄下。

那麼這個 ruby 脚本工具在哪裏呢?在 redis 解壓文件的源代碼裏,即 redis/src 目錄下的 redis-trib.rb 文件。

將該 ruby 工具(redis-trib.rb)複制到 redis-cluster 目錄下,指令如下:

cp redis-trib.rb /usr/local/redis-cluster

然後使用該脚本文件搭建集群,指令如下:

注意:此處大家應該根據自己的服務器 ip 輸入對應的 ip 地址!

$ /opt/redis-4.0.9/src/redis-trib.rb create --replicas 1 149.28.37.147:7000 149.28.37.147:7001 149.28.37.147:7002 149.28.37.147:7003 149.28.37.147:7004 149.28.37.147:7005

1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluste r-replicas 1

--replicas 1 錶示我們希望為集群中的每個主節點創建一個從節點。

執行命令後會顯示:

>>> Creating cluster>>> Performing hash slots allocation on 6 nodes...>>> Using 3 masters:>>> 149.28.37.147:7000>>> 149.28.37.147:7001>>> 149.28.37.147:7002---------------------------------------------# 執行成功結果如下# 我們可以看到 7001,7002,7003 成為了 master 節點,# 分別占用了 slot [0-5460],[5461-10922],[10923-16383]>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> Slots 10923 - 16383-------------------------------------------->>> Adding replica 149.28.37.147:7004 to 149.28.37.147:7000>>> Adding replica 149.28.37.147:7005 to 149.28.37.147:7001>>> Adding replica 149.28.37.147:7003 to 149.28.37.147:7002>>> Trying to optimize slaves allocation for anti-affinity>>> [WARNING] Some slaves are in the same host as their master>>> M: 65625091304b0fa2dd75a00f62b6aceac1701094 149.28.37.147:7000>>> slots:0-5460 (5461 slots) master>>> M: 4da569bf8402e4f75ab6e0fe7076919c22e3f900 149.28.37.147:7001>>> slots:5461-10922 (5462 slots) master>>> M: b977680e24f23f8fec96876d9014803ca752e2e2 149.28.37.147:7002>>> slots:10923-16383 (5461 slots) master>>> S: 7183e47a64bca23157140229352455d1a1407dc2 149.28.37.147:7003>>> replicates b977680e24f23f8fec96876d9014803ca752e2e2>>> S: b2f916a643fefef1d43dbd1ef5d22f72c0ee43d6 149.28.37.147:7004>>> replicates 65625091304b0fa2dd75a00f62b6aceac1701094>>> S: e362d9aae5fe3e9c343d266a5ab952272e0e37b0 149.28.37.147:7005>>> replicates 4da569bf8402e4f75ab6e0fe7076919c22e3f900>>> 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 149.28.37.147:7000)>>> M: 65625091304b0fa2dd75a00f62b6aceac1701094 149.28.37.147:7000>>> slots:0-5460 (5461 slots) master>>> 1 additional replica(s)>>> M: b977680e24f23f8fec96876d9014803ca752e2e2 149.28.37.147:7002>>> slots:10923-16383 (5461 slots) master>>> 1 additional replica(s)>>> S: e362d9aae5fe3e9c343d266a5ab952272e0e37b0 149.28.37.147:7005>>> slots: (0 slots) slave>>> replicates 4da569bf8402e4f75ab6e0fe7076919c22e3f900>>> S: b2f916a643fefef1d43dbd1ef5d22f72c0ee43d6 149.28.37.147:7004>>> slots: (0 slots) slave>>> replicates 65625091304b0fa2dd75a00f62b6aceac1701094>>> M: 4da569bf8402e4f75ab6e0fe7076919c22e3f900 149.28.37.147:7001>>> slots:5461-10922 (5462 slots) master>>> 1 additional replica(s)>>> S: 7183e47a64bca23157140229352455d1a1407dc2 149.28.37.147:7003>>> slots: (0 slots) slave>>> replicates b977680e24f23f8fec96876d9014803ca752e2e2>>> [OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...>>> [OK] All 16384 slots covered.>>> 集群搭建完畢。我們可以使用Spring-Boot非常方便的去訪問Redis集群了。

數據驗證

注意 集群模式下要帶參數 -c,錶示集群,不然節點之間是無法自動跳轉的!如下圖可以看到,存儲的數據(key-value)是均勻分配到不同的節點的:

[[email protected] redis-5.0.5]# redis-cli -p 7100 -c

設置 k1 v1

127.0.0.1:7001> set k1 v1-> Redirected to slot [12706] located at 127.0.0.1:7003OK

這可以看到集群的特點:把數據存到計算得出的 slot,這裏還自動跳到了 7003

127.0.0.1:7003> get k1"v1"

我們還回到 7001 獲取 k1 試試

[[email protected] redis-5.0.5]# redis-cli -p 7001 -c127.0.0.1:7001> get k1-> Redirected to slot [12706] located at 127.0.0.1:7003"v1"

我們可以看到重定向的過程

127.0.0.1:7003>

Redis 集群基本命令:

1.查看當前集群信息

cluster info

2.查看集群裏有多少個節點

cluster nodes

碼字不易 請大家給我點贊+關注+評論!一條龍

如果想要獲取學習資料,可在下方獲取聯系方式;
或者想要一起討論問題的也加入技術交流Q群

添加助手小姐姐的 VX:  Mlzg5201314zz 或者加入技術交流Q群:614478470記得備注[簡書]

版權聲明
本文為[程序員社區]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201272232390356.html

隨機推薦