我们搭建的结构:
按理说,这六个节点是要要六个不同的服务器主机上。此时我们只有一个服务器,我们就在一个服务器上,来完成这里的环境搭建
由于这些节点,还挺多的,相互之间容易大家,依赖的端口号/配置文件/数据文件… 如果我们直接部署,就需要小心翼翼的去避免这些冲突
虚拟机:通过软件,在电脑上模拟出另外的一些硬件(构造了另一个虚拟的电脑)
相比之下,使用 docker
就可以有效的解决上述问题。
docker
可以认为是一个“轻量级”的虚拟机,起到了虚拟机这样的隔离环境的效果,但是又没有吃很多的硬件资源。即使是配置比较拉胯的服务器,也能构造出好几个这样的虚拟的环境
https://www.runoob.com/docker/macos-docker-install.html
docker
和 docker-compose
检查是否安装docker --version
docker-compose --version
redis
服务器避免之后出现一些冲突
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
哨兵节点都是作为一个单独的容器了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
的优势:对于格式要求更严格,可读性会更好,更有助于人来理解