新聞中心
今日目標(biāo)
掌握Docker-compose安裝Redis主從集群
創(chuàng)新互聯(lián)2013年至今,公司以網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶上1000+,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
單節(jié)點Redis的并發(fā)能力是有上限的,要進一步提高Redis的并發(fā)能力,就需要搭建主從集群,實現(xiàn)讀寫分離
- 主節(jié)點: 可以對Redis實現(xiàn)讀寫操作
- 從節(jié)點: 只可以對Redis實現(xiàn)讀操作
1.Redis主從集群安裝
1.1. 集群結(jié)構(gòu)
搭建的主從集群結(jié)構(gòu)如圖如下:
圖片
共包含三個節(jié)點,一個主兩個從。這里我們會在同一臺虛擬機中開啟3個redis實例,模擬主從集群,信息如下:
|
IP |
PORT |
角色 |
|
192.168.150.102 |
6380 |
master |
|
192.168.150.102 |
6381 |
slave |
|
192.168.150.102 |
6382 |
slave |
因為已經(jīng)學(xué)習(xí)過Docker,所以使用Docker技術(shù)安裝Rdis主從集群
1.2. Docker-Compose安裝
【步驟一】:選擇合適版本的Docker-Compose
Linux 上我們可以從 Github 上下載它的二進制包來使用,選擇適應(yīng)Docker版本的docker compose,使用Docker info 查看Docker對應(yīng)的Docker-Compose版本,我的機器對應(yīng)的是v2.21.0
docker info【步驟二】:下載Docker-Compose對應(yīng)的穩(wěn)定版本
將Docker-Compose下載后,放在/usr/local/bin/目錄下
curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose【步驟三】:將可執(zhí)行權(quán)限應(yīng)用于Docker-Compose二進制文件
chmod +x /usr/local/bin/docker-compose【步驟四】:測試是否安裝成功
docker-compose version結(jié)果:
[root@www ~]# docker-compose version
Docker Compose version v2.21.0圖片
如果您覺得本文不錯,歡迎關(guān)注,點贊,收藏支持,您的關(guān)注是我堅持的動力!
1.3. 準(zhǔn)備實例和配置
要在同一臺虛擬機開啟3個實例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。確保下面的配置已經(jīng)更改(位置也別錯)
# master
## 創(chuàng)建主節(jié)點的配置文件
mkdir -p /redis-master-slave/master/config /redis-master-slave/master/data
cd /redis-master-slave/master/config/
curl -O -L http://download.redis.io/releases/redis-6.0.20.tar.gz
tar -zxvf redis-6.0.20.tar.gz
cp /redis-master-slave/master/config/redis-6.0.20/redis.conf /redis-master-slave/master/config/redis.conf
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /redis-master-slave/master/config/redis.conf
# slave-1
## 創(chuàng)建從節(jié)點-1的配置文件
mkdir -p /redis-master-slave/slave-1/config /redis-master-slave/slave-1/data
cd /redis-master-slave/slave-1/config/
cp /redis-master-slave/master/config/redis-6.0.20/redis.conf /redis-master-slave/slave-1/config/redis.conf
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /redis-master-slave/slave-1/config/redis.conf
# slave-2
## 創(chuàng)建從節(jié)點-2的配置文件
mkdir -p /redis-master-slave/slave-2/config /redis-master-slave/slave-2/data
cd /redis-master-slave/slave-2/config/
cp /redis-master-slave/master/config/redis-6.0.20/redis.conf /redis-master-slave/slave-2/config/redis.conf
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /redis-master-slave/slave-2/config/redis.conf1.4. docker-compose-redis-master-slave.yml文件的編寫
創(chuàng)建名稱為docker-compose-redis-master-slave.yml用于安裝Redis主從集群的docker-compose文件
version: '3'
services:
# 主
master:
image: redis:6.0.20 # 鏡像'redis:6.0.20 '
container_name: redis-master # 容器名為'redis-master'
restart: unless-stopped # 指定容器退出后的重啟策略為始終重啟,但是不考慮在Docker守護進程啟動時就已經(jīng)停止了的容器
command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly no # 啟動redis服務(wù)并添加密碼為:123456,默認(rèn)不開啟redis-aof方式持久化配置
environment: # 設(shè)置環(huán)境變量,相當(dāng)于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes: # 數(shù)據(jù)卷掛載路徑設(shè)置,將本機目錄映射到容器目錄
- "/redis-master-slave/master/data:/data"
- "/redis-master-slave/master/config/redis.conf:/etc/redis/redis.conf" # `redis.conf`文件內(nèi)容`http://download.redis.io/redis-stable/redis.conf`
ports: # 映射端口
- "6380:6379"
# 從1
slave1:
image: redis:6.0.20 # 鏡像'redis:6.0.20 '
container_name: redis-slave-1 # 容器名為'redis-slave-1'
restart: unless-stopped # 指定容器退出后的重啟策略為始終重啟,但是不考慮在Docker守護進程啟動時就已經(jīng)停止了的容器
command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly no --slaveof 192.168.150.102 6380 --masterauth 123456 # 啟動redis服務(wù)并添加密碼為:123456,默認(rèn)不開啟redis-aof方式持久化配置,連接并認(rèn)證master節(jié)點
environment: # 設(shè)置環(huán)境變量,相當(dāng)于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes: # 數(shù)據(jù)卷掛載路徑設(shè)置,將本機目錄映射到容器目錄
- "/redis-master-slave/slave-1/data:/data"
- "/redis-master-slave/slave-1/config/redis.conf:/etc/redis/redis.conf" # `redis.conf`文件內(nèi)容`http://download.redis.io/redis-stable/redis.conf`
ports: # 映射端口
- "6381:6379"
# 從2
slave2:
image: redis:6.0.20 # 鏡像'redis:6.0.20 '
container_name: redis-slave-2 # 容器名為'redis-slave-2'
restart: unless-stopped # 指定容器退出后的重啟策略為始終重啟,但是不考慮在Docker守護進程啟動時就已經(jīng)停止了的容器
command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly no --slaveof 192.168.150.102 6380 --masterauth 123456 # 啟動redis服務(wù)并添加密碼為:123456,默認(rèn)不開啟redis-aof方式持久化配置,連接并認(rèn)證master節(jié)點
environment: # 設(shè)置環(huán)境變量,相當(dāng)于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes: # 數(shù)據(jù)卷掛載路徑設(shè)置,將本機目錄映射到容器目錄
- "/redis-master-slave/slave-2/data:/data"
- "/redis-master-slave/slave-2/config/redis.conf:/etc/redis/redis.conf" # `redis.conf`文件內(nèi)容`http://download.redis.io/redis-stable/redis.conf`
ports: # 映射端口
- "6382:6379"1.4.1. 運行 -- 主從復(fù)制模式(主寫從讀)
使用Docker-Compos運行edocker-compose-redis-master-slave.yml進行安裝Redis主從集群
docker-compose -f docker-compose-redis-master-slave.yml -p redis up -d1.4.2. 測試
- 1.進入redis-master容器
docker exec -it redis-master redis-cli -h 192.168.150.102 -p 6380 -a 123456- 2.查看集群狀態(tài)
info replication圖片
- 3.在redis-master容器執(zhí)行
set name zhangsan
get name圖片
- 進入redis-slave-1容器
docker exec -it redis-master redis-cli -h 192.168.150.102 -p 6381 -a 123456- 進入redis-slave-1容器執(zhí)行獲取數(shù)據(jù)
get name- 進入redis-slave-1容器執(zhí)行寫數(shù)據(jù)
set name lisi發(fā)現(xiàn)報錯,因為從節(jié)點只能讀取數(shù)據(jù),不能謝數(shù)據(jù)
圖片
網(wǎng)站標(biāo)題:Redis主從集群原理講解和Docker-compose安裝Redis主從集群
文章URL:http://www.5511xx.com/article/dpijphc.html


咨詢
建站咨詢

