• 【Docker/K8S/Racher】Docker/K8S/Racher安装Redis-20220817


    1.Docker安装Redis

    参考史上最详细Docker安装Redis (含每一步的图解)实战 https://blog.csdn.net/weixin_45821811/article/details/116211724

    步骤1:Docker拉取镜像

    docker pull redis

    步骤2:Docker挂载配置文件

    接下来就是要将redis 的配置文件进行挂载,以配置文件方式启动redis 容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件)
    1)、挂载redis的配置文件
    2)、挂载redis 的持久化文件(为了数据的持久化)。

    • myredis.conf
    # bind 192.168.1.100 10.0.0.1
    # bind 127.0.0.1 ::1
    #bind 127.0.0.1
    
    protected-mode no
    
    port 6379
    
    tcp-backlog 511
    
    requirepass 000415
    
    timeout 0
    
    tcp-keepalive 300
    
    daemonize no
    
    supervised no
    
    pidfile /var/run/redis_6379.pid
    
    loglevel notice
    
    logfile ""
    
    databases 30
    
    always-show-logo yes
    
    save 900 1
    save 300 10
    save 60 10000
    
    stop-writes-on-bgsave-error yes
    
    rdbcompression yes
    
    rdbchecksum yes
    
    dbfilename dump.rdb
    
    dir ./
    
    replica-serve-stale-data yes
    
    replica-read-only yes
    
    repl-diskless-sync no
    
    repl-disable-tcp-nodelay no
    
    replica-priority 100
    
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    
    appendonly yes
    
    appendfilename "appendonly.aof"
    
    no-appendfsync-on-rewrite no
    
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    
    aof-load-truncated yes
    
    aof-use-rdb-preamble yes
    
    lua-time-limit 5000
    
    slowlog-max-len 128
    
    notify-keyspace-events ""
    
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    
    list-max-ziplist-size -2
    
    list-compress-depth 0
    
    set-max-intset-entries 512
    
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    
    hll-sparse-max-bytes 3000
    
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    
    activerehashing yes
    
    hz 10
    
    dynamic-hz yes
    
    aof-rewrite-incremental-fsync yes
    
    rdb-save-incremental-fsync yes
    
    • 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
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104

    步骤3:启动redis 容器

    启动容器命令行

    docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v C:/Users/Season/Desktop/redis/myredis.conf:/etc/redis/redis.conf -v C:/Users/Season/Desktop/redis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 000415
    
    • 1
    • 解释如下
    –restart=always 总是开机启动
    –log是日志方面的
    -p 6379:6379 将6379端口挂载出去
    –name 给这个容器取一个名字
    -v 数据卷挂载
    /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
    /home/redis/myredis/data:/data 这个同上
    -d redis 表示后台启动redis
    redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
    –appendonly yes 开启redis 持久化
    –requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    成功界面
    在这里插入图片描述

    步骤4:进入容器

    • 查看容器运行日志
    docker logs --since 30m myredis
    
    • 1

    在这里插入图片描述

    • 容器内部连接进行测试
    docker exec -it myredis redis-cli
    
    • 1
    • 权限验证
    auth 000415
    
    • 1

    步骤5:将django和redis连接

    启用中间件
    • settings\base.py
    MIDDLEWARE = [
        'interview.performance.performance_logger_middleware',
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.locale.LocaleMiddleware',
        'django.middleware.cache.UpdateCacheMiddleware',#redis中间件
        'django.middleware.common.CommonMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',#redis中间件
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    建立CACHES
    • settings\base.py
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "PASSWORD":"000415",
                "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
                "SOCKET_TIMEOUT": 5,  # r/w timeout in seconds
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    2.K8S安装Redis

    参考链接https://blog.csdn.net/sinat_27970175/article/details/120267970

    步骤1:在K8S配置YAML档案

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      labels:
        app: redis
      name: redis
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: redis
      serviceName: redis-svc
      template:
        metadata:
          labels:
            app: redis
        spec:
          containers:
            - command:
                - redis-server
                - '--requirepass'
                - 'redis@654321'		# 初始密码	
              image: 'redis:5.0.5-alpine'
              imagePullPolicy: Always
              name: redis
              ports:
                - containerPort: 6379
                  protocol: TCP
              resources:
                requests:
                  cpu: 200m
                  memory: 1Gi
              volumeMounts:
                - mountPath: /data
                  name: volume-image-data
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          volumes:
            - hostPath:
                #path: C:/Users/Season/Desktop/K8S-redis/data   # 宿主机挂载路径
                path: /media
                type: ''
              name: volume-image-data
      updateStrategy:
        type: RollingUpdate
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-svc
    spec:
      externalTrafficPolicy: Local
      ports:
        - name: redis-service
          nodePort: 32222
          port: 6379
          protocol: TCP
          targetPort: 6379
      selector:
        app: redis
      sessionAffinity: None
      type: NodePort
    
    
    • 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
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    部署成功后,pod显示绿色正常。
    在这里插入图片描述

    步骤2:在pods中测试redis正常启动

    输入redis-cli启动redis
    在这里插入图片描述

    步骤3:打开K8S服务器的防火墙

    在这里插入图片描述

    步骤4:将django和redis连接(TBD)

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.locale.LocaleMiddleware',### 多语言中间件
        'django.middleware.cache.UpdateCacheMiddleware',#redis中间件
        'django.middleware.common.CommonMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',#redis中间件
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    
    # K8S redis
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://106.52.14.84:32222/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "PASSWORD":"redis@654321",
                "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
                "SOCKET_TIMEOUT": 5,  # r/w timeout in seconds
            }
        }
    }
    
    • 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

    在这里插入图片描述

    3.Racher安装Redis

    步骤1:填写workload信息

    在这里插入图片描述
    在这里插入图片描述

    步骤2:在pods中测试redis正常启动 或 查看 redis启动log

    查看 redis启动log
    在这里插入图片描述
    测试redis正常启动
    在这里插入图片描述

    步骤3:将django和redis连接

    启用中间件
    • settings\base.py
    MIDDLEWARE = [
        'interview.performance.performance_logger_middleware',
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.locale.LocaleMiddleware',
        'django.middleware.cache.UpdateCacheMiddleware',#redis中间件
        'django.middleware.common.CommonMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',#redis中间件
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    建立CACHES

    在这里插入图片描述

    • settings\base.py
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://10.41.241.169:32621/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
                "SOCKET_TIMEOUT": 5,  # r/w timeout in seconds
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动django可以看到有Expires: Thu, 18 Aug 2022 02:25:54 GMT
    在这里插入图片描述

    性能对比:

    没有启动redis,要35ms。
    在这里插入图片描述
    启动redis,只要18ms。
    在这里插入图片描述

  • 相关阅读:
    VS2017 IDE 编译时的 X86、x64位 是干什么的
    Centos 7 安装 Docker Enginee
    深入 K8s 网络原理(二)- Service iptables 模式分析
    【学习笔记】ARC147/ARC141/ARC145
    43、vue导出pdf文件,并解决滚动条外内容无法获取的问题
    【EI会议征稿】第三届能源动力与控制工程国际学术会议(EPECE 2024)
    ventory做U盘启动,使用vmware进行测试U盘系统盘是否制作成功
    【uni】 编辑后返回原来页面,数据也改变,还跳到原来的位置
    Docker consul 容器服务自动发现和更新
    [自制操作系统] 第18回 实现用户进程(上)
  • 原文地址:https://blog.csdn.net/m0_46629123/article/details/126377540