Docker搭建Redis集群

释放双眼,带上耳机,听听看~!

Docker搭建Redis集群

1. 安装Redis

  1. 拉取redis官方镜像

1
2
3
1docker pull redis
2
3
  1. 查看镜像

1
2
3
1docker images
2
3
  1. 启动redis

1
2
3
1docker run -it -p 6379:6379 --name myredis docker.io/redis
2
3
  1. 查看redis服务

1
2
3
1docker ps
2
3
  1. 测试

1
2
3
1docker exec -it [容器id] redis-cli
2
3

2. 搭建集群

以搭建6个节点,三主三从结构为例,分如下步骤

创建目录myredis,并创建服务节点子目录,这里我们创建6个子目录slave01、slave02、slave03、slave04、slave05、slave06

下载配置文件redis.conf到myredis中


1
2
3
1wget http://download.redis.io/redis-stable/redis.conf
2
3

修改配置文件redis.conf
修改后的配置文件需要copy到slave目录中,以slave01为例,修改内容参考


1
2
3
4
5
6
7
8
1# bind 127.0.0.1                       // 注释掉,表示默认所有ip都能访问该redis服务
2protected-mode no                      // 关闭保护模式,开启可能导致无法通过公网访问
3port 6381                                  // 自定义端口
4pidfile /var/run/redis_6381.pid        // 将文件名加上当前端口名
5cluster-enabled yes                    // 开启集群
6cluster-config-file nodes-6381.conf    // 集群的配置文件,首次启动会自动生成
7
8

编写dockerfile,以slave01为例


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1FROM docker.io/redis
2
3# 复制上一步修改的配置文件到redis中
4COPY redis.conf /usr/local/etc/redis/redis.conf
5
6# 修改文件权限,后面设置密码可以通过config rewrite重写
7RUN chmod 777 /usr/local/etc/redis/redis.conf
8
9# Redis客户端连接端口
10EXPOSE 6381
11# 集群总线端口
12EXPOSE 16381
13
14# 启动redis服务
15CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
16
17

编写docker-compose.yml,注意该文件的位置
Docker搭建Redis集群


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
1version: '3'    
2services:
3  redis-slave1:
4    network_mode: "host"
5    build: ./slave01
6    volumes:
7     - ./data/slave01:/data
8    ports:
9     - 6381:6381
10     - 16381:16381
11    privileged: true     # CentOS7中的安全模块selinux把权限禁掉了
12  redis-slave2:
13    network_mode: "host"
14    build: ./slave02
15    volumes:
16     - ./data/slave02:/data
17    ports:
18     - 6382:6382
19     - 16382:16382
20    privileged: true
21  redis-slave3:
22    network_mode: "host"
23    build: ./slave03
24    volumes:
25     - ./data/slave03:/data
26    ports:
27     - 6383:6383
28     - 16383:16383
29    privileged: true
30  redis-slave4:
31    network_mode: "host"
32    build: ./slave04
33    volumes:
34     - ./data/slave04:/data
35    ports:
36     - 6384:6384
37     - 16384:16384
38    privileged: true
39  redis-slave5:
40    network_mode: "host"
41    build: ./slave05
42    volumes:
43     - ./data/slave05:/data
44    ports:
45     - 6385:6385
46     - 16385:16385
47    privileged: true
48  redis-slave6:
49    network_mode: "host"
50    volumes:
51     - ./data/slave06:/data
52    build: ./slave06
53    ports:
54     - 6386:6386
55     - 16386:16386
56    privileged: true
57
58

启动服务


1
2
3
1docker-compose up -d
2
3

创建集群
redis-trib 是redis官方提供的一个集群管理工具


1
2
3
1docker run --rm -it zvelo/redis-trib create --replicas 1 [ip]:6381 [ip]:6382 [ip]:6383 [ip]:6384 [ip]:6385 [ip]:6386
2
3

验证集群
连接任何一个redis服务,查看集群信息,然后测试数据操作


1
2
3
1cluster info
2
3

设置集群密码
连接每台redis节点服务,做以下操作,注意每个节点密码保持一致


1
2
3
4
5
6
1config set masterauth [密码]
2config set requirepass [密码]
3auth [密码]
4config rewrite                     // 回写到文件/usr/local/etc/redis/redis.conf
5
6

重启集群


1
2
3
1docker-compose restart
2
3

重启后集群依然正常工作则大功告成

给TA打赏
共{{data.count}}人
人已打赏
安全经验

英文站如何做Google Adsense

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索