为了构建一个集群,我们首先要让redis启用集群模式 一个简单的配置文件如下redis。confredis。conffileport6379clusterenabledyesclusterconfigfilenodes。confclusternodetimeout5000appendonlyyes 因为是在单机上演示,所以我们得修改port防止冲突 比如我们要创建3主5副的集群,那么这八个redis实例启动的时候就应该用不同的端口(7000,7001。。。7007),这样能防止冲突。。7000redis。conf7001redis。conf7002redis。conf7003redis。conf7004redis。conf7005redis。conf7006redis。conf7007redis。conf 。7000redis。conf中的port设置成7000,依此类推。7007redis。conf中的port应该设置成7007 万事俱备,只需运行redisserver。redis。conf命令即可,当然你需要依次启动八个redisserverforiinseq70007007;doexecredisserver。{i}redis。confdonerediscliclustercreate127。0。0。1:7000127。0。0。1:7001127。0。0。1:7002127。0。0。1:7003127。0。0。1:7004127。0。0。1:7005127。0。0。1:7006127。0。0。1:7007clusterreplicas1 这样整个集群就搭建好了,你可以选择运行在port70007007中的任意一个servr登录,然后去执行一些你喜欢的命令验证一下〔狗头〕使用DockerCompose构建集群 现在让我们来明确一下流程,首先我们需要启动八个redisserver实例,然后运行rediscliclustercreate命令创建集群,这意味着我们需要创建一个dockernetwork使得集群成员能够互相通讯 创建一个network也很简单networks:redisnetwork:name:redisnetwork使用网桥driver:bridgeipam:driver:default指定网段,需要注意不能与已有的dockernetwork相冲突config:subnet:172。18。0。024 还记得之前命令行是如何启动集群的吗?最后需要运行命令rediscliclustercreate,整个集群才算成功创建,那在yml文件中该怎么写呢? 我们可以借助dependson来告诉docker当前的service依赖其他的service 具体的细节请看完整的yml文件redis。confport6379clusterenabledyesclusterconfigfilenodesredis。confclusternodetimeout5000appendonlyyesappendfilenameappendonlyredis。aofversion:3。7networks:redisnetwork:name:redisnetworkdriver:bridgeipam:driver:defaultconfig:subnet:172。18。0。024services:rediscluster:image:redis:6alpinecommand:rediscliclustercreate172。18。0。11:6379172。18。0。12:6379172。18。0。13:6379172。18。0。14:6379172。18。0。15:6379172。18。0。16:6379172。18。0。17:6379172。18。0。18:6379clusteryesclusterreplicas1networks:redisnetworkdependson:redis1redis2redis3redis4redis5redis6redis7redis8redis1:image:redis:6alpinecontainername:redis1command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。11expose:6379volumes:PWDdockerdataredis1:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis2:image:redis:6alpinecontainername:redis2command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。12expose:6379volumes:PWDdockerdataredis2:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis3:image:redis:6alpinecontainername:redis3command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。13expose:6379volumes:PWDdockerdataredis3:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis4:image:redis:6alpinecontainername:redis4command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。14expose:6379volumes:PWDdockerdataredis4:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis5:image:redis:6alpinecontainername:redis5command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。15expose:6379volumes:PWDdockerdataredis5:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis6:image:redis:6alpinecontainername:redis6command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。16expose:6379volumes:PWDdockerdataredis6:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis7:image:redis:6alpinecontainername:redis7command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。17expose:6379volumes:PWDdockerdataredis7:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。confredis8:image:redis:6alpinecontainername:redis8command:redisserverusrlocaletcredisredis。confnetworks:redisnetwork:ipv4address:172。18。0。18expose:6379volumes:PWDdockerdataredis8:dataPWDdockerconfigredis。conf:usrlocaletcredisredis。conf 最后不要忘记了最基本的命令sudodockercomposeup在当前命令下运行,启动集群sudodockercomposedown关闭集群的同时会将dockernetwork也一并删除如何与集群通信登录任意一个节点执行命令即可,集群会根据key的哈希值,将你的命令重定位sudodockerexecitredis5redisclip6379setfoobarsudodockerexecitredis1redisclip6379getfoooutputbar 原文链接:Docker极简入门:使用DockerCompose搭建redis集群ADmilk博客园