Docker 最佳实战:Docker 部署单节点 Redis 实战

225 阅读4分钟

Docker 最佳实战:Docker 部署单节点 Redis 实战

2024 年云原生运维实战文档 99 篇原创计划 第 034 篇 |Docker 最佳实战「2024」系列 第 019 篇

你好,欢迎来到运维有术

今天分享的内容是 Docker 最佳实战「2024」 系列文档中的 Docker 部署单节点 Redis 实战

本文将详细介绍如何用 Docker 容器及 Docker Compose 部署单节点 Redis。

实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同)

主机名IPCPU(核)内存(GB)系统盘(GB)数据盘(GB)用途
docker-node-1192.168.9.8141640100Docker 节点 1
docker-node-2192.168.9.8241640100Docker 节点 2
docker-node-3192.168.9.8341640100Docker 节点 3
合计31248120300

实战环境涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3
  • Docker:24.0.7
  • Redis:7.0.15

1. 前置条件

使用 Docker 部署 Redis 服务的镜像有以下几种选择:

  • redis (DockerHub 官方提供,下载量 1B+)
  • redis/redis-stack-server (Redis 官方提供,下载量 10M+)

本文选择下载量最大的 DockerHub 官方提供的镜像,构建单节点 Redis 服务。

2. 安装部署 Redis

2.1 创建数据目录并设置权限

cd /data/containers
mkdir -p redis/{data,config,logs}

2.2 创建配置文件

创建配置文件,vi redis/config/redis.conf

# 通用配置
daemonize no
pidfile /var/run/redis-server.pid
loglevel notice
dir /data
​
# 持久化配置
save 60 10000
save 300 100000
save 900 1000000
rdbcompression yes
dbfilename dump.rdb
databases 16# 网络配置
port 6379
timeout 0
tcp-backlog 511# AOF 配置
appendonly yes
appendfilename appendonly.aof
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
​
# 其他高级配置
activerehashing yes
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64# 慢查询日志
slowlog-log-slower-than 10000
slowlog-max-len 1024# 安全认证
requirepass OpsXlab@2024

2.3 创建 docker-compose.yml 文件

创建配置文件,vi redis/docker-compose.yml 

services:
  redis:
    container_name: redis
    image: redis:7.0.15
    restart: always
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    sysctls:
      - net.core.somaxconn=511
    environment:
      - TZ=Asia/Shanghai
    networks:
      - app-tier
    ports:
      - 6379:6379
    volumes:
      - ./data:/data
      - ./config:/etc/redis/
    command: redis-server /etc/redis/redis.conf

networks:
  app-tier:
    name: app-tier
    driver: bridge
    #external: true

2.4 创建并启动服务

  • 启动服务
cd /data/containers/redis
docker compose up -d

2.5 验证容器状态

  • 查看容器状态
$ docker compose ps
NAME      IMAGE          COMMAND                  SERVICE   CREATED         STATUS         PORTS
redis     redis:7.0.15   "docker-entrypoint.s…"   redis     5 seconds ago   Up 4 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
  • 查看服务日志
# 通过日志查看容器是否有异常,结果略
$ docker compose logs -f

3. 验证测试

为了测试 Redis 服务的可用性,利用 Docker 创建一个 Redis 客户端容器实例,并执行几个简单的查询命令。

  • 创建 Redis 客户端实例
docker run -it --rm --network app-tier redis:7.0.15 redis-cli -h 192.168.9.81
  • 执行测试命令
$ docker run -it --rm --network app-tier redis:7.0.15 redis-cli -h 192.168.9.81
192.168.9.81:6379> AUTH OpsXlab@2024
OK
192.168.9.81:6379> ping
PONG
192.168.9.81:6379> set hello opsxlab
OK
192.168.9.81:6379> get hello
"opsxlab"
192.168.9.81:6379>

4. 自动化 Shell 脚本

文章中所有操作步骤,已全部编排为自动化脚本,包含以下内容(因篇幅限制,不在此文档中展示):

  • Shell 脚本部署单节点 Redis
  • Ansible 容器化部署单节点 Redis

运维有术星球会员请到专属代码仓库下载(价值内容,仅星球会员专享)。

以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒

  • 如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

    欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾

    免责声明:

    • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。

    • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

    Get 本文实战视频(请注意,文档视频异步发行,请先关注)

    版权声明

    • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载