docker-compose部署一主两从Redis

docker-compose部署一主两从Redis

部署Redis

  • docker-compose部署一主两从Redis
  • 安装docker环境
    • 安装docker
    • 安装docker-compose
  • 目录结构
    • 编写docker-compose.yml
    • yml文件解释
      • 主机yml说明
      • 从机yml说明
    • 执行文件
  • 测试一主两从结构
    • 主机写测试
    • 从机查测试

安装docker环境

安装docker

docker安装环境:阿里云学生主机云服务器ECS
操作系统:CentOS 7.3 64位
CPU: 1核
内存: 2 GiB

安装参考:阿里云官方docker安装文档.
本文通过脚本安装

更新yum源:

sudo yum update

下载脚本并安装:

curl -sSL https://get.docker.com/ | sh

启动服务:

sudo service docker start

验证docker:

sudo docker run hello-world

出现hello from Docker!表示docker环境安装成功
docker-compose部署一主两从Redis_第1张图片
查看docker版本:

docker -v

docker版本

安装docker-compose

本文通过Python的pip工具安装compose
安装依赖:

yum -y install epel-release

安装PIP:

yum -y install python-pip

升级PIP:

pip install --upgrade pip

等待安装成功:
docker-compose部署一主两从Redis_第2张图片
查看安装版本号:

pip --version

pip版本号查看
安装docker-compose:

pip install -U docker-compose

docker-compose部署一主两从Redis_第3张图片
验证版本:

sudo docker-compose --version

compose版本

目录结构

docker-compose部署一主两从Redis_第4张图片

编写docker-compose.yml

version: '2'
services:
  master:
    image: redis
    container_name: redis-master
    restart: always
    command: redis-server --port 6379 --requirepass root  --appendonly yes
    ports:
      - 6379:6379
    volumes:
      - ./data:/data

  slave1:
    image: redis
    container_name: redis-slave-1
    restart: always
    command: redis-server --slaveof 172.16.255.161 6379 --port 6380  --requirepass root --masterauth root  --appendonly yes
    ports:
      - 6380:6380
    volumes:
      - ./data:/data

  slave2:
    image: redis
    container_name: redis-slave-2
    restart: always
    command: redis-server --slaveof 172.16.255.161 6379 --port 6381  --requirepass root --masterauth root  --appendonly yes
    ports:
      - 6381:6381
    volumes:
      - ./data:/data

yml文件解释

主机yml说明

# 指定docker文件的版本
version: '2'
# 多容器的集合环境
services:
	# 主机标识
	master:
		# 指定服务所使用的镜像
		image: redis
		# 容器别名为Redis主机
		container_name: redis-master
		# 总是开机自启
		restart: always
		# 容器执行时的命令,requirepass root 指定Redis的密码为root,appendonly 开启数据持久化
		command: redis-server --port 6379 --requirepass root  --appendonly yes 
		# 容器的端口映射到宿主机端口6379,
		 ports:
      		- 6379:6379
		# 宿主机路径:容器路径 数据的持久化文件,从宿主机路径指向容器的路径
		volumes: 
	 		- ./data:/data

从机yml说明

# 从机标识
  slave1:
    image: redis
    # 指定从机的容器名
    container_name: redis-slave-1
    restart: always
    # slaveof 依赖于172.16.255.161(阿里云内网地址)6379端口的从机,映射到宿主机的6380端口
    command: redis-server --slaveof 172.16.255.161 6379 --port 6380  --requirepass root --masterauth root  --appendonly yes
    ports:
      - 6380:6380
    volumes:
      - ./data:/data

执行文件

docker-compose up -d

docker-compose部署一主两从Redis_第5张图片
查看docker容器启动详情

docker ps

容器启动详情
到此docker-compose部署一主两从Redis已经完成

测试一主两从结构

主机写测试

进入主Redis容器

docker exec -it (容器id) bash

docker-compose部署一主两从Redis_第6张图片
在容器中进入Redis客户端

redis-cli

docker-compose部署一主两从Redis_第7张图片
进入容器后输入密码

auth root

输入存储的键值

set hello redis

docker-compose部署一主两从Redis_第8张图片

keys hello

验证主机写入功能正常

Ctrl+C 退出Redis客户端,exit退出当前的主机容器
docker-compose部署一主两从Redis_第9张图片

从机查测试

进入从机容器,进入从机的Redis客户端

docker exec -it (从机容器id) bash
redis-cli -p 6380

docker-compose部署一主两从Redis_第10张图片
从机查测试和写测试:

auth root
get hello
set a b

docker-compose部署一主两从Redis_第11张图片
由此可见从机不允许写操作,只允许进行查询操作
至此Redis一主两从的配置测试已经完成!

你可能感兴趣的:(docker,redis)