1.集群规划(使用3台虚拟机)
master1 | 192.168.88.3:7001 |
master2 | 192.168.88.4:7002 |
master3 | 192.168.88.5:7003 |
slave1 | 192.168.88.4:7004 |
slave2 | 192.168.88.5:7005 |
slave3 | 192.168.88.3:7006 |
2.拉取镜像
docker pull redis:5.0
3.在192.168.88.3上创建目录
1)创建redis集群目录
mkdir /home/wangyan/redis-cluster
2)进入目录
cd /home/wangyan/redis-cluster/
3)创建目录 7001 7002 7003 7004 7005 7006
mkdir 7001 && mkdir 7002 && mkdir 7003 && mkdir 7004 && mkdir 7005 && mkdir 7006
4)在每个目录下创建目录config和data
cd 7001;
mkdir conf && mkdir data;
5)进入每个conf目录,创建配置文件redis.conf
7001:
#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7001
#pid文件生成位置
pidfile /var/run/redis_7001.pid
#集群节点信息文件
cluster-config-file nodes_7001.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.3
#集群节点端口
cluster-announce-port 7001
#集群节点总线端口
cluster-announce-bus-port 17001
7002:
#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7002
#pid文件生成位置
pidfile /var/run/redis_7002.pid
#集群节点信息文件
cluster-config-file nodes_7002.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.4
#集群节点端口
cluster-announce-port 7002
#集群节点总线端口
cluster-announce-bus-port 17002
7003:
#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7003
#pid文件生成位置
pidfile /var/run/redis_7003.pid
#集群节点信息文件
cluster-config-file nodes_7003.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.5
#集群节点端口
cluster-announce-port 7003
#集群节点总线端口
cluster-announce-bus-port 17003
7004:
#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7004
#pid文件生成位置
pidfile /var/run/redis_7004.pid
#集群节点信息文件
cluster-config-file nodes_7004.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.4
#集群节点端口
cluster-announce-port 7004
#集群节点总线端口
cluster-announce-bus-port 17004
7005:
#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7005
#pid文件生成位置
pidfile /var/run/redis_7005.pid
#集群节点信息文件
cluster-config-file nodes_7005.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.5
#集群节点端口
cluster-announce-port 7005
#集群节点总线端口
cluster-announce-bus-port 17005
7006:
#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7006
#pid文件生成位置
pidfile /var/run/redis_7006.pid
#集群节点信息文件
cluster-config-file nodes_7006.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.3
#集群节点端口
cluster-announce-port 7006
#集群节点总线端口
cluster-announce-bus-port 17006
4.复制192.168.88.3上的目录到其他两台虚拟机
scp -r /home/wangyan/redis-cluster [email protected]:/home/wangyan/redis-cluster;
scp -r /home/wangyan/redis-cluster [email protected]:/home/wangyan/redis-cluster;
5.docker运行redis
192.168.88.3上运行:
docker run -itd --net=host -v /home/wangyan/redis-cluster/7001/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7001/data:/data --restart=always --name=redis-7001 redis:5.0 redis-server /etc/redis/redis.conf
docker run -itd --net=host -v /home/wangyan/redis-cluster/7006/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7006/data:/data --restart=always --name=redis-7006 redis:5.0 redis-server /etc/redis/redis.conf
192.168.88.4上运行:
docker run -itd --net=host -v /home/wangyan/redis-cluster/7002/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7002/data:/data --restart=always --name=redis-7002 redis:5.0 redis-server /etc/redis/redis.conf
docker run -itd --net=host -v /home/wangyan/redis-cluster/7004/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7004/data:/data --restart=always --name=redis-7004 redis:5.0 redis-server /etc/redis/redis.conf
192.168.88.5上运行:
docker run -itd --net=host -v /home/wangyan/redis-cluster/7003/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7003/data:/data --restart=always --name=redis-7003 redis:5.0 redis-server /etc/redis/redis.conf
docker run -itd --net=host -v /home/wangyan/redis-cluster/7005/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7005/data:/data --restart=always --name=redis-7005 redis:5.0 redis-server /etc/redis/redis.conf
6.初始化redis集群
进入任意一个容器
docker exec -it redis-7001 /bin/bash
执行创建集群命令
redis-cli -a 123456 --cluster create 192.168.88.3:7001 192.168.88.4:7002 192.168.88.5:7003 192.168.88.4:7004 192.168.88.5:7005 192.168.88.3:7006 --cluster-replicas 1
至此,redis集群搭建完成!