網站首頁 編程語言 正文
說明:在一臺服務器上搭建redis一主二從三哨兵
1.拉取鏡像
docker pull redis:4
2. 編寫主 從配置文件
2.1 創建/home/redis/redis_conf目錄:
2.2 編寫主配置文件
#vi redis-master.conf
port 6379 #服務端口 bind 0.0.0.0 #任何服務器都可連接 logfile "redis.log" #日志文件名 dir /data #data為等會開啟docker容器里面的目錄 appendonly yes #是否持久化
2.3 編寫從配置文件
#vi redis-slave-1.conf
port 6380 bind 0.0.0.0 logfile "redis.log" dir /data daemonize no appendonly yes slaveof 192.168.17.33 6379 slave-read-only no
2.4? 編寫從配置文件
#vi redis-slave-2.conf
port 6381 bind 0.0.0.0 logfile "redis.log" dir /data daemonize no #關閉redis自我保護 appendonly yes #開啟redis持久化 slaveof 192.168.17.33 6379 #給該從節點指定隸屬于的主節點 slave-read-only no #如果沒有這一行從節點不能寫入數據只能讀取數據
3 編寫sentinel配置文件
3.1創建哨兵配置文件 ? ? ? ?
touch sentinel.conf
3.2編寫哨兵配置文件 ? ? ?
3.2.1? ?vim sentinel.conf
port 26379 dir "/data" logfile "sentinel.log" daemonize yes sentinel monitor mymaster 192.168.17.33 6379 2 #這里是哨兵的關鍵 mymaster:哨兵集群的名稱 配置主節點的ip和端口 ,后面的數字2表示當哨兵集群當中有兩個哨兵沒有檢測到主節點的心跳的時候表明主節點掛掉,開始推選新的主節點。(這里我們的哨兵 集群總共有三個哨兵)
3.2.2? vim sentinel2.conf
port 26380 dir "/data" logfile "sentinel.log" daemonize yes sentinel monitor mymaster 192.168.17.33 6379 2
3.2.3 ?vim sentinel3.conf
port 26381 dir "/data" logfile "sentinel.log" daemonize yes sentinel monitor mymaster 192.168.17.33 6379 2
4? 啟動主節點容器
4.1啟動主節點容器
4.1.1?啟動容器
docker run -d -p 6379:6379 -p 26379:26379 -v /home/redis/redis_conf/redis-master.conf:/data/redis.conf -v /home/redis/redis_conf/sentinel.conf:/data/sentinel.conf --name redis-master redis:4 redis-server redis.conf
4.1.2?進入容器
docker exec -it redis-master /bin/bash
4.1.3?進入redis客戶端
(默認是進入 6379 端口的 redis 。還有我們在啟動容器的時候已經順便將 redi服務端啟動起來了:redis-server redis.conf,所以進入容器不用啟動redis 服務了,直接可以進入客戶端了。 redis-cli
4.1.4查看redis信息,如果是主節點
role 將會為 master 。
info replication
4.1.5退出redis-cli
exit
4.1.6退出redis-master?容器
exit
4.2?啟動從節點容器
(兩個從節點容器是一樣的啟動方式,只修改對應的路徑,端口映射,名稱等,最后面的redis.conf對應的是容器內映射的redis.conf),這里只寫出啟動一個從節點
的命令,自己啟動第二個從節點。
4.2.1啟動容器,并同時用容器內的redis.conf啟動redis
#啟動redis-slave-1容器 同時啟動redis-server docker run -d -p 6380:6380 -p 26380:26380 -v /home/redis/redis_conf/redis-slave-1.conf:/data/redis.conf -v /home/redis/redis_conf/sentinel2.conf:/data/sentinel.conf --name redis-slave-1 redis:4 redis-server redis.conf #單獨啟動redis-slave-2容器 同時啟動redis-server docker run -d -p 6381:6381 -p 26381:26381 -v /home/redis/redis_conf/redis-slave-2.conf:/data/redis.conf -v /home/redis/redis_conf/sentinel3.conf:/data/sentinel.conf --name redis-slave-2 redis:4 redis-server redis.conf
4.2.2?進入容器
[root@kcx-yk-k8s-master-33 redis_conf]#docker exec -it redis-slave-2 /bin/bash
4.2.3 進入客戶端 (注意:如果直接用 redis-cli 進入,默認會進入 6379 端口的 redis 客戶端,如果我們三臺不同的服務器,主從節點都是用的各自對的 6379 端口就不會有問題,但是如 果像我一樣使用的一臺服務器,從節點的端口是 6380 和 6381 就需要指定端口進入 redis 客戶端) redis-cli -p 6380
4.2.4查看信息(從節點的role為slave)
info replication
備注:?如果 role 為 master ,我們還可以手工指定主節點(ip和端口根據自己的實際情況指定主節點的 ip 和端口) slaveof 127.0.0.1 6379
5 存在的問題:
顯示master_link_status的狀態為down。表明從節點沒有連接到主節點。
?查看日志:
1:S 18 Jan 04:20:32.954 # Error condition on socket for SYNC: Connection refused
解決:
原因分析:可能是由于host沒有配置主機的默認ip
修改后重新啟動:一主二從
6、分別啟動每個 ?docker容器里面的哨兵
6.1進入主節點容器
首先進入容器。 docker exec -it redis-master?bash
6.2查看文件
用 ls 命令,我們就可以看淡到 sentinel.conf 文件,這個配置文件我們就會用來啟動 redis 的哨兵。 ls
6.3啟動主哨兵服務
redis-sentinel sentinel.conf?
6.4 啟動兩個從哨兵服務
首先進入容器。
docker exec -it redis-slave-1?bash(docker exec -it redis-slave-2?bash)
啟動哨兵
redis-sentinel sentinel.conf
6.5進入主哨兵
redis-cli -p 26379
6.6查看哨兵狀態
(我們會看到哨兵會顯示監聽的主節點的信息和從節點的數量,以及現在的哨兵數量?,F在的哨兵數量應該為 3 ) info
6.7退出哨兵
exit
6.8退出容器
exit
原文鏈接:https://blog.csdn.net/weixin_41672684/article/details/122411917
相關推薦
- 2022-09-13 centos環境下nginx高可用集群的搭建指南_nginx
- 2022-11-24 詳解如何實現一個Kotlin函數類型_Android
- 2022-09-15 關于c++11與c風格路徑拼接的速度對比_C 語言
- 2022-05-03 C#面向對象設計原則之開閉原則_C#教程
- 2023-11-14 Docker 拉取結果為“等待連接時請求取消(等待標頭時超出客戶端超時);Error respons
- 2022-06-28 python遞歸實現鏈表快速倒轉_python
- 2022-06-10 nginx.conf配置文件結構小結_nginx
- 2022-02-27 selectByPrimaryKey()按主鍵查詢結果為null
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支