web-dev-qa-db-ja.com

kubernetesデプロイメント内でColdFusionのセッションデータストアとして使用するためにRedisポッドをどのように構成しますか?

私たちはColdFusionサーバーをAKSに移行することを検討しており、物事がどのように機能するかを確認するためにテスト展開をいじっています。 CFサーバーのスケーリングを処理するために、CFクラスターのセッション管理を処理するようにRedisポッドをセットアップしたいと思います。

https://helpx.Adobe.com/coldfusion/using/docker-images-coldfusion.html および https://github.com/kubernetes)で見つけた手順に従います。 /examples/blob/master/staging/storage/redis/redis-master.yaml 、ストレートコピー/貼り付けでエラーが発生したため変更しました。次のyamlファイルを作成しました。

    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: cfsample
    spec:
      replicas: 1
      strategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 1
      minReadySeconds: 5 
      template:
        metadata:
          labels:
            app: cfsample
        spec:
          containers:
          - name: cfsample
            image: cftest.azurecr.io/coldfusion:v1
            ports:
            - containerPort: 8500
            volumeMounts:
              - name: code
                mountPath: /app
            resources:
              requests:
                cpu: 250m
              limits:
                cpu: 500m
            env:
            - name: acceptEULA
              value: "YES"
            - name: password
              value: "testCF321"
            - name: configureExternalSessions
              value: "true"
            - name: externalSessionsHost
              value: "cfredis"
            - name: externalSessionsPort
              value: "6379"

          - name: cfredis
            image: redis:latest
            ports:
            - containerPort: 6379
            volumeMounts:
              - name: redis
                mountPath: /redis-master-data

          imagePullSecrets:
            - name: registrycreds
          volumes:
          - name: code
            azureFile:
              secretName: Azure-secret
              shareName: code
              readOnly: false
          - name: redis
            azureFile:
              secretName: Azure-secret
              shareName: redis
              readOnly: false
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: cfsample
    spec:
      type: LoadBalancer
      ports:
      - port: 80
        targetPort: 8500
      selector:
        app: cfsample

このサーバーのブラウザーにあるテストページ(任意のテストページ)にアクセスすると、それは機能し、セッション変数を設定してセッションスコープをダンプします。ただし、ヒットしようとした次のページでエラーが報告されます。

    Message coldfusion.server.ServiceFactory$ServiceNotAvailableException: The Runtime service is not available.

    Description The server encountered an unexpected condition that prevented it from fulfilling the request.

    Exception

    javax.servlet.ServletException: coldfusion.server.ServiceFactory$ServiceNotAvailableException: The Runtime service is not available.
        coldfusion.bootstrap.ClassloaderHelper.initServletClass(ClassloaderHelper.Java:129)
        coldfusion.bootstrap.BootstrapServlet.init(BootstrapServlet.Java:111)
        org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:491)
        org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:92)
        org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:357)
        org.Apache.coyote.http11.Http11Processor.service(Http11Processor.Java:408)
        org.Apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.Java:66)
        org.Apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.Java:764)
        org.Apache.Tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.Java:1388)
        org.Apache.Tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.Java:49)
        Java.base/Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1128)
        Java.base/Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:628)
        org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
        Java.base/Java.lang.Thread.run(Thread.Java:834)

通常、この時点でCFログを確認しますが、ポッド内でCFログにアクセスする方法がわかりません。いずれにせよ、ColdFusionがクラッシュしているように見えます。おそらく、Redisをセッションデータストアとして設定する際のyamlの設定が正しくないためです(試行錯誤でこのyamlをまとめたため)。残念ながら、Googleで「kubernetesyaml redis coldfusion」を検索すると、驚異的な7つの結果が返されます。

Yaml内でRedisコンテナーを定義し、ColdFusionにセッションデータストアとして使用させる正しい方法は何ですか?

3
Nicholas

ランタイムサービスが利用できないということは、通常、サーバーホームの無効なXML構成ファイル、またはサービスの作成中に致命的なエラーが発生したことを意味します。潜在的な詳細については、サーバーが最初に起動したときの完全なサーブレット出力/エラーログとapplication.logを確認してください。質問のRedis部分については何も知りませんが、CFエラーのトラブルシューティングに役立つ場合があります。

1
Brad Wood