【redis】哨兵:docker搭建redis环境,容器的编排方式

文章目录

环境搭建

我们搭建的结构:

  • 一个主节点
  • 两个从节点
  • 三个哨兵节点

按理说,这六个节点是要要六个不同的服务器主机上。此时我们只有一个服务器,我们就在一个服务器上,来完成这里的环境搭建

  • 在实际工作中,把上述节点放在一个服务器上,是没有意义的(一个服务器挂了,就全军覆没了)

由于这些节点,还挺多的,相互之间容易大家,依赖的端口号/配置文件/数据文件... 如果我们直接部署,就需要小心翼翼的去避免这些冲突

  • 类似于前面配置主从结构的方式
  • 这样比较繁琐,也会和在不同主机上部署,存在较大差异(很多冲突都不用考虑)

docker

是什么

虚拟机:通过软件,在电脑上模拟出另外的一些硬件(构造了另一个虚拟的电脑)

  • 虚拟机这样的软件,就可以使用一个计算机,来模拟出多个电脑的情况
  • 但是虚拟机有一个很大的问题,比较吃配置,这个事情对于低配的云服务器来说,压力山大

相比之下,使用 docker 就可以有效的解决上述问题。

docker 可以认为是一个"轻量级"的虚拟机,起到了虚拟机这样的隔离环境的效果,但是又没有吃很多的硬件资源。即使是配置比较拉胯的服务器,也能构造出好几个这样的虚拟的环境

  • 这也是后端开发这块非常流行的组件

准备工作

https://www.runoob.com/docker/macos-docker-install.html

  1. 先安装 dockerdocker-compose
    检查是否安装

    docker --version

    docker-compose --version

  2. 停止之前的 redis 服务器

避免之后出现一些冲突

  1. 使用 docker 获取到 redis 的镜像

docker 中的"镜像"和"容器"类似于"可执行程序"和"进程"的关系

  • 容器可以看做一个轻量级的虚拟机。
  • 镜像,可以自己构建,也可以直接拿别人已经构建好的
    • docker hub(github) 包含了很多其他大佬们构建好的镜像,也提供了 redis 官方提供的镜像,可以直接拖下来使用

获取 redis 镜像的命令:

复制代码
docker pull redis:5.0.9
  • git pull 使用 git 从中央仓库拉取代码
  • docker pull 使用 docker 从中央仓库(默认就是从 docker hub)来拉取镜像
  • redis:5.0.9 是镜像的版本

拉取到的镜像,里面包含一个精简的 Linux 操作系统,并且上面会安装 redis。只要直接基于这个镜像创建一个容器跑起来,此时,redis 服务器就搭建好了

  • 此时就搭建好了 docker 的镜像,大小为 92.9MB

随后我们就基于这个 docker 镜像,搭建 redis 哨兵环境

网络问题

如果遇到网络问题,就要换一下国内的镜像仓库,加速

复制代码
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://dockerhub.azk8s.cn",
    "https://mirror.ccs.tencentyun.com",
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.1panel.live",
    "https://atomhub.openatom.cn/",
    "https://hub.uuuadc.top",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.ckyl.me",
    "https://docker.awsl9527.cn"
  ]

}

容器编排

此处我们直接用 docker-compose 来进行容器编排

  • 此处我们涉及到的多个 redis server,也有多个 redis 哨兵节点,每一个 redis server 或者每一个 redis 哨兵节点都是作为一个单独的容器了
  • 此处就有 6 个容器了,如果一个一个用 docker 手动创建容器,就比较麻烦,相比来说是用"容器编排"的方式就比较合理

容器编排就是,通过一个配置文件,把具体要创建哪些容器,每个容器运行的各种参数描述清楚。后续通过一个简单的命令,就能够批量的启动/停止这些容器了

  • 使用 yml 这样的格式来作为配置文件

文件格式

经典的配置文件格式:xml

xml 复制代码
<student>
	<id>1</id>
	<name>张三</name>
	<age>18</age>
</student>
  • <> 成对出现的,就叫做标签
  • html 中的标签,都是标准规定的
  • xml 里面的标签都是自定义的
    • 写起来特别啰嗦,并且也比较占用空间

后来又有了 JSON

json 复制代码
{
	id: 1,
	name: '张三',
	age: 18
}

yml 格式和 json 有一些相似之处,yml 虽然没有 json 这么火,但是还是挺广泛的

yml 复制代码
student:
	id: 1
	name: "张三"
	age: 18
  • 它和 json 都是这种比较直观的键值对结构,json 是使用 {} 来表示层级结构,yml 则是使用缩进来表示

yml 相对于 json 的优势:对于格式要求更严格,可读性会更好,更有助于人来理解

相关推荐
我是廖志伟7 分钟前
【10万QPS压力测试】Redis三主三从高可用集群基准测试
数据库·redis·压力测试
LCY13323 分钟前
redis+spring 的基本操作 RedisTemplate和RedisClient
redis·spring·微信
咯拉咯啦23 分钟前
Docker安装 Nacos 微服务
docker·微服务
江沉晚呤时44 分钟前
深入解析外观模式(Facade Pattern)及其应用 C#
java·数据库·windows·后端·microsoft·c#·.netcore
一直走下去-明1 小时前
docker简单使用
运维·docker·容器
橘猫云计算机设计2 小时前
基于Java的班级事务管理系统(源码+lw+部署文档+讲解),源码可白嫖!
java·开发语言·数据库·spring boot·微信小程序·小程序·毕业设计
多多*2 小时前
JavaEE企业级开发 延迟双删+版本号机制(乐观锁) 事务保证redis和mysql的数据一致性 示例
java·运维·数据库·redis·mysql·java-ee·wpf
酷爱码2 小时前
数据库索引相关的面试题以及答案
数据库
以待成追忆2 小时前
Scrapy——Redis空闲超时关闭扩展
数据库·redis·scrapy