【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 的优势:对于格式要求更严格,可读性会更好,更有助于人来理解

相关推荐
王有品2 小时前
Spring MVC 多个拦截器的执行顺序
数据库·spring·mvc
极小狐2 小时前
如何使用极狐GitLab 的外部状态检查功能?
数据库·ci/cd·gitlab·devops·mcp
Leo.yuan3 小时前
数据仓库建设全解析!
大数据·数据库·数据仓库·数据分析·spark
闪电麦坤953 小时前
SQL:子查询(subqueries)
数据库·sql
活跃的煤矿打工人3 小时前
【星海出品】分布式存储数据库etcd
数据库·分布式·etcd
文牧之3 小时前
PostgreSQL的扩展 pgcrypto
运维·数据库·postgresql
未来会更好yes3 小时前
Centos 7.6安装redis-6.2.6
linux·redis·centos
二猛子3 小时前
Linux(Centos版本)中安装Docker
linux·docker·centos
老友@5 小时前
小集合 VS 大集合:MySQL 去重计数性能优化
数据库·mysql·性能优化
声声codeGrandMaster5 小时前
django之优化分页功能(利用参数共存及封装来实现)
数据库·后端·python·django