最早看Redis集群搭建的文章,还是多开几个虚拟机或者单机多开几个端口的办法,起初发现其实用docker更加简略不便。
1.拉取镜像
docker search redisdocker pull redis
2.生成配置文件
mkdir redis-clustercd redis-clustervim redis-cluster.tmpl
port ${PORT}masterauth 123456requirepass 123456cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000cluster-announce-ip 192.168.10.83cluster-announce-port ${PORT}cluster-announce-bus-port 1${PORT}appendonly yes
参数形容(1)port(端口号)(2)masterauth(设置集群节点间拜访明码,跟上面统一)(3)requirepass(设置redis拜访明码)(4)cluster-enabled yes(启动集群模式)(5)cluster-config-file nodes.conf(集群节点信息文件)(6)cluster-node-timeout 5000(redis节点宕机被发现的工夫)(7)cluster-announce-ip(集群节点的汇报ip,避免nat,事后填写为网关ip后续须要手动批改配置文件)(8)cluster-announce-port(集群节点的汇报port,避免nat)(9)cluster-announce-bus-port(集群节点的汇报bus-port,避免nat)(10) appendonly yes(开启aof)
3.生成配置文件和数据目录
执行以下命令,按模板生成文件以及文件夹for port in `seq 7001 7006`; do \ mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \ && mkdir -p ./${port}/data; \done
4.创立6个redis容器
docker run -d --net=host -v /redis-cluster/7001/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/7001/data:/data --restart always --name=redis-7001 redis redis-server /etc/redis/redis.confdocker run -d --net=host -v /redis-cluster/7002/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/7002/data:/data --restart always --name=redis-7002 redis redis-server /etc/redis/redis.confdocker run -d --net=host -v /redis-cluster/7003/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/7003/data:/data --restart always --name=redis-7003 redis redis-server /etc/redis/redis.confdocker run -d --net=host -v /redis-cluster/7004/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/7004/data:/data --restart always --name=redis-7004 redis redis-server /etc/redis/redis.confdocker run -d --net=host -v /redis-cluster/7005/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/7005/data:/data --restart always --name=redis-7005 redis redis-server /etc/redis/redis.confdocker run -d --net=host -v /redis-cluster/7006/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/7006/data:/data --restart always --name=redis-7006 redis redis-server /etc/redis/redis.conf或者for port in `seq 7001 7006`; do \ docker run -d --net=host -v /redis-cluster/${port}/conf/redis.conf:/etc/redis/redis.conf -v /redis-cluster/${port}/data:/data --restart always --name=redis-${port} redis redis-server /etc/redis/redis.conf \done
docker ps
5.进入任一容器
docker exec -it redis-7001 bashredis-cli -a 123456 --cluster create 192.168.10.83:7001 192.168.10.83:7002 192.168.10.83:7003 192.168.10.83:7004 192.168.10.83:7005 192.168.10.83:7006 --cluster-replicas 1
6.在Lumen中应用
/config/database.php
redis
配置
Lumen
版本Lumen (7.1.2) (Laravel Components ^7.0)
'redis' => [ 'client' => env('REDIS_CLIENT', 'predis'),//必须是predis,phpredis不反对集群 'cluster' => false,这个实测如同并没有用,true/false都一样 'clusters' => [ 'default' => [//填一个就好,主动分槽 [ 'host' => '127.0.0.1', 'port' => 7001 ], ], ], 'options' => [ 'cluster' => 'redis', 'parameters'=>[//明码要写到这里,之前写到下面的配置里,始终报错 'password'=>'123456' ], ],