Redis集群的配置方式我们上一篇已经介绍过了,而且使用Dockerfile配置文件我们也介绍了,不过介绍的并不详细,可能有些人看不明白,这篇我们再介绍一些Docker的一些常用命令。
我们已经有了Docker利器,环境部署自然是要使用了。那么让我们先思考一下,redis集群配置中需要绑定本机IP,而我们拉起容器时IP是随机的,那么我们必须要固定docker容器ID。
首先我们要查看一下拉起的容器IP地址
查看docker容器IP
docker 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
默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
使用 --network=none ,docker 容器就不会分配局域网的IP
使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的,也就是Docker容器中的端口会自动映射到主机。例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。
我们要通过创建自定义网络的方式来设置固定IP
创建自定义网络:(设置固定IP)启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:
创建自定义网络,并且指定网段:172.18.0.0/16docker network create --subnet=172.18.0.0/16 mynetwork
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指定端口映射
docker build命令用来拉取镜像,而且可以指定使用git地址来创建镜像。例如我的Git地址:https://github.com/xingxingzaixian/docker_scrapy_redis_python3.6.git,大家都可以使用一下命令来创建镜像
docker build -t scrapyd_redis https://github.com
/xingxingzaixian/docker_scrapy_redis_python3.6.git
镜像创建好了,可以创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
使用以下命令拉起容器:
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
我在git中上传的redis.conf文件中bind配置为localhost,方便替换
docker exec 容器ID sed -i "s/localhost/172.18.0.3/g" /app/redis.conf
启动容器内scrapyd和redis服务
docker exec -d 容器ID redis-server /app/redis.conf
docker exec -d 容器ID scrapyd
六个容器都启动以后,就可以启动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爬虫实战之路 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!