Docker部署系列之Docker Compose安装Redis三主三从集群
總結(jié)/朱季謙
在日常開(kāi)發(fā)或者編程當(dāng)中,經(jīng)常需要用到redis集群,若是按照傳統(tǒng)的方式,一個(gè)機(jī)器一個(gè)機(jī)器搭建,難免過(guò)于繁瑣,故而可以通過(guò)dock er-compose編排方式,快速搭建。我在搭建過(guò)程當(dāng)中,將操作記錄下來(lái),方便以后需要搭建三主三從節(jié)點(diǎn)時(shí),可以基于以前的成功經(jīng)驗(yàn),快速搭建起來(lái)。
一、環(huán)境準(zhǔn)備
準(zhǔn)備三臺(tái)機(jī)器,在每臺(tái)機(jī)器上,計(jì)劃安裝一個(gè)Redis主節(jié)點(diǎn)和一個(gè)Redis從節(jié)點(diǎn)。
| 機(jī)器 | Redis節(jié)點(diǎn) | 節(jié)點(diǎn)端口 |
|---|---|---|
| 192.168.31.130 | redis-master/redis-slave | 6379/6380 |
| 192.168.31.131 | redis-master/redis-slave | 6379/6380 |
| 192.168.31.132 | redis-master/redis-slave | 6379/6380 |
二、文件準(zhǔn)備
2.1、創(chuàng)建Redis節(jié)點(diǎn)目錄
分別在192.168.31.130、192.168.31.131、192.168.31.132機(jī)器上,執(zhí)行以下命令,創(chuàng)建Redis主從節(jié)點(diǎn)文件目錄——
for dir in redis-master/data redis-slave/data; do mkdir -p "/opt/docker/redis-cluster/$dir";done
2.2、創(chuàng)建節(jié)點(diǎn)配置文件redis.conf
分別在192.168.31.130、192.168.31.131、192.168.31.132機(jī)器上的/opt/docker/redis-cluster/redis-master/與/opt/docker/redis-cluster/redis-slave/目錄下,創(chuàng)建一個(gè)redis.conf文件,文件內(nèi)容包括以下屬性——
port 6379 #指定 Redis 服務(wù)器監(jiān)聽(tīng)的端口號(hào),這是客戶端與 Redis 服務(wù)器進(jìn)行通信的端口。
save 900 1#在給定時(shí)間間隔內(nèi)有多少次寫(xiě)操作時(shí),Redis 將執(zhí)行自動(dòng)的快照(生成 RDB 文件)。
save 300 10
save 60 10000
dbfilename dump.rdb#指定生成的 RDB 文件的名稱(chēng)。
dir /data #指定持久化文件的存儲(chǔ)目錄。
appendonly yes #啟用 AOF(Append-Only File)持久化模式。
appendfilename "appendonly.aof" #指定 AOF 文件的名稱(chēng)。
appendfsync everysec #控制 AOF 緩沖區(qū)的內(nèi)容何時(shí)同步到硬盤(pán)。這里的選項(xiàng) everysec 表示每秒同步一次
cluster-enabled yes #啟用 Redis 集群功能。
cluster-config-file nodes.conf #指定保存集群拓?fù)湫畔⒌呐渲梦募?cluster-node-timeout 5000 #設(shè)置節(jié)點(diǎn)間通信的超時(shí)時(shí)間,單位為毫秒。
快捷指令,直接在linux運(yùn)行——
for dir in redis-master redis-slave; do
if [ "$dir" == "redis-master" ]; then
port=6379
elif [ "$dir" == "redis-slave" ]; then
port=6380
fi
echo "port $port
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000" > /opt/docker/redis-cluster/$dir/redis.conf;done
運(yùn)行完成后,在/opt/docker/redis-cluster/redis-master/以及/opt/docker/redis-cluster/redis-slave/生成一個(gè)data目錄和一個(gè)redis.conf文件——
redis.conf文件里內(nèi)容就是前面設(shè)置的。
三、編寫(xiě)docker-compose.yml編排文件
分別在三臺(tái)機(jī)器的/opt/docker/redis-cluster/目錄下,創(chuàng)建docker-compose.yml文件,內(nèi)容如下:
version: '3.1'
services:
redis-master:
image: redis:5.0.8
container_name: redis-master
restart: always
network_mode: "host"
volumes:
- /opt/docker/redis-cluster/redis-master/data:/data
- /opt/docker/redis-cluster/redis-master/redis.conf:/usr/local/etc/redis/redis.conf
command: ["redis-server","/usr/local/etc/redis/redis.conf"]
redis-slave:
image: redis:5.0.8
container_name: redis-slave
restart: always
network_mode: "host"
volumes:
- /opt/docker/redis-cluster/redis-slave/data:/data
- /opt/docker/redis-cluster/redis-slave/redis.conf:/usr/local/etc/redis/redis.conf
command: [ "redis-server","/usr/local/etc/redis/redis.conf" ]
完成后,執(zhí)行指令docker-compose up -d——
執(zhí)行指令docker ps -a查看一下容器是否已經(jīng)正常運(yùn)行,如下現(xiàn)實(shí)證明沒(méi)有問(wèn)題——
四、執(zhí)行指令組建redis集群
4.1、任意一臺(tái)機(jī)器上,執(zhí)行以下指令,進(jìn)入到docker容器當(dāng)中——
docker exec -it redis-master bash #redis-master對(duì)應(yīng)的是docker ps -a查看到的容器名redis-master
4.2、創(chuàng)建集群
redis-cli --cluster create 192.168.31.130:6379 192.168.31.130:6380 192.168.31.131:6379 192.168.31.131:6380 192.168.31.132:6379 192.168.31.132:6380 --cluster-replicas 1
執(zhí)行完成后,打印日志如下——
執(zhí)行指令后,會(huì)出現(xiàn)提示“Can I set the above configuration? (type 'yes' to accept):”,這里輸入yes,回車(chē)。出現(xiàn)以下情況話,就是已經(jīng)成功創(chuàng)建redis集群了——
可以通過(guò)以下指令進(jìn)入到redis客戶端,查看集群情況——
root@hadoop1:/data# redis-cli -c -h 192.168.31.130 -p 6379
然后,執(zhí)行指令cluster info查看集群狀況,顯示cluster_state:ok則表示集群已經(jīng)正常創(chuàng)建。
當(dāng)然,可以進(jìn)一步通過(guò)cluster nodes指令,查看各節(jié)點(diǎn)狀況,已經(jīng)是三主三從的集群狀況了——
以上,就是整個(gè)集群搭建過(guò)程。
若是之前沒(méi)有玩過(guò)Docker的朋友,可以參考我之前的一篇Docker搭建記錄文章《CentOS7安裝Docker遇到的問(wèn)題筆記》
總結(jié)
以上是生活随笔為你收集整理的Docker部署系列之Docker Compose安装Redis三主三从集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java 21 虚拟线程:使用指南(一)
- 下一篇: Kernel Memory 入门系列:S