sql >> データベース >  >> NoSQL >> Redis

sslを介してセロリからredisに接続した後、応答がありません

    コンテナの構成を変更することで問題を解決できました。
    具体的には、次の変更を行いました。

    redisコンテナ内:

    • このチュートリアルに従って、stunnelを追加し、redisコンテナの証明書を作成しました
    • このgitコードを使用して、Dockerコンテナ内でstunnelを構成しました

    セロリコンテナの場合:
    -ログレベルをデバッグに上げました

    最初に、ローカルホストからsslを介してredisdockerコンテナーに接続できることをテストしました。これはここで説明されています

    次に、sslを介してセロリコンテナからredisコンテナに接続できることをテストしました。docker-composeファイルは次のとおりです。

    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:
    

    その他の関連ファイルは次のとおりです。

    redis dockerコンテナ上のファイル: (これらのファイルの設定はここで説明されています)

    • redisコンテナDockerfile
    • redis / conf / redis.conf
    • redis / stunnel-redis-server.conf

    セロリDockerコンテナの設定:

    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. mongodb/mongooseの部分インデックス

    2. MongoDBとの春のセッション

    3. pymongoの高速またはバルクアップサート

    4. MongoDBの集計フレームワークで移動平均?