基于Docker的Redis分片集群

使用Docker命令模式搭建

1. 拉取redis镜像

docker search redis
docker pull redis:latest

2.创建redis集群的容器,并启动

docker creater --name redis-node1 --net host -v /home/rediscluster/node1:/data redis --cluster-config-file nodes-node-1.conf --port 6379

此命令根据镜像创建六个redis容器,端口号是6379-6384。

参数解释:

--cluster-enabled :是否启动集群,选值yes no
--cluster-config-file 配置文件.conf:保存节点信息,创建的时候自动生成。
--cluster-node-timeout: 毫秒值:配置节点连接超时时间。
--appendonly :是否开启aof持久化,选值:yes、no
--net host:使用docker host模式的网络连接类型,直接挂载到本机网卡的端口上,而不是通过网桥-主机端口映射的模式。

启动:

docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6

3.组建redis集群

查看docker容器: docker ps -a
进入任意一个Redis的实例:docker exec -it redis-node1 /bin/bash
使用命令搭建集群:redis-cli --cluster create 主机IP:6379 主机IP:6380 主机IP:6381 主机IP:6382 主机IP:6383 主机IP:6384 --cluster-replicas 1
最后一条命令相关解释:
- `--cluster-replicas 1`:此命令为告诉主从模式如何配置,1是主从比例及:1比1,一个主节点配置一个从节点
        - 这条命令是让redis根据配置的6个ip自动创建分片+主从集群,而且一个主节点必须有一个从节点,这样计算后,redis会随机分配三个地址为分片节点,剩余三个地址为以上三个地址的从节点。这样构建了集群了,有数据分片功能,也有主从功能。
        - 三个分片,哈希槽总共有16384个散列槽,节点A从0-5500,节点B从5501到11000,节点C从11001到16383。
        - 如果主从比例是2,那么主从比是1:2,即3主6从,最少需要9个redis实例,如果不足则会报错。
        - 数据分片的主节点最少3个,3个才能保证集群的健壮性。

4.搭建完成后的测试

1. 使用`cluster nodes`命令查看集群的信息,应该会显示3主3从才是正确。
2. 进入任意一个Redis的实例,使用`redis-cli -c`命令连接到集群节点,使用Set Get命令进行测试

5.搭建完成后防火墙的配置,测试环境是centos7

   1. `systemctl start firewalld.service ` 启动防火墙
    2. `systemctl stop firewalld.service` 关闭防火墙
    3. `systemctl status firewalld.service` 查看防火墙状态
    4. `systemctl enable/disable firewalld.service` 在开机时启用服务/禁用服务
    5. `firewall-cmd --state` 查看防火墙状态
    6. `firewall-cmd --reload`更新防火墙规则,修改配置后要重启防火墙。
    7. `firewall-cmd --list-ports` 查看所有打开的端口
    8. `firewall-cmd --list-services` 查看所有允许的服务
    9. `firewall-cmd --query-port=8080/tcp` 查询端口是否开放
    10. `firewall-cmd --add-port=6379-6384/tcp --permanent` 永久增加6379-6384端口 

 

posted @ 2021-07-23 10:13  泾县周杰伦  阅读(164)  评论(0)    收藏  举报