redis哨兵、集群、docker
Dockerfile
# 基于Alpine Linux的Redis鏡像 # FROM alpine:latest FROM harbor.sjzt.com/pub/openjdk:8-jre COPY redis-7.4.1.zip /redis-7.4.1.zip # 暴露Redis端口 EXPOSE 6379 # 復制自定義配置文件(如果需要) 需刪除原有的redis.conf才能COPY RUN unzip /redis-7.4.1.zip COPY redis.conf /redis-7.4.1/redis/redis.conf # 后續命令都會在/redis-7.4.1/redis目錄下執行 WORKDIR /redis-7.4.1/redis # 運行Redis服務器 CMD ./redis-server redis.conf
構建容器 docker build -t xmh-redis:7.4.1 . 運行容器 docker run -d -p 6379:6379 --name my-redis-container xmh-redis:7.4.1 docker ps -a | grep redis docker logs -f --tail 300 3446e62252b4 docker stop 0cad3753b186 docker rm 0cad3753b186 docker exec -it 0cad3753b186 bash 進入容器 docker run -it --rm xmh-redis:7.4.1 which redis-server
https://redis.io/docs/latest/commands/cluster-addslotsrange/ redis官方命令 $ tar xzf redis-7.4.1.tar.gz $ cd redis-7.4.1 make # 編譯 make install # 可以不做此操作 安裝Redis到系統 redis解壓包可以刪除了 make uninstall # 卸載Redis cd src mkdir redis cp redis-server ../redis cp redis-benchmark ../redis cp redis-cli ../redis cp redis.conf redis redis.conf 在外層 cd redis redis.conf配置如下 如果外部機器需要連接,127.0.0.1需替換為真實ip requirepass 設置密碼 slaveof xx.xx.xx.xx 6379 在從節點上配置掛接的主節點 masterauth your_master_password 從機連接主機的密碼 #bind localhost 注釋掉 (代碼連接需要) #protected-mode yes 注釋掉 (代碼連接需要) 6380的節點配置中全部改為6380 啟動Redis服務。 nohup ./redis-server redis.conf & nohup ./redis-server redis6380.conf & nohup ./redis-server redis6381.conf & 然后用客戶端測試一下是否啟動成功。 $ ./redis-cli ./redis-cli -p 6380 sentinel auth-pass mymaster 123 如果服務有密碼需用密碼連接 port 26379 daemonize yes Sentinel會在當前終端前臺運行,終端關閉則進程終止 sentinel monitor mymaster xx.xx.xx.xx 6379 2 1主2從共3個redis,需要3個哨兵,對于端口為26380和26381的sentinel 只需修改端口號,其他不動 nohup ./redis-sentinel sentinel.conf & nohup ./redis-sentinel sentinel26380.conf & nohup ./redis-sentinel sentinel26381.conf & ./redis-cli -p 26379 127.0.0.1:26379> info sentinel 主節點,使用如下命令查看主從節點狀態: 127.0.0.1:6379> info replication 集群模式: 某個主節點下線后,從節點會接替主節點的槽位變為主節點,舊的主節點再點啟動后變為從節點 cluster-enabled yes 6380的節點配置中全部改為6380 pidfile /var/run/redis_6380.pid cluster-config-file nodes-6380.conf dbfilename dump6380.rdb appendfilename "appendonly6380.aof" masterauth 123 設置主節點密碼 都要設置,主節點下線后再次啟動變為從節點 #bind localhost 注釋掉 (代碼連接需要) #protected-mode yes 注釋掉 (代碼連接需要) redis.conf文件復制六份名為:cluster6379.conf、cluster6380.conf、cluster6381.conf cluster6382.conf cluster6383.conf、cluster6384.conf nohup ./redis-server cluster6379.conf & nohup ./redis-server cluster6380.conf & nohup ./redis-server cluster6381.conf & nohup ./redis-server cluster6382.conf & nohup ./redis-server cluster6383.conf & nohup ./redis-server cluster6384.conf & ./redis-cli -p 6379 連接其余節點 需要單個添加,不能全部復制粘貼5個 127.0.0.1換成具體的地址,否則外部鏈接報錯 cluster meet 172.30.0.103 6380 cluster meet 172.30.0.103 6381 cluster meet 172.30.0.103 6382 cluster meet 172.30.0.103 6383 cluster meet 172.30.0.103 6384 cluster nodes CLUSTER SLOTS 查看所有槽位分配情況 ./redis-cli -p 6379 CLUSTER ADDSLOTSRANGE 0 5461 ./redis-cli -p 6380 CLUSTER ADDSLOTSRANGE 5462 10922 ./redis-cli -p 6381 cluster addslotsrange 10923 16383 其他3個節點設置為上面3個節點的從節點 127.0.0.1:6382>cluster replicate 8f3c09d20ffbaed7f056abf24191b5913a8b75f8 127.0.0.1:6383>cluster replicate 72466aa56df311ec74f3519d6cb2875e7de8e2b1 127.0.0.1:6384>cluster replicate 2ef91de4a27eec61333f6f4de607a84dc1bc4bc9 連接集群 ./redis-cli -c -h 172.30.0.103 -p 6383 cluster nodes 0ee69ce755af6a81f245f5cc57a5027deb677e0c 127.0.0.1:6383@16383 slave 72466aa56df311ec74f3519d6cb2875e7de8e2b1 0 1754279334393 7 connected 2ef91de4a27eec61333f6f4de607a84dc1bc4bc9 127.0.0.1:6381@16381 master - 0 1754279329371 2 connected 10923-16383 72466aa56df311ec74f3519d6cb2875e7de8e2b1 127.0.0.1:6380@16380 master - 0 1754279334000 7 connected 5462-10922 8f3c09d20ffbaed7f056abf24191b5913a8b75f8 127.0.0.1:6379@16379 myself,master - 0 0 5 connected 0-5461 03222241ffac9b86365febaf994fa43014a6ac56 127.0.0.1:6382@16382 slave 8f3c09d20ffbaed7f056abf24191b5913a8b75f8 0 1754279335397 5 connected 9d23c68db1d417bedb973dae1711cc5344396f1c 127.0.0.1:6384@16384 slave 2ef91de4a27eec61333f6f4de607a84dc1bc4bc9 0 1754279333000 2 connected ./redis-cli -c -h 172.30.0.103 -p 6379
# 基于Ubuntu鏡像構建
FROM ubuntu:22.04
# 安裝編譯依賴
RUN apt-get update && apt-get install -y \
gcc \
make \
wget \
&& rm -rf /var/lib/apt/lists/*
# 設置工作目錄
WORKDIR /usr/local/src
# 下載Redis源碼(以6.2.6版本為例)
RUN wget http://download.redis.io/releases/redis-6.2.6.tar.gz && \
tar xzf redis-6.2.6.tar.gz && \
rm redis-6.2.6.tar.gz
# 進入Redis源碼目錄并編譯
WORKDIR /usr/local/src/redis-6.2.6
RUN make # 編譯Redis
RUN make install # 安裝Redis到系統
# 創建Redis配置文件目錄
RUN mkdir -p /etc/redis
# 復制默認配置文件
RUN cp redis.conf /etc/redis/
# 暴露Redis端口
EXPOSE 6379
# 啟動Redis服務器
CMD ["redis-server", "/etc/redis/redis.conf"]

浙公網安備 33010602011771號