Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Không có phản hồi sau khi kết nối từ celery sang redis qua ssl

Tôi đã có thể khắc phục sự cố bằng cách thực hiện các thay đổi đối với cấu hình của các vùng chứa.
Cụ thể, tôi đã thực hiện các thay đổi sau:

Trong vùng chứa redis:

  • đã làm theo hướng dẫn này để thêm stunnel và tạo chứng chỉ cho redis container
  • đã sử dụng mã git này để định cấu hình đường hầm trong vùng chứa Docker

Trong vùng chứa cần tây:
- đã nâng cấp nhật ký lên gỡ lỗi

Lần đầu tiên tôi đã kiểm tra rằng tôi có thể kết nối từ máy chủ cục bộ của mình với vùng chứa redis docker qua ssl. Điều này được mô tả ở đây

Sau đó, tôi đã kiểm tra rằng tôi có thể kết nối từ thùng chứa cần tây với thùng chứa redis qua ssl. Tệp docker-compile là:

version: '3'

services:
  web:
    restart: always
    build:
      context: ./web
      dockerfile: Dockerfile
    expose:
      - "8000"
    volumes:
      - /home/webServer/web:/home/flask/app/web
      - /home/webServer/redis/ssl:/etc/certs
      - data2:/home/flask/app/web/project/img
    command: /usr/local/bin/gunicorn -w 2 -t 3600 -b :8000 project:app
    depends_on:
      - postgres
    stdin_open: true
    tty: true

  nginx:
    restart: always
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /home/webServer/web:/home/flask/app/web
      - data2:/home/flask/app/web/project/img
    depends_on:
      - web

  postgres:
    restart: always
    build:
      context: ./postgresql
      dockerfile: Dockerfile
    volumes:
      - data1:/var/lib/postgresql/data
    expose:
      - "5432"

  redis:
    build:
      context: ./redis
      dockerfile: Dockerfile
    restart: always

    command: sh -c "stunnel /stunnel-redis-server.conf && /usr/local/bin/redis-server /etc/redis/redis.conf"
    expose:
      - '6380'
    ports:
     - "6380:6380"
    volumes:
      - /home/webServer/redis/ssl:/etc/certs
      - /home/webServer/redis/conf:/etc/redis

  celery:
    build:
      context: ./web
    command: watchmedo auto-restart --directory=./ --pattern=*.py --recursive -- celery worker -A project.celery  --loglevel=debug
    volumes:
      - /home/webServer/web:/home/flask/app/web
      - /home/webServer/redis/ssl:/etc/certs
      - data2:/home/flask/app/web/project/img
    depends_on:
      - redis

volumes:
  data1:
  data2:

Các tệp liên quan khác là:

tệp trên vùng chứa redis docker: (cài đặt trong các tệp này được mô tả ở đây)

  • redis container Dockerfile
  • redis / conf / redis.conf
  • redis / stunnel-redis-server.conf

cài đặt trên hộp chứa cần tây:

cat web/project/flask_celery.py
...

key_file = '/etc/certs/localhost.key'
cert_file = '/etc/certs/private.pem'
ca_file = '/etc/certs/myCA.pem'
...    

celery = Celery(app.import_name,
                backend=app.config['CELERY_RESULT_BACKEND'],
                broker=app.config['CELERY_BROKER_URL'],
                broker_use_ssl = {
                    'ssl_keyfile': key_file,
                    'ssl_certfile': cert_file,
                    'ssl_ca_certs': ca_file,
                    'ssl_cert_reqs': ssl.CERT_REQUIRED
                },
                redis_backend_use_ssl = {
                    'ssl_keyfile': key_file,
                    'ssl_certfile': cert_file,
                    'ssl_ca_certs': ca_file,
                    'ssl_cert_reqs': ssl.CERT_REQUIRED
                })

------------------

cat project/__init__.py
...
app.config['CELERY_BROKER_URL'] = 'rediss://webserver_redis_1:6380/0'
app.config['CELERY_RESULT_BACKEND'] = 'rediss://webserver_redis_1:6380/0'



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để chạy redis trên một máy chủ trên các cổng khác nhau?

  2. Redis:Cách phân tích cú pháp kết quả danh sách

  3. Sử dụng đơn giản EM ::Synchrony # sync gây ra 'sợi gốc' FiberError - lỗi của tôi?

  4. Cài đặt phpredis MAC OSX

  5. Làm lại danh sách các khóa lồng nhau