SpringBoot2.0整合Docker_Redis一主二从三哨兵

Docker_Redis

1. docker pull 拉取redis,并准备相对应版本的配置文件,配置文件不对应的话,可能会出问题。
[root@localhost redis]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               4.0                 8280a2c45ce5        3 weeks ago         89.2MB
2. 修改配置文件
  • 主机配置文件(只列出修改部分)
# bind 127.0.0.1        # 注掉ip绑定
protected-mode yes      # 打开保护模式
port 6379               # 主机默认6379
masterauth 123456       # 从机也有密码,加上验证
requirepass 123456      # 验证密码
  • 从机1配置文件(只列出修改部分)
# bind 127.0.0.1            # 注掉ip绑定
protected-mode yes          # 打开保护模式
port 6380                   # 从机6380端口
slaveof 192.168.0.159 6379  # 加上主机的ip和端口,等会儿docker启动redis的时候,使用的network是host,所以ip可以确定
masterauth 123456           # 从机也有密码,加上验证
requirepass 123456          # 验证密码
  • 从机2配置文件(只列出修改部分)
# bind 127.0.0.1            # 注掉ip绑定
protected-mode yes          # 打开保护模式
port 6381                   # 从机6381端口
slaveof 192.168.0.159 6379  # 加上主机的ip和端口,等会儿docker启动redis的时候,使用的network是host,所以ip可以确定
masterauth 123456           # 从机也有密码,加上验证
requirepass 123456          # 验证密码
3. 启动redis
  • 首先启动主机
docker run \
-v /dockerRedis/redis:/usr/local/etc/redis \        # 绑定数据卷,主机的redis.conf放到本地的/dockerRedis/redis目录中,它会同步到容器中
-v /dockerRedis/data:/data \                        # 持久化数据
--name redis \
--network host \                                    # 使用host
-d redis:4.0 \
redis-server /usr/local/etc/redis/redis.conf \      # 以配置文件方式启动
--appendonly yes
  • 启动从机1
docker run \
-v /dockerRedis80/redis:/usr/local/etc/redis \          # 绑定数据卷,从机1的redis.conf放到本地的/dockerRedis80/redis目录中,它会同步到容器中
-v /dockerRedis80/data:/data \                          # 持久化数据
--name redis80 \
--network host \                                        # 使用host
-d redis:4.0 \
redis-server /usr/local/etc/redis/redis.conf \          # 以配置文件方式启动
--appendonly yes
  • 启动从机2
docker run \
-v /dockerRedis81/redis:/usr/local/etc/redis \          # 绑定数据卷,从机2的redis.conf放到本地的/dockerRedis81/redis目录中,它会同步到容器中
-v /dockerRedis81/data:/data \                          # 持久化数据
--name redis81 \
--network host \                                        # 使用host
-d redis:4.0 \
redis-server /usr/local/etc/redis/redis.conf \          # 以配置文件方式启动
--appendonly yes
  • 查看是否启动成功
[root@localhost redis]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
ba3bf2106517        redis:4.0           "docker-entrypoint.s…"   6 hours ago         Up About an hour                        redis81
12974de744bb        redis:4.0           "docker-entrypoint.s…"   6 hours ago         Up 27 minutes                           redis80
889f5f75d2a8        redis:4.0           "docker-entrypoint.s…"   6 hours ago         Up 34 minutes                           redis
  • 登陆redis客户端查看主从是否成功

    • 主机
    [root@localhost ~]# docker exec -it redis redis-cli
    127.0.0.1:6379> auth 123456
    OK
    127.0.0.1:6379> info replication
    # Replication
    role:master         # master角色
    connected_slaves:2  # 连接的从机数量
    slave0:ip=192.168.0.159,port=6381,state=online,offset=792339,lag=1  # 从机6381
    slave1:ip=192.168.0.159,port=6380,state=online,offset=792195,lag=1  # 从机6380
    master_replid:36b946e492eb817705b37c850bf8556136df22b7
    master_replid2:2d958c8ec641afb7144b329ec0ee6d54a9eb389d
    master_repl_offset:792497
    second_repl_offset:396598
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:333961
    repl_backlog_histlen:458537
    
    • 从机(另一个从机信息差不多)
    127.0.0.1:6380> [root@localhost ~]# docker exec -it redis80 redis-cli -p 6380
    127.0.0.1:6380> auth 123456
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:slave                  # slave角色
    master_host:192.168.0.159   # 主机ip
    master_port:6379            # 主机端口
    master_link_status:up       # 连接状态
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:831773
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:36b946e492eb817705b37c850bf8556136df22b7
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:831773
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:405043
    repl_backlog_histlen:426731
    
4. 启动哨兵
  • 哨兵 sentinel.conf 配置文件(三个哨兵配置文件都一样,唯一不同的就是上面的端口号,分别为主机的26379和两个从机的26380、26381)
port 26379
sentinel monitor masterRedis 192.168.0.159 6379 2
sentinel auth-pass masterRedis 123456
  • 将三个 sentinel.conf 配置文件分别放在刚才放 redis.conf三个文件夹中,它们会自动同步到docker容器内。

  • 启动主机哨兵
    使用命令: docker exec -it redis redis-sentinel /usr/local/etc/redis/sentinel.conf

    • 为了直接看到启动效果,我在前台运行,然后用 Ctrl + P + Q 快捷键,不关闭容器的情况下退出。
    • 这里启动哨兵的方式,是用刚才的Redis主机容器新开窗口启动,接下开两个从机也是相同的方式。
[root@localhost redis]# docker exec -it redis redis-sentinel /usr/local/etc/redis/sentinel.conf
24:X 17 Dec 07:04:00.734 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
24:X 17 Dec 07:04:00.734 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=24, just started
24:X 17 Dec 07:04:00.734 # Configuration loaded
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.14 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                            
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值