前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker配置redis集群和scrapyd服务

docker配置redis集群和scrapyd服务

作者头像
星星在线
发布2018-08-21 10:32:29
9210
发布2018-08-21 10:32:29
举报
文章被收录于专栏:python爬虫实战之路

Redis集群的配置方式我们上一篇已经介绍过了,而且使用Dockerfile配置文件我们也介绍了,不过介绍的并不详细,可能有些人看不明白,这篇我们再介绍一些Docker的一些常用命令。

Redis集群的Docker部署

我们已经有了Docker利器,环境部署自然是要使用了。那么让我们先思考一下,redis集群配置中需要绑定本机IP,而我们拉起容器时IP是随机的,那么我们必须要固定docker容器ID。

固定docker容器IP地址

首先我们要查看一下拉起的容器IP地址

查看docker容器IPdocker inspect 容器ID |grep IPA

要固定IP我们先了解一下Docker的网络模式Docker安装后,默认会创建下面三种网络类型:

bridgehostnone

启动 Docker的时候,用--net参数,可以指定网络类型,如:docker run -itd --name redis-16379 --net bridge --ip 172.18.0.2 -p 16379:6379 scrapy_redis:latest /bin/bash

  • bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

  • none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

  • host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的,也就是Docker容器中的端口会自动映射到主机。例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

我们要通过创建自定义网络的方式来设置固定IP

创建自定义网络:(设置固定IP)启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:

  • 步骤1: 创建自定义网络

创建自定义网络,并且指定网段:172.18.0.0/16docker network create --subnet=172.18.0.0/16 mynetwork

  • 步骤2: 创建Docker容器

docker run -itd --name redis-scrapyd-1 --net mynetwork --ip 172.18.0.2 -p 16379:6379 -p 16800:6800 scrapy_redis:latest /bin/bash --net使用我们创建的网络模式,--ip指定容器IP地址,-p指定端口映射

使用GitHub创建docker镜像

docker build命令用来拉取镜像,而且可以指定使用git地址来创建镜像。例如我的Git地址:https://github.com/xingxingzaixian/docker_scrapy_redis_python3.6.git,大家都可以使用一下命令来创建镜像

  1. 创建镜像
代码语言:javascript
复制
docker build -t scrapyd_redis https://github.com
/xingxingzaixian/docker_scrapy_redis_python3.6.git

镜像创建好了,可以创建自定义网络

  1. 创建自定义网络
代码语言:javascript
复制
docker network create --subnet=172.18.0.0/16 mynetwork

使用以下命令拉起容器:

  1. 拉起容器
代码语言:javascript
复制
docker run -itd --name redis-16379 --net mynetwork --ip 172.18.0.2 -p 16379:6379 -p 16800:6800 scrapy_redis:latest /bin/bash

拉起容器后,我们要修改redis启动配置文件的绑定IP

  1. 修改redis启动配置

我在git中上传的redis.conf文件中bind配置为localhost,方便替换

代码语言:javascript
复制
docker exec 容器ID sed -i "s/localhost/172.18.0.3/g" /app/redis.conf

启动容器内scrapyd和redis服务

  1. 启动scrapyd和redis服务
代码语言:javascript
复制
docker exec -d 容器ID redis-server /app/redis.conf
docker exec -d 容器ID scrapyd

六个容器都启动以后,就可以启动Redis集群

  1. 启动Redis集群

随便进入一个容器,执行启动Redis集群命令

代码语言:javascript
复制
/app/redis-stable/src/redis-trib.rb create --replicas 1 
ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 

然后我们就可以在本地通过远程访问云服务器的地址来访问redis集群

注意:

使用git地址创建的镜像中redis的配置文件绑定地址是固定的,如果我们在不同的主机上进行部署,那么容器的固定IP写成一样的还是可以的,但是如果是在同一个机器上就一定要修改容器内的redis.conf的绑定地址。

安装上面的步骤启动的是redis集群服务,如果想使用单独的redis服务,只要把redis.conf文件中集群相关的配置注释即可

代码语言:javascript
复制
# cluster-enabled yes(启动集群模式)
# cluster-config-file nodes-7000.conf(7000和port要对应)
# cluster-node-timeout 15000
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python爬虫实战之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis集群的Docker部署
    • 固定docker容器IP地址
      • 使用GitHub创建docker镜像
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档