docker-compose部署一主两从Redis

docker-compose部署一主两从Redis

安装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版本:

docker -v

docker版本

安装docker-compose

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

yum -y install epel-release

安装PIP:

yum -y install python-pip

升级PIP:

pip install --upgrade pip

等待安装成功:
安装完成
查看安装版本号:

pip --version

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

pip install -U docker-compose

安装完成
验证版本:

sudo docker-compose --version

compose版本

目录结构

文件目录结构

编写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容器启动详情

docker ps

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

测试一主两从结构

主机写测试

进入主Redis容器

docker exec -it (容器id) bash

进入主机容器
在容器中进入Redis客户端

redis-cli

进入容器的6379端口
进入容器后输入密码

auth root

输入存储的键值

set hello redis

存储键值

keys hello

验证主机写入功能正常

Ctrl+C 退出Redis客户端,exit退出当前的主机容器
退出主机容器

从机查测试

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

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

进入从机
从机查测试和写测试:

auth root
get hello
set a b

从机写测试
由此可见从机不允许写操作,只允许进行查询操作
至此Redis一主两从的配置测试已经完成!

猜你喜欢

转载自blog.csdn.net/weixin_44070999/article/details/107952848