关于redis-cluster:Docker-Redis集群搭建

3次阅读

共计 2825 个字符,预计需要花费 8 分钟才能阅读完成。

最早看 Redis 集群搭建的文章,还是多开几个虚拟机或者单机多开几个端口的办法,起初发现其实用 docker 更加简略不便。

1. 拉取镜像

docker search redis
docker pull redis

2. 生成配置文件

mkdir redis-cluster
cd redis-cluster
vim redis-cluster.tmpl
port ${PORT}

masterauth 123456

requirepass 123456

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

cluster-announce-ip 192.168.10.83

cluster-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.conf
docker 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.conf
docker 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.conf
docker 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.conf
docker 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.conf
docker 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 bash
redis-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'
        ],
    ],
正文完
 0