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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5.搭建集群

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.搭建集群 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.配置機器1

  • 在演示中,192.168.12.107為當前ubuntu機器的ip
  • 在192.168.12.107上進入Desktop目錄,創建redis目錄
  • 在redis目錄下創建文件7000.conf,編輯內容如下

port 7000
bind 192.168.12.107
daemonize yes
pidfile 7000.pid
cluster-enabled yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes

  • 在redis目錄下創建文件7001.conf,編輯內容如下

port 7001
bind 192.168.12.107
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes

  • 在redis目錄下創建文件7002.conf,編輯內容如下

port 7002
bind 192.168.12.107
daemonize yes
pidfile 7002.pid
cluster-enabled yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes

  • 總結:三個文件的配置區別在port、pidfile、cluster-config-file三項
  • 使用配置文件啟動redis服務

redis-server7000.conf
redis-server 7001.conf
redis-server 7002.conf

?

?

2.配置機器2

  • 在演示中,192.168.12.84為學生的一臺ubuntu機器的ip,為了演示方便,使用ssh命令連接

ssh 192.168.12.84

  • 在192.168.12.84上進入Desktop目錄,創建redis目錄
  • 在redis目錄下創建文件7003.conf,編輯內容如下

port 7003
bind 192.168.12.84
daemonize yes
pidfile 7003.pid
cluster-enabled yes
cluster-config-file 7003_node.conf
cluster-node-timeout 15000
appendonly yes

  • 在redis目錄下創建文件7004.conf,編輯內容如下

port 7004
bind 192.168.12.84
daemonize yes
pidfile 7004.pid
cluster-enabled yes
cluster-config-file 7004_node.conf
cluster-node-timeout 15000
appendonly yes

  • 在redis目錄下創建文件7005.conf,編輯內容如下

port 7005
bind 192.168.12.84
daemonize yes
pidfile 7005.pid
cluster-enabled yes
cluster-config-file 7005_node.conf
cluster-node-timeout 15000
appendonly yes

  • 總結:三個文件的配置區別在port、pidfile、cluster-config-file三項
  • 使用配置文件啟動redis服務

redis-server7003.conf
redis-server 7004.conf
redis-server 7005.conf

?

?

3.創建集群

  • redis的安裝包中包含了redis-trib.rb,用于創建集群
  • 接下來的操作在192.168.12.107機器上進行
  • 將命令復制,這樣可以在任何目錄下調用此命令

sudo cp/usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/

  • 安裝ruby環境,因為redis-trib.rb是用ruby開發的

sudo apt-get install ruby

  • 運行如下命令創建集群

redis-trib.rb create --replicas1 192.168.12.107:7000 192.168.12.107:7001?192.168.12.107:7002 192.168.12.84:7003?192.168.12.84:7004? 192.168.12.84:7005

  • 執行上面這個指令在某些機器上可能會報錯,主要原因是由于安裝的 ruby 不是最新版本
  • 天朝的防火墻導致無法下載最新版本,所以需要設置 gem 的源
  • 解決辦法如下:

-- 先查看自己的 gem 源是什么地址
gem source -l?? --
如果是https://rubygems.org/? 就需要更換
-- 更換指令為
gem sources --add
https://gems.ruby-china.org/ --remove https://rubygems.org/
-- 通過 gem 安裝 redis 的相關依賴
sudo gem install redis
-- 然后重新執行指令
redis-trib.rb create --replicas 1 192.168.12.107:7000 192.168.12.107:7001? 192.168.12.107:7002 192.168.12.84:7003? 192.168.12.84:7004? 192.168.12.84:7005

?

?

數據驗證

  • 根據上圖可以看出,當前搭建的主服務器為7000、7001、7003,對應的從服務器是7004、7005、7002
  • 在192.168.12.107機器上連接7002,加參數-c表示連接到集群

redis-cli -h 192.168.12.107 -c-p 7002

  • 寫入數據

set hello world

?

在哪個服務器上寫數據:CRC16

  • redis cluster在設計的時候,就考慮到了去中心化,去中間件,也就是說,集群中的每個節點都是平等的關系,都是對等的,每個節點都保存各自的數據和整個集群的狀態。每個節點都和其他所有節點連接,而且這些連接保持活躍,這樣就保證了我們只需要連接集群中的任意一個節點,就可以獲取到其他節點的數據
  • Redis集群沒有并使用傳統的一致性哈希來分配數據,而是采用另外一種叫做哈希槽 (hash slot)的方式來分配的。redis cluster 默認分配了 16384 個slot,當我們set一個key 時,會用CRC16算法來取模得到所屬的slot,然后將這個key 分到哈希槽區間的節點上,具體算法就是:CRC16(key) % 16384。所以我們在測試的時候看到set 和 get 的時候,直接跳轉到了7000端口的節點
  • Redis 集群會把數據存在一個 master 節點,然后在這個 master 和其對應的salve 之間進行數據同步。當讀取數據時,也根據一致性哈希算法到對應的 master 節點獲取數據。只有當一個master 掛掉之后,才會啟動一個對應的 salve 節點,充當 master
  • 需要注意的是:必須要3個或以上的主節點,否則在創建集群時會失敗,并且當存活的主節點數小于總節點數的一半時,整個集群就無法提供服務了

?

?

總結

以上是生活随笔為你收集整理的5.搭建集群的全部內容,希望文章能夠幫你解決所遇到的問題。

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