windows用docker部署redis集群
文章目录
1 预备知识
除了知道Docker
和Redis cluster
的基本概念和常规部署流程外,还需要知道Docker
里的几个概念:
- Volume:独立于
container
的一个数据保存区域,可以被container
共享,也可以用来把本地的配置文件映射过去供container
使用。 - Network:
Docker
内部的"网络",让不同的container
可以互相访问,这是redis
官方建议的在docker
里做cluster
时的方式。我们这里主要用bridge
模式。
2 基本步骤
2.1 获取redis镜像
|
|
2.2 在本机创建配置文件
在本地的一个文件夹内创建一个redis-cluster.conf
配置文件,里面仅包含简单的集群配置信息:
|
|
2.3 创建一个Docker Network
|
|
2.4 用本地配置文件启动多个redis节点
|
|
上面这条命令里的几个参数:
- docker run:运行一个
container
- -d:后台运行
--name
:自定义的container的名称--network
:容器加入的网络- -v:volume映射,“本机地址:docker地址”的格式,“C:\Users\xxx\Desktop\conf\redis-cluster.conf"是刚才存放的配置文件地址(加文件名),"/usr/local/etc/redis/redis.conf"是我们的
volume
挂载的地址,这里我们把配置文件的名称也改掉了,本机是redis-cluster.conf
,volume
里是redis.conf
- redis:我们的
image
名称,默认用最新版 - redis-server /usr/local/etc/redis/redis.conf:这跟我们常规启动
redis
服务是一样的,用我们刚才映射过去的配置文件启动。
把上面的"redis-1"换成"redis-2”…“redis-6”,启动6个节点,注意这里配置文件不用改,端口也全是6379,因为network
会给我们每一个节点分配不同的IP。
完成后查看一下容器:
|
|
查看输出
|
|
再查看一下network:
|
|
可以看到我们的6个container
都在里面,每个分配了不同的ID
查看输出
|
|
上面可以看到我们每一个container
的IP,也可以用下面这条命令单独获取某个container
的IP,比如获取redis-1这个container
的IP:
|
|
2.5 启动cluster
根据上面获取的IP,我们先进入redis1这个container
|
|
然后跟常规一样运行cluster
|
|
redis会自动分配slot,输入yes完成cluster。
完成以后,我们以cluster模式启动(还是在redis-1这个container里面):
|
|
测试下面4条语句可以观察到cluster自动在节点间跳转
|
|
3 在项目中使用
因为我们的network
对于主机来说并没有开放,所以在本地运行的项目并不能直接访问到这些IP。但是我们可以把项目打包部署到这个network
里面,就可以直接使用这个cluster
了。
版权声明 本博客使用CC BY-NC-SA 4.0许可协议(创意共享4.0:保留署名-非商业性使用-相同方式共享)。