目錄
- 前言
- 條件
- 安裝Docker
- 配置redis主從節(jié)點
前言
之前學(xué)習(xí)的redis一直是在單一服務(wù)器上運行的,而且是直接部署在服務(wù)器上。聽說用docker會讓配置過程更輕松 (并沒有)這次就在用Docker的基礎(chǔ)上配置Redis一主一從三哨兵。本篇為配置數(shù)據(jù)節(jié)點,即一主一從兩個節(jié)點。
條件
三臺服務(wù)器(因為需要至少三個哨兵保證安全性)【可以在阿里云上租幾個小時】
- 服務(wù)器1:8.131.78.18
- 服務(wù)器2:8.131.69.106
- 服務(wù)器3:8.131.71.196
- 端口號7000、17000已在安全組上放行(阿里云)
- 環(huán)境:centos8.0
安裝Docker
逐行執(zhí)行以下指令:
# 1. 更新編譯環(huán)境
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設(shè)置鏡像的倉庫,推薦使用國內(nèi)的鏡像,比較快
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3.4 更新yum軟件包索引,功能是將軟件包緩存在本地一份
yum makecache
# 3.5 安裝docker相關(guān)的 docker-ce 社區(qū)版
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 設(shè)置為后臺啟動
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主從節(jié)點
我們使用的服務(wù)器是服務(wù)器1和服務(wù)器3(本來是一主兩從,我把服務(wù)器2關(guān)了)。
TIPS: 對于xshell可以使用右鍵選擇發(fā)送鍵輸入到所有會話,這樣就不需要配置兩遍了?;蛘呤褂胹cp語句將配置好的文件共享給其他服務(wù)器:
# scp local_file remote_username@remote_ip:remote_folder
scp redis.conf root@58.131.71.196:/blue/redis02
1.首先創(chuàng)建文件夾,注意不要放在home路徑下,否則容易因為權(quán)限問題是容器運行失敗。我創(chuàng)建的目錄為/blue/redis02,指令比較簡單:
cd /
mkdir blue && cd blue
mkdir redis02 && cd redis02
2.創(chuàng)建Dockerfile,Dockerfile是為了加載一些我們需要的環(huán)境。
vi Dockerfile
# Dockerfile內(nèi)容如下:
# 從基礎(chǔ)鏡像redis繼承
FROM redis
MAINTAINER blue<blue@email.com>
# 將Dockerfile所在目錄下的文件復(fù)制到容器/usr/local/etc/redis目錄下
COPY redis.conf /usr/local/etc/redis/redis.conf
# 安裝一些環(huán)境
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.從官網(wǎng)上下載一個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
# 需要設(shè)置以下兩處密碼,密碼要一致
requirepass testmaster123
masterauth testmaster123
# 修改保護模式,如果是yes會導(dǎo)致外部服務(wù)器無法訪問
protected-mode no
# 對于服務(wù)器3,還需要加上一句,表示是服務(wù)器1的從服務(wù)器
# slaveof 主.機.I.P 端口
slaveof 8.131.78.18 7000
4.保存好以上配置之后可以使用以下語句創(chuàng)建鏡像,這個過程時間比較長,需要耐心等待:
# 應(yīng)該用 docker build -t myredis . 比較有辨識度的,但是作為測試的時候就成功了,也不想修改了。這句話是根據(jù)我們的Dockerfile創(chuàng)建一個新的鏡像??梢园阉鹥ush到倉庫去,這樣下次可以直接拉取。
docker build -t test .
5.使用如下語句啟動容器:
# 啟動容器
docker run -d -p 7000:7000 --name redis-test test
# 以下語句查看運行中的容器
docker ps
#進入容器內(nèi)部
docker exec -it redis-test /bin/bash
6.在容器內(nèi)部可以使用以下語句查看在運行的線程:
# 查看運行的線程
ps -ef
# 使用redis客戶端訪問7000端口
redis-cli -p 7000
# 輸入密碼
auth testmaster123
# 查看信息
info replication
# 以下為從節(jié)點返回的信息
# 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
至此主從節(jié)點配置成功。
到此這篇關(guān)于Docker配置redis哨兵模式(多服務(wù)器上)的文章就介紹到這了,更多相關(guān)Docker配置redis哨兵模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!