当前位置: 首页 > news >正文

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

文章目录

  • 环境搭建
  • docker
    • 是什么
  • 准备工作
    • 网络问题
  • 容器编排
    • 文件格式

环境搭建

我们搭建的结构:

  • 一个主节点
  • 两个从节点
  • 三个哨兵节点image.png|344

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

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

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

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

docker

是什么

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

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

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

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

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

准备工作

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

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

docker-compose --version
  1. 停止之前的 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 服务器就搭建好了image.png

  • 此时就搭建好了 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

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

后来又有了 JSON

{
	id: 1,
	name: '张三',
	age: 18
}

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

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

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

相关文章:

  • 3D-ViTac:通过视觉-触觉感知学习精细操作
  • 反射机制概述和代码举例
  • 数据库索引相关的面试题以及答案
  • python裁剪nc文件数据
  • Codeforces Round 1011 (Div. 2)
  • shopify跨境电商行业前景与规模
  • 类和对象—封装
  • 【算法】动态规划:回文子串问题、两个数组的dp
  • RWEQ+集成技术在风蚀模数估算中的全流程增强策略—从数据融合到模型耦合的精细化操作指南
  • 05、Tools
  • OSI模型_TCP/IP模型_五层模型
  • Thales靶场
  • Netty源码—6.ByteBuf原理二
  • AI Agent开发大全第十一课-超维空间里的语义翻译官:Embedding技术
  • 个人学习编程(3-25) leetcode刷题
  • Linux 练习二 LVS的NAT模式
  • 从C语言开始的C++编程生活(2)
  • Java基础关键_028_线程(一)
  • 3.24前端模拟面试
  • C语言基础系列【28】指针进阶1:深入理解指针
  • 建设网站建设多少钱/福州网站seo优化公司
  • wordpress头条模板/整站seo排名外包
  • 网站建设佰金手指科杰二六/哪个公司要做网络推广
  • clouder认证考试网站建设/java培训机构
  • 怎样做网站首页图片变换/广告网页
  • 网站建设衤金手指花总/百度搜索提交入口