Docker配置redis哨兵模式的方法(多服務器上)
前言
之前學習的redis一直是在單一服務器上運行的,而且是直接部署在服務器上。聽說用docker會讓配置過程更輕松 (並沒有)這次就在用Docker的基礎上配置Redis一主一從三哨兵。本篇為配置數據節點,即一主一從兩個節點。
條件
三臺服務器(因為需要至少三個哨兵保證安全性)【可以在阿裡雲上租幾個小時】
- 服務器1:8.131.78.18
- 服務器2:8.131.69.106
- 服務器3:8.131.71.196
- 端口號7000、17000已在安全組上放行(阿裡雲)
- 環境:centos8.0
安裝Docker
逐行執行以下指令:
# 1. 更新編譯環境 yum -y install gcc # 2. 同上 yum -y install gcc-c++ # 3. 安裝docker # 3.1 卸載舊版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 3.2 安裝需要的安裝包 yum install -y yum-utils # 3.3設置鏡像的倉庫,推薦使用國內的鏡像,比較快 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 3.4 更新yum軟件包索引,功能是將軟件包緩存在本地一份 yum makecache # 3.5 安裝docker相關的 docker-ce 社區版 yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm # 3.6 安裝 yum install docker-ce docker-ce-cli containerd.io # 3.7 啟動docker systemctl start docker # 3.8 設置為後臺啟動 systemctl enable docker # 3.9 使用docker version查看是否按照成功 docker version # 3.10 測試(可以不做) docker run hello-world # 3.11 卸載刪除(僅供參考,本次不做) yum remove docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker # 4. 配置加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://qdxc3615.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
配置redis主從節點
我們使用的服務器是服務器1和服務器3(本來是一主兩從,我把服務器2關瞭)。
TIPS: 對於xshell可以使用右鍵選擇發送鍵輸入到所有會話,這樣就不需要配置兩遍瞭。或者使用scp語句將配置好的文件共享給其他服務器:
# scp local_file remote_username@remote_ip:remote_folder scp redis.conf [email protected]:/blue/redis02
1.首先創建文件夾,註意不要放在home路徑下,否則容易因為權限問題是容器運行失敗。我創建的目錄為/blue/redis02,指令比較簡單:
cd / mkdir blue && cd blue mkdir redis02 && cd redis02
2.創建Dockerfile,Dockerfile是為瞭加載一些我們需要的環境。
vi Dockerfile # Dockerfile內容如下: # 從基礎鏡像redis繼承 FROM redis MAINTAINER blue<[email protected]> # 將Dockerfile所在目錄下的文件復制到容器/usr/local/etc/redis目錄下 COPY redis.conf /usr/local/etc/redis/redis.conf # 安裝一些環境 RUN apt-get update RUN apt-get install -y vim RUN apt-get install procps --assume-yes VOLUME ["/data"] WORKDIR /etc/redis # 開放端口7000 EXPOSE 7000 # 使用配置文件啟動 CMD [ "redis-server", "/usr/local/etc/redis/redis.conf"]
3.從官網上下載一個redis.conf並做如下修改。redis.conf則是redis的一些配置,這個和單機的redis一主一從三哨兵的配置基本相同。
# 註釋掉bind 127.0.0.1 # bind 127.0.0.1 port 7000 # 這裡如果是yes會影響使用配置文件啟動 daemonize no pidfile /var/run/redis_7000.pid # 需要設置以下兩處密碼,密碼要一致 requirepass testmaster123 masterauth testmaster123 # 修改保護模式,如果是yes會導致外部服務器無法訪問 protected-mode no # 對於服務器3,還需要加上一句,表示是服務器1的從服務器 # slaveof 主.機.I.P 端口 slaveof 8.131.78.18 7000
4.保存好以上配置之後可以使用以下語句創建鏡像,這個過程時間比較長,需要耐心等待:
# 應該用 docker build -t myredis . 比較有辨識度的,但是作為測試的時候就成功瞭,也不想修改瞭。這句話是根據我們的Dockerfile創建一個新的鏡像。可以把他push到倉庫去,這樣下次可以直接拉取。 docker build -t test .
5.使用如下語句啟動容器:
# 啟動容器 docker run -d -p 7000:7000 --name redis-test test # 以下語句查看運行中的容器 docker ps #進入容器內部 docker exec -it redis-test /bin/bash
6.在容器內部可以使用以下語句查看在運行的線程:
# 查看運行的線程 ps -ef # 使用redis客戶端訪問7000端口 redis-cli -p 7000 # 輸入密碼 auth testmaster123 # 查看信息 info replication # 以下為從節點返回的信息 # Replication role:slave master_host:8.131.78.18 master_port:7000 master_link_status:up master_last_io_seconds_ago:10 master_sync_in_progress:0 slave_repl_offset:28 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:438c700922a30ebbc66ee5c89a176c426924b2a7 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:28 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:28
至此主從節點配置成功。
到此這篇關於Docker配置redis哨兵模式(多服務器上)的文章就介紹到這瞭,更多相關Docker配置redis哨兵模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 使用docker搭建redis主從的方法步驟
- 通過idea打包項目到docker的操作方法
- Redis主從配置和底層實現原理解析(實戰記錄)
- Linux安裝Docker詳細教程
- Redis 單機安裝和哨兵模式集群安裝的實現