掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
掌握Docker-compose安裝Redis主從集群
創(chuàng)新互聯(lián)2013年至今,公司以網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶上1000+,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
單節(jié)點(diǎn)Redis的并發(fā)能力是有上限的,要進(jìn)一步提高Redis的并發(fā)能力,就需要搭建主從集群,實(shí)現(xiàn)讀寫分離
搭建的主從集群結(jié)構(gòu)如圖如下:
圖片
共包含三個節(jié)點(diǎn),一個主兩個從。這里我們會在同一臺虛擬機(jī)中開啟3個redis實(shí)例,模擬主從集群,信息如下:
|
IP |
PORT |
角色 |
|
192.168.150.102 |
6380 |
master |
|
192.168.150.102 |
6381 |
slave |
|
192.168.150.102 |
6382 |
slave |
因?yàn)橐呀?jīng)學(xué)習(xí)過Docker,所以使用Docker技術(shù)安裝Rdis主從集群
Linux 上我們可以從 Github 上下載它的二進(jìn)制包來使用,選擇適應(yīng)Docker版本的docker compose,使用Docker info 查看Docker對應(yīng)的Docker-Compose版本,我的機(jī)器對應(yīng)的是v2.21.0
docker info將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-composechmod +x /usr/local/bin/docker-composedocker-compose version結(jié)果:
[root@www ~]# docker-compose version
Docker Compose version v2.21.0圖片
如果您覺得本文不錯,歡迎關(guān)注,點(diǎn)贊,收藏支持,您的關(guān)注是我堅(jiān)持的動力!
要在同一臺虛擬機(jī)開啟3個實(shí)例,必須準(zhǔn)備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。確保下面的配置已經(jīng)更改(位置也別錯)
# master
## 創(chuàng)建主節(jié)點(diǎn)的配置文件
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é)點(diǎn)-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é)點(diǎn)-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.conf創(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守護(hù)進(jìn)程啟動時就已經(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è)置,將本機(jī)目錄映射到容器目錄
- "/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守護(hù)進(jìn)程啟動時就已經(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é)點(diǎn)
environment: # 設(shè)置環(huán)境變量,相當(dāng)于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes: # 數(shù)據(jù)卷掛載路徑設(shè)置,將本機(jī)目錄映射到容器目錄
- "/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守護(hù)進(jìn)程啟動時就已經(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é)點(diǎn)
environment: # 設(shè)置環(huán)境變量,相當(dāng)于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes: # 數(shù)據(jù)卷掛載路徑設(shè)置,將本機(jī)目錄映射到容器目錄
- "/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"使用Docker-Compos運(yùn)行edocker-compose-redis-master-slave.yml進(jìn)行安裝Redis主從集群
docker-compose -f docker-compose-redis-master-slave.yml -p redis up -ddocker exec -it redis-master redis-cli -h 192.168.150.102 -p 6380 -a 123456info replication圖片
set name zhangsan
get name圖片
docker exec -it redis-master redis-cli -h 192.168.150.102 -p 6381 -a 123456get nameset name lisi發(fā)現(xiàn)報錯,因?yàn)閺墓?jié)點(diǎn)只能讀取數(shù)據(jù),不能謝數(shù)據(jù)
圖片

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流