中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis主從復制和集群配置

發布時間:2020-08-10 19:17:51 來源:網絡 閱讀:358 作者:張孝國 欄目:系統運維

配置Redis主從復制和集群配置詳解

1.?配置redis主從復制。

1.1.?應用場景

一般來說,要將Redis運用于工程項目中,只使用一臺Redis是萬萬不能的,原因如下:

a) 從結構上,單個Redis服務器會發生單點故障,并且一臺服務器需要處理所有的請求負載,壓力較大;

b) 從容量上,單個Redis服務器內存容量有限,就算一臺Redis服務器內存容量為256G,也不能將所有內存用作Redis存儲內存,一般來說,單臺Redis最大使用內存不應該超過20G。

1.2.?基本原理

電商網站上的商品,一般都是一次上傳,無數次瀏覽的,說專業點也就是"多讀少寫"。

對于這種場景,我們可以使如下這種架構:

redis主從復制和集群配置

1.3.?詳細配置

1) 規劃主備網絡信息,主機192.168.153.164 備機192.168.153.165.保證兩臺機器互聯。

畫圖說明

redis主從復制和集群配置

2) 安裝redis,并配置,可以參考前天的redis安裝步驟。

a) 修改yum源,增加redis的yum配置

b) yum install epel-release -y yum install redis -y

c) 修改配置文件/etc/redis.conf

3) 修改備機配置在備機192.168.153. 165的redis.conf中加下面配置

4) slaveof 192.168.153. 164 6379

5) 測試效果

a) 在主機上設值chenjian=666

redis主從復制和集群配置

b) 在備機上取值get chenjian,正常顯示

redis主從復制和集群配置

redis主從復制和集群配置

c) 注意點:要保證主機先啟動。

1.4.?redis主從復制的特點。

通過主從復制可以允許多個slave server擁有和master server相同的數據庫副本。下面是關于redis主從復制的一些特點

a) master可以有多個slave

b) 除了多個slave連到相同的master外,slave也可以連接其他slave形成圖狀結構

c) 主從復制不會阻塞master。也就是說當一個或多個slave與master進行初次同步數據時,master可以繼續處理client發來的請求。相反slave在初次同步數據時則會阻塞不能處理client的請求。

d) 主從復制可以用來提高系統的可伸縮性,我們可以用多個slave 專門用于client的讀請求,比如sort操作可以使用slave來處理。也可以用來做簡單的數據冗余

e) 可以在master禁用數據持久化,只需要注釋掉master 配置文件中的所有save配置,然后只在slave上配置數據持久化。

2.?配置redis集群

2.1.?應用場景

當主備復制場景,無法滿足主機的單點故障時,需要引入集群配置。

redis主從復制和集群配置

2.2.?基本原理

哨兵選舉機制,如果有半數節點發現某個異常節點,共同決定改異常節點的狀態,如果該節點是主節點,對應的備節點自動頂替為主節點。Sentinel(哨兵)是Redis 的高可用性解決方案:由一個或多個Sentinel 實例 組成的Sentinel 系統可以監視任意多個主服務器,以及這些主服務器屬下的所有從服務器,并在被監視的主服務器進入下線狀態時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器。

2.3.?詳細配置

1)?步驟一,規劃網絡。

用一臺虛擬機模擬6個節點,一臺機器6個節點,創建出3 master、3 salve 環境。虛擬機是 CentOS6.9 ,ip地址192.168.153.164

2)?步驟二,下載redis的源碼包

wget http://download.redis.io/releases/redis-3.2.11.tar.gz將包中的 redis-trib.rb 復制到 /usr/local/bin 目錄下

3)?步驟三, 創建 Redis 節點

首先在 192.168.153.164 機器上 /usr/local 目錄下創建 redis_cluster 目錄;

mkdir redis_cluster  

在 redis_cluster 目錄下,創建名為7001、7002,7003、7004、7005,7006的目錄,

mkdir 7001 7002 7003 7004 7005 7006

并將 redis.conf 拷貝到這三個目錄中,拷貝之前,先修改redis.conf

redis.conf文件按照下面8項修改內容,然后分別拷貝到6個不同的目錄7001,7002,7003,7004,7005,7006中。

port 7000 //端口7000,7002,7003

bind 本機ip //默認ip為127.0.0.1 需要改為其他節點機器可訪問的ip 否則創建集群時無法訪問對應的端口,無法創建集群

daemonize yes //redis后臺運行

pidfile /var/run/redis_7000.pid //pidfile文件對應7000,7001,7002

cluster-enabled yes //開啟集群 把注釋#去掉

cluster-config-file nodes_7000.conf //集群的配置 配置文件首次啟動自動生成 7000,7001,7002

cluster-node-timeout 15000 //請求超時 默認15秒,可自行設置

appendonly yes //aof日志開啟 有需要就開啟,它會每次寫操作都記錄一條日志 

redis主從復制和集群配置

4)?步驟四,啟動各個節點

redis-server /usr/local/redis_cluster/7001/redis.conf

redis-server /usr/local/redis_cluster/7002/redis.conf

redis-server /usr/local/redis_cluster/7003/redis.conf

redis-server /usr/local/redis_cluster/7004/redis.conf

redis-server /usr/local/redis_cluster/7005/redis.conf

redis-server /usr/local/redis_cluster/7006/redis.conf

檢查節點啟動狀態

redis主從復制和集群配置

5)?步驟五,創建集群

創建集群的命令:

/usr/local/bin/redis-trib.rb create --replicas 1 192.168.153.164:7001 192.168.153.164:7002 192.168.153.164:7003 192.168.153.164:7004 192.168.153.164:7005 192.168.153.164:7006

redis主從復制和集群配置

此錯誤是操作系統沒有安裝ruby

解決方法:安裝ruby

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis 報錯

redis主從復制和集群配置

##升級ruby

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

curl -L get.rvm.io | bash -s stable

source /usr/local/rvm/scripts/rvm

rvm list known

rvm install 2.3.3

rvm use 2.3.3

rvm use 2.3.3 --default

ruby --version

redis主從復制和集群配置

再次執行,成功!

gem install redis

redis主從復制和集群配置

6)?驗證集群

redis-cli -c -h 192.168.153.164 -p 7001 其中-c表示以集群方式連接redis,-h指定ip地址,-p指定端口號

redis主從復制和集群配置

redis主從復制和集群配置

保存數據,chenjian保存到12007的槽位,12007所在的節點是7003端口對應的節點。

redis主從復制和集群配置

在其他節點,例如7006上獲取chenjian。

redis主從復制和集群配置

驗證主節點異常時,備節點自動頂替主節點

redis主從復制和集群配置

redis主從復制和集群配置

殺死7002對應的進程,即讓主節點7002異常,檢查7005是否頂替成為主節點。

redis主從復制和集群配置

2.4.?集群的特點(1)所有的redis 節點彼此互聯(PING-PONG 機制),內部使用二進制協議優化傳輸速度和帶寬; (2)節點的fail 是通過集群中超過半數的節點檢測失效時才生效; (3)客戶端與redis 節點直連,不需要中間proxy 層。客戶端不需要連接集群所有節點,連接集群中任何一 個可用節點即可; (4)redis-cluster把所有的物理節點映射到[0-16383]個slot(哈希槽)上,cluster 負責維護 node<->slot<->value 。

2.5.?集群選舉容錯

(1):什么時候整個集群不可用(cluster_state:fail)? A:如果集群任意master 掛掉,且當前master 沒有slave。集群進入fail 狀態,也可以理解成集群的 slot 映射[0-16383]不完整時進入fail 狀態。 ps : redis-3.0.0.rc1 加入 cluster-require-full- coverage 參數,默認關閉,打開集群兼容部分失敗; B:如果集群超過半數以上master 掛掉,無論是否有slave集群進入fail 狀態。ps:當集群不可用時, 所有對集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)錯誤。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沁水县| 阿城市| 九龙县| 康定县| 东光县| 汶川县| 姜堰市| 娄烦县| 唐河县| 谢通门县| 蓝山县| 白河县| 满洲里市| 梁山县| 新宁县| 宁乡县| 黔江区| 合江县| 婺源县| 西峡县| 芜湖市| 中阳县| 涿鹿县| 庆城县| 盐边县| 海淀区| 离岛区| 雷州市| 历史| 甘洛县| 嘉兴市| 盐山县| 北碚区| 岫岩| 杨浦区| 邛崃市| 泾阳县| 定远县| 民权县| 衡阳市| 大冶市|