docker:搭建单机redis主从集群
来源:互联网 发布:php直播系统源码下载 编辑:程序博客网 时间:2024/05/23 16:53
最近在学习docker和kubernetes,在看《docker容器与容器云》这本书的时候,就按照书中的教程搭建第一个docker应用栈,其中遇到了一些坑。现把搭建过程中遇到的困难记录下来。主要是在搭建redis主从集群时遇到的困难。
1、获取redis镜像
首先从Docker Hub中或者其他的镜像仓库中获取现有的可用镜像,在这些镜像的基础上启动镜像,这里我选择从docker官方镜像中获取redis镜像构建redis主从集群。
docker pull redis
镜像下载完成后执行docker images查看已下载的镜像
2、容器间的连接
鉴于在同一主机下搭建redis主从集群,只需要完成容器互联来实现容器之间的通信即可,这里采用 docker run命令的–link选项来建立容器之间的连接。这里介绍一下–link选项的用法,通过–link选项能够进行容器间的安全的交互通信,使用的格式为:name:alias,可在一个docker run命令中重复使用该参数。使用实例如下:
docker run --link redis:redis --name console ubuntu bash
上例中在ubuntu镜像上启动一个容器,并命名为console,同时将新启动的console容器连接到名为redis的容器上。在使用–link选项时,连接通过容器名来确定容器。
通过–link选项来建立容器之间的连接,不但可以避免容器的IP和端口暴露到外网导致的安全问题,还可以防止容器自重启后IP地址发生变化导致的访问的失效,它的原理类似于DNS服务器的与域名和IP地址的映射。当容器的IP地址发生变化时,Docker自动维护映射关系中的IP地址
该容器中的/etc/hosts记录了master的IP地址为172.17.0.2.即redis-master容器的IP地址。
3、配置redis集群
在配置redis集群之前,需要一个redis.conf配置文件。docker的redis镜像不提供这个配置文件,需要自己从网上下载。此处从官方网站上下载
wget -c http://download.redis.io/redis-stable/redis.conf
下载完成后,将redis配置文件拷贝成三分,并因此命名为:redis-master.conf, redis.slave1.conf,redis-slave2.conf。将这三个文件放在主机上一个文件夹下。如:/root/redis/下。
在redis-master.conf下做如下修改
daemonize yespidfile /var/run/redis.pidbind 0.0.0.0
在redis-slave.conf下做如下修改:
daemonize yespidfile /var/run/redis.pidslaveof master 6379bind 0.0.0.0
注:我在配置完毕后启动容器,运行info命令查看到上述信息中connected_slaves的值为0,测试主从复制也没有成功,后来搜索了相关资料,需要将所有配置文件中的bind 127.0.0.1修改为bind 0.0.0.0,修改完毕后重启所有服务。这个问题害的我调试了一下午没有成功。从网上找到一个博客说只修该redis-master.conf即可。但是我发现没有用,最后把三个全部都修改了就可以了。
首先启动master容器再启动slave容器,启动命令如下:
docker run -it -v /root/redis/redis-master.conf:/usr/local/bin/redis.conf --name redis-master redis /bin/bashdocker run -it -v /root/redis/redis-slave1.conf:/usr/local/bin/redis.conf --name redis-slave1 --link redis-master:master redis /bin/bashdocker run -it -v /root/redis/redis-slave2.conf:/usr/local/bin/redis.conf --name redis-slave2 --link redis-master:master redis /bin/bash
需要注意的是-v参数,-v参数用于将宿主机上的某个目录挂载到容器中。由于容器都是轻量化设计,只包含运行时的必须文件,所以在容器中使用vim之类的命令很不方便(可能需要自行安装vim编辑器),所以我们将之前配置好的redis.conf文件挂载到对应的容器中。因此,我们可以直接在宿主机上使用vim命令或其他文本编辑器编辑redis.conf文件。
接下来是启动redis服务,这里推荐为每个容器分配一个shell窗口,方便直接在容器内执行命令。先启动master,然后启动slaver。分别在master、slave1和slave2中运行启动redis服务的命令:
redis-server /usr/local/bin/redis.conf
启动容器后在master节点启动客户端,查看redis服务运行的状态redis-cli
之前没有修改bind 127.0.0.1的时候,connected_slaves的值为0。
在主节点上设置的信息,在从节点上也可以查看到。至此一个单机的redis主从集群搭建完成。
参考:Docker:创建Redis集群
- docker:搭建单机redis主从集群
- 搭建redis单机集群
- docker搭建redis集群
- docker搭建redis集群
- redis主从集群的搭建
- 使用docker快速搭建MySQL主从集群
- docker--使用docker搭建redis集群
- docker系列-03.docker搭建redis集群
- Redis单机及其集群的搭建
- redis单机及其集群的搭建
- redis单机及其集群的搭建
- 【taotao】redis单机与集群搭建
- Redis 3.2.1集群搭建(单机)
- Redis单机及其集群的搭建
- redis单机版和集群版搭建
- Redis的单机和集群搭建
- redis单机及其集群的搭建
- 4.Redis主从复制集群搭建步骤
- 精品绘画在线学习平台轻微课教程目录
- 正则表达式自我复习
- HTML03-表单
- Java递归实现整数各位求和
- HDU
- docker:搭建单机redis主从集群
- C语言之贪心算法(背包问题)
- codeforces 864C Marco and GCD Sequence
- 稀疏矩阵三元组的操作
- Redis开发实例(3)-List
- 二叉树,完全二叉树,满二叉树,平衡二叉树的区别
- jsp生成验证码
- 8张图理解Java
- Linux下解压和压缩文件的方式