【Docker/K8S/Racher】Docker/K8S/Racher/Racher-ingress安装Redis-20221016更新

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

步骤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
  • 解释如下
–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 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置)

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

步骤4:进入容器

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

在这里插入图片描述

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

步骤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',
]
建立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
        }
    }
}

在这里插入图片描述

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

部署成功后,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
        }
    }
}

在这里插入图片描述

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',
]
建立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
        }
    }
}

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

性能对比:

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

4.Racher安装Redis和ingress,用域名访问

步骤1:填写workload信息

在这里插入图片描述

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

设定账号和密码
在这里插入图片描述

步骤3: Service Discovery建立svc

在这里插入图片描述

步骤4: Load Balancing建立ingress

在这里插入图片描述

步骤5:将django和redis连接

启用中间件
  • settings\base.py
"""
# 环境变量(含默认值)
REDIS_LOCATION = os.environ.get('REDIS_LOCATION',"redis://default:redis654321@redis3-ingress.k8sqas-wzs.k8s.wistron.com.cn:80")

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_LOCATION,
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD":"redis654321",
            "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
            "SOCKET_TIMEOUT": 5,  # r/w timeout in seconds
        }
    }
}

CELERY_BROKER_URL = REDIS_LOCATION
CELERY_RESULT_BACKEND = REDIS_LOCATION
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERYD_MAX_TASKS_PER_CHILD = 10
CELERYD_LOG_FILE = os.path.join(BASE_DIR, "logs", "celery_work.log")
CELERYBEAT_LOG_FILE = os.path.join(BASE_DIR, "logs", "celery_beat.log")


# CELERY_BEAT忽略时区错误
DJANGO_CELERY_BEAT_TZ_AWARE = False

在这里插入图片描述

5.Racher环境变量来读取redis地址-20221016更新

步骤1:racher启动redis并设置密码

在这里插入图片描述
记得在Command里面加上redis-server --requirepass redis654321
在这里插入图片描述

步骤2:django应用设置环境变量

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值