docker-compose 搭建redis集群(三臺(tái)服務(wù)器,每臺(tái)服務(wù)器上一主一從)
1、前言
使用 Docker Compose 搭建 Redis 集群是一種便捷高效的方法,可以快速地在本地或者測試環(huán)境中搭建一個(gè) Redis 集群。以下是詳細(xì)的步驟,在 Docker 環(huán)境中使用 docker-compose 來搭建 Redis 集群。
本次搭建使用三太虛擬機(jī)作為宿主機(jī),ip分別如下:
192.168.10.128
192.168.10.129
192.168.10.130
2、準(zhǔn)備工作
2.1、Docker 安裝
通過以下指令進(jìn)行Docker 安裝:
// 更新軟件包索引 sudo apt-get update // 允許APT使用HTTPS sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common // 添加 Docker 的官方 GPG 密鑰: sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - // 設(shè)置穩(wěn)定版?zhèn)}庫 sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \ $(lsb_release -cs) \ stable" // 更新軟件包索引 sudo apt-get update // 安裝 Docker sudo apt-get install docker-ce // 查看Docker狀態(tài) sudo systemctl status docker
2.2、docker-compose 安裝
docker-compose 安裝命令如下:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
2.3 目錄創(chuàng)建
在每臺(tái)創(chuàng)建redis的data目錄,使用以下腳本進(jìn)行:
#!/bin/bash for dir in master/data slave/data; do mkdir -p "/home/arkham/docker/redis/redis-cluster/$dir"; done
3、redis配置文件
3.1 生成redis.conf文件
我們需要為每個(gè) Redis 節(jié)點(diǎn)創(chuàng)建獨(dú)立的配置文件,以下是 redis.conf 的示例,其他節(jié)點(diǎn)的配置文件類似,只需要修改端口和節(jié)點(diǎn)名稱。為了方便操作,同樣通過shell腳步來完成,不同服務(wù)器只需要更改cluster-announce-ip即可,腳本代碼如下:
#!/bin/bash for dir in master slave; do if [ "$dir" == "master" ]; then port=6379 elif [ "$dir" == "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 requirepass 123456arkham masterauth 123456arkham cluster-announce-ip 192.168.10.128" >/home/arkham/docker/redis/redis-cluster/$dir/redis.conf; done
3.2 shell文件無法執(zhí)行問題解決
在windows下編寫的shell腳本,將shell文件拷貝至相應(yīng)服務(wù)器,執(zhí)行過程中可能會(huì)報(bào)文件不存在錯(cuò)誤,這時(shí)候腳本文件可能執(zhí)行失敗,一個(gè)是權(quán)限問題,還有可能是文件問題,dos格式的文件行尾為^M,而 unix 格式的文件行尾為$,解決辦法如下
# 給sehll目錄下所有文件增加權(quán)限 chmod -R 775 /home/server/shell # 查看行尾符 dos格式的文件行尾為^M$,而unix格式的文件行尾為$ sudo cat -A redis.sh # 修改 sudo sed -i "s/\r//" redis.sh
3.3 docker-compose.yml文件編寫
docker-compose.yml文件內(nèi)容如下:
version: '3.1' services: redis-master: image: redis:latest container_name: redis-master restart: always ports: - "6379:6379" - "16379:16379" environment: - TZ=Asia/Shanghai volumes: - /home/arkham/docker/redis/redis-cluster/master/data:/data - /home/arkham/docker/redis/redis-cluster/master/redis.conf:/usr/local/etc/redis/redis.conf deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '2' memory: 4G command: ["redis-server","/usr/local/etc/redis/redis.conf"] redis-slave: image: redis:latest container_name: redis-slave restart: always ports: - "6380:6380" - "16380:16380" environment: - TZ=Asia/Shanghai volumes: - /home/arkham/docker/redis/redis-cluster/slave/data:/data - /home/arkham/docker/redis/redis-cluster/slave/redis.conf:/usr/local/etc/redis/redis.conf deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '2' memory: 4G command: [ "redis-server","/usr/local/etc/redis/redis.conf" ]
4、啟動(dòng)集群及初始化
4.1 啟動(dòng) Redis 集群
在 redis 目錄下,執(zhí)行以下命令啟動(dòng) Redis 節(jié)點(diǎn):
sudo docker-compose up -d
如果拉取鏡像超時(shí)失敗或者拒絕連接,可能是因?yàn)閐ocker源的原因,修改為國內(nèi)源:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ] } sudo systemctl daemon-reload sudo systemctl restart docker
4.2 Redis 集群初始化
集群啟動(dòng)后,需進(jìn)行集群初始化操作。需要進(jìn)入到任意一個(gè) Redis 容器中,并使用 redis-cli 命令來創(chuàng)建集群。
// 進(jìn)入任意 Redis 容器 docker exec -it redis-master /bin/bash // 執(zhí)行創(chuàng)建集群 redis-cli -a 123456arkham --cluster create 192.168.10.128:6379 192.168.10.128:6380 192.168.10.129:6379 192.168.10.129:6380 192.168.10.129:6379 192.168.10.129:6380 --cluster-replicas 1 // 創(chuàng)建成功后連接任意一個(gè)redis節(jié)點(diǎn) redis-cli -a 123456arkham -c -h 192.168.10.128 -p 6379 // 查看集群信息 cluster info
執(zhí)行結(jié)果如下:
192.168.10.128:6379> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:4 cluster_size:3 cluster_current_epoch:4 cluster_my_epoch:1 cluster_stats_messages_ping_sent:2972 cluster_stats_messages_pong_sent:2841 cluster_stats_messages_fail_sent:4 cluster_stats_messages_sent:5817 cluster_stats_messages_ping_received:2841 cluster_stats_messages_pong_received:2970 cluster_stats_messages_fail_received:2 cluster_stats_messages_received:5813 total_cluster_links_buffer_limit_exceeded:0
5、總結(jié)
通過上述步驟,我們已經(jīng)使用 Docker Compose 成功搭建了一個(gè) Redis 集群。這種方式特別適合用于開發(fā)和測試環(huán)境,因?yàn)樗呐渲煤唵?、部署快速,非常適合本地或測試環(huán)境中進(jìn)行集群架構(gòu)的模擬和驗(yàn)證。但在生產(chǎn)環(huán)境中,Redis 集群的部署和使用需要更為謹(jǐn)慎和仔細(xì)的規(guī)劃,包括性能調(diào)優(yōu)、安全配置、資源分配等多個(gè)方面。
使用 Docker Compose 部署 Redis 集群的優(yōu)勢主要在于快速構(gòu)建和靈活配置。通過 Compose 文件,可以定義多個(gè) Redis 實(shí)例的網(wǎng)絡(luò)、端口和數(shù)據(jù)卷,實(shí)現(xiàn)一鍵啟動(dòng)整個(gè)集群的需求。在開發(fā)和測試階段,這種方式能夠節(jié)省大量時(shí)間,便于模擬復(fù)雜的集群環(huán)境,幫助開發(fā)者驗(yàn)證 Redis 集群在不同場景下的表現(xiàn)和問題。Docker Compose 對資源的隔離性和可移植性,使得 Redis 集群的搭建和銷毀變得極其簡單,這對于功能開發(fā)、問題排查和測試用例的驗(yàn)證來說,都是極大的優(yōu)勢。
到此這篇關(guān)于docker-compose 搭建redis集群(三臺(tái)服務(wù)器,每臺(tái)服務(wù)器上一主一從)的文章就介紹到這了,更多相關(guān)docker-compose 搭建redis集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝配置Oracle詳細(xì)步驟記錄(以作持久化處理)
docker是一個(gè)用Go語言實(shí)現(xiàn)的開源項(xiàng)目,可以讓我們方便的創(chuàng)建和使用容器,下面這篇文章主要給大家介紹了關(guān)于Docker安裝配置Oracle詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下2024-03-03docker?run?-d和docker?run?-it的區(qū)別詳解
記得第一次接觸docker的時(shí)候,教程中寫著docker?run?-it之類的命令,當(dāng)時(shí)對這個(gè)-it選項(xiàng)是一知半解,下面這篇文章主要給大家介紹了關(guān)于docker?run?-d和docker?run?-it的區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-05-05Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式
這篇文章主要介紹了Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08在Docker容器中部署靜態(tài)網(wǎng)頁的方法教程
這篇文章主要給大家介紹了在Docker容器中部署靜態(tài)網(wǎng)頁的方法教程,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06