专栏首页python爬虫实战之路docker配置redis集群和scrapyd服务

docker配置redis集群和scrapyd服务

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. 创建镜像
docker build -t scrapyd_redis https://github.com
/xingxingzaixian/docker_scrapy_redis_python3.6.git

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

  1. 创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork

使用以下命令拉起容器:

  1. 拉起容器
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,方便替换

docker exec 容器ID sed -i "s/localhost/172.18.0.3/g" /app/redis.conf

启动容器内scrapyd和redis服务

  1. 启动scrapyd和redis服务
docker exec -d 容器ID redis-server /app/redis.conf
docker exec -d 容器ID scrapyd

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

  1. 启动Redis集群

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

/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文件中集群相关的配置注释即可

# cluster-enabled yes(启动集群模式)
# cluster-config-file nodes-7000.conf(7000和port要对应)
# cluster-node-timeout 15000

本文分享自微信公众号 - python爬虫实战之路(gh_f26a568fdea8),作者:星星o在线

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 告诉你最简单的方式搭建MySQL、Redis、MongoDB数据库

    数据库在我们日常开发中接触是很多的,平时自己没事写一些东西也经常会用到,之前专门写过安装MySQL、Redis、MongoDB的文章,各种安装配置还是比较麻烦的...

    星星在线
  • Linux/Mac安装Redis数据库

    如果要安装最新的redis,需要安装Remi的软件源,官网地址:http://rpms.famillecollet.com/

    星星在线
  • docker容器操作命令

    CMD:https://docs.docker.com/engine/reference/builder/#cmd

    星星在线
  • Docker的典型应用场景

    相对于VM,docker在其轻量、配置复杂度以及资源利用率方面有着明显的优势。 随着docker技术的不断成熟,越来越多的企业开始考虑通过docker来改进自己...

    小小科
  • 告诉你最简单的方式搭建MySQL、Redis、MongoDB数据库

    数据库在我们日常开发中接触是很多的,平时自己没事写一些东西也经常会用到,之前专门写过安装MySQL、Redis、MongoDB的文章,各种安装配置还是比较麻烦的...

    星星在线
  • 『中级篇』多容器复杂应用的部署(30)

    ![(https://upload-images.jianshu.io/upload_images/11223715-8a1876d398bd6dde.png?...

    IT故事会
  • 如何在Ubuntu上 dockerize和部署多个WordPress应用程序

    WordPress已成为世界上最常见的部署和使用的Web应用程序之一。由于多年的不断发展,现在可以基于WordPress及其可用的插件/扩展创建几乎无数的不同网...

    大瓜皮
  • 跟我一起学docker(12)--docker compose的使用

    IT故事会
  • 五、docker-compose开锋(docker 三剑客)

    终于写到docker-compose了,其实我最开始接触docker的时候,是因为一个开源项目需要用docker 环境和docke-compose 所以我最先接...

    程序员爱酸奶
  • Docker中运行的Java 9将能调整内存限制

    OpenJDK 9中首次新增了一项实验性功能,JVM可借助该功能检测到自己运行在容器中,进而酌情调整内存限制。尽管过去几年来容器技术日渐流行,但包括JVM在内的...

    静一

扫码关注云+社区

领取腾讯云代金券