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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java redis 多节点,Redis单机多节点集群部署,超简单

發布時間:2025/3/15 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java redis 多节点,Redis单机多节点集群部署,超简单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、在虛擬機中部署具有三個主節點,三個從節點的集群(注,必須要有從節點),虛擬機的IP地址為192.168.133.129,三個主節點的部口號分別為7001(從:7004)、7002(從:7005)、7003(從:7006)。

2、安裝Redis,教程網上都有。這里我們已經準備好的Redis二進制安裝文件,放在/opt/modules/redis/bin目錄下。再在redis目錄下新建data、log、conf三個目錄。分別存放集群數據、日志和配置文件。

3、節點1的配置文件(conf/redis-7001.conf)如下:# 以守護進程方式啟動

daemonize yes

# 指定進程文件路徑,注意其它節點要有相應的變動,把7001變成對應的端口號

pidfile "/opt/modules/redis/run/redis-7001.pid"

# 指定節點的端口

port 7001

# 指定節點的日志文件

logfile "/opt/modules/redis/log/redis-7001.log"

# 指定節點的數據文件

dbfilename "dump-7001.rdb"

# 指定集群的數據目錄

dir "/opt/modules/redis/data"

# 啟用集群

cluster-enabled yes

# 集群文件名稱,這個文件會有Redis自動生成并放在data目錄下

cluster-config-file nodes-7001.conf

# 集群節點超時時間

cluster-node-timeout 10000

# 下面兩行為了設置節點的密碼,以便可以遠程訪問

masterauth 123456

requirepass 123456

# 綁定IP地址,如果不寫黙認綁定127.0.0.1,遠程就無法訪問

bind 192.168.133.129

其它節點的配置文件直接復制7001節點的配置文件并將7001改成對應的值(7002-7006),配置文件名稱也是redis-7002/7006.conf。放在conf目錄下。

4、上面完成之后,這里我寫了一個腳本,啟動這6個節點,注意這個腳本要放在redis目錄下,由于腳本中的命令寫的是相對路徑,所以放在redis目錄下,也就是與bin目錄同級。腳本文件內容如下:$>pwd

$>/opt/modules/redis

$>cat start.sh

bin/redis-server conf/redis-7001.conf

bin/redis-server conf/redis-7002.conf

bin/redis-server conf/redis-7003.conf

bin/redis-server conf/redis-7004.conf

bin/redis-server conf/redis-7005.conf

bin/redis-server conf/redis-7006.conf

$>sudo chmod +x start.sh

5、再寫一個停止6個節點的腳本文件,也放在redis目錄下。文件名稱為stop.sh$> stop.sh

bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 shutdown

bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 shutdown

bin/redis-cli -h 192.168.133.129 -p 7003 -a 123456 shutdown

bin/redis-cli -h 192.168.133.129 -p 7004 -a 123456 shutdown

bin/redis-cli -h 192.168.133.129 -p 7005 -a 123456 shutdown

bin/redis-cli -h 192.168.133.129 -p 7006 -a 123456 shutdown

$> chmod +x stop.sh

6、運行start.sh啟動6個節點:$> cd /opt/modules/redis

$> sudo ./start.sh

7、好了,現在每個節點都啟動起來了,可以用以下命令查看集群狀態:$> bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes

注意,這個命令只顯示了7001節點是master節點,同樣查看7002-7006,都是獨立的master主節點。

8、上面的節點都是獨立的,現在讓它們組成集群,相互發現自己,注意這個操作只需要操作一遍,redis會自己保存集群的配置文件,也就是在節點配置文件中指定的集群配置文件的名稱。集群發現腳本如下,文件名為meet.sh,也放在redis目錄下:$> cat meet.sh

bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7002

bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7003

bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7004

bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7005

bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster meet 192.168.133.129 7006

解釋:上面第一句命令讓7001節點發現了7002節點,這樣7001、7002就組成了一個集群,再讓7001發現7003,由于7001已經在一個集群中了,所以7003就加入到集群中,這個過程,你也可以用7002節點去發現7003道理一樣。

好了,現在再執行$> bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes

這條命令就會顯示6個master節點。

8、為主節點分配slots,注意:現在主從節點還沒有分別,我們只是人為定義7001、7002、7003這三個節點為主節點,分配槽的腳本如下:$> cat slot.sh

for i in {0..5400};do bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster addslots $i; done

for i in {5401..11000};do bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 cluster addslots $i; done

for i in {11001..16383};do bin/redis-cli -h 192.168.133.129 -p 7003 -a 123456 cluster addslots $i; done

注意:槽數量一定,一共有16384個槽,編號為0..16383,上述命令平均分配三個節點。

9、現在所有的節點都是主節點,現在要將7004、7005、7006這三個節點指定為7001、7002、7003的從節點。命令如下:$> cd /opt/modules/redis

$> bin/redis-cli -h 192.168.133.129 -p 7004 -a 123456 cluster replicate 89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2

$> bin/redis-cli -h 192.168.133.129 -p 7005 -a 123456 cluster replicate 08db1cecd4770dd1c086b3cf8c34acb457bb0ebc

$> bin/redis-cli -h 192.168.133.129 -p 7006 -a 123456 cluster replicate 7e618dc71117821d2cbfb908c7a07460a1a286fd

上述命令中的89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2是7001節點的ID,08db1cecd4770dd1c086b3cf8c34acb457bb0ebc是7002節點的ID,7e618dc71117821d2cbfb908c7a07460a1a286fd是7003節點的ID。這個ID可以使用命令查看:$> bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes

7e618dc71117821d2cbfb908c7a07460a1a286fd 192.168.133.129:7003@17003 master - 0 1555847474000 5 connected 11001-16383

f3b669f5654eddb5b782bf72bf390dc702b9e201 192.168.133.129:7006@17006 slave 7e618dc71117821d2cbfb908c7a07460a1a286fd 0 1555847475087 5 connected

7196289749e68d25fe77f3e66c44becbe37cc791 192.168.133.129:7005@17005 slave 08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 0 1555847472037 4 connected

89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2 192.168.133.129:7001@17001 myself,master - 0 1555847471000 1 connected 0-5400

cb015faba5d1ead01787173998d56852935a19b2 192.168.133.129:7004@17004 slave 89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2 0 1555847473048 2 connected

08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 192.168.133.129:7002@17002 master - 0 1555847474077 3 connected 5401-11000

從節點分配好后,如以上命令所示。注意分配置從節點時,這個節點上必須沒有被分配任何一個槽,并且節點中沒有數據。

10、這個集群就分配好了,可以使用./stop.sh停止,這6個節點,再用./start.sh啟動這6個節點,再用$> bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 cluster nodes

這個命令查看,集群狀態是對的。redis會自動保存集群的狀態。

11、你可以停止7001主節點,發現7004的狀態由slave狀態變成master狀態。$> bin/redis-cli -h 192.168.133.129 -p 7001 -a 123456 shudown

$> bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 cluster nodes

89bd19f86c9eaa04f6b9aa8e1813a5bfe379c5f2 192.168.133.129:7001@17001 master,fail - 1555848004665 1555848000000 1 disconnected

f3b669f5654eddb5b782bf72bf390dc702b9e201 192.168.133.129:7006@17006 slave 7e618dc71117821d2cbfb908c7a07460a1a286fd 0 1555848029000 5 connected

cb015faba5d1ead01787173998d56852935a19b2 192.168.133.129:7004@17004 master - 0 1555848031010 6 connected 0-5400

08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 192.168.133.129:7002@17002 myself,master - 0 1555848029000 3 connected 5401-11000

7196289749e68d25fe77f3e66c44becbe37cc791 192.168.133.129:7005@17005 slave 08db1cecd4770dd1c086b3cf8c34acb457bb0ebc 0 1555848030000 4 connected

7e618dc71117821d2cbfb908c7a07460a1a286fd 192.168.133.129:7003@17003 master - 0 1555848030000 5 connected 11001-16383

現在可以看到7004已經成為主節點了,下次再將7001啟動起來,7001會自動成為7004的從節點。

12、設置數據:$> bin/redis-cli -h 192.168.133.129 -p 7002 -a 123456 set foo 1

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

(error) MOVED 12182 192.168.133.129:7003

在7002節點上將foo鍵設置為1時,報了一個錯,(error) MOVED 12182 192.168.133.129:7003。注意,這是正常,Redis告訴你,這個foo鍵的hash槽在7003節點中,不在7002節點中,你應該在7003節點設置foo這個鍵的值。

如果使用redis desktop manager連接redis集群,如果連接了7002,再設置set foo 1時,會自動切換到7003節點的連接,將設置成功。

如果使用Java的Jedis連接集群也是有專門的配置方式,在設置一個鍵時,如果槽不在這個節點上,Redis會給出反饋,客戶端會自動切換到對應節點上再設置。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java redis 多节点,Redis单机多节点集群部署,超简单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。