Соединение JMX между модулями в Openshift - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь запустить jmx на ocp.Я установил все необходимые параметры в моем контейнере.При создании контейнера я устанавливаю переменные среды:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Djava.rmi.server.hostname=127.0.0.1

Когда я пытаюсь подключиться к своей службе (используя IP-адрес службы или имя хоста) - я получаю отказ в соединении:

IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: service.namespace-18569.svc

После нескольких попыток я попытался проверить конечную точку JMX, используя curl -I.

После проверки в терминале pod (curl -I 127.0.0.1:JMXPORT/Endpoint) я получаю ответ от сервера JMX.

К сожалению, когда я пытался использовать curl -I с IP-адресом службы / именем хоста (в том же модуле)терминал) - я получаю соединение отказано.

Возможно ли установить соединение JMX между различными модулями, используя службу IP?

РЕДАКТИРОВАТЬ:

Моя конфигурация развертывания:

apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  creationTimestamp: '2019-02-06T17:11:36Z'
  generation: 1
  labels:
    app: napeOfApp
  name: napeOfApp
  namespace: nameOfMynamespace
  resourceVersion: '202879946'
  selfLink: /apis/apps.openshift.io/v1/namespaces/nameOfMynamespace/deploymentconfigs/napeOfApp
  uid: 42606226-2a32-11e9-9b9a-02e3ccdc5484
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    deploymentconfig: napeOfApp
  strategy:
    activeDeadlineSeconds: 21600
    resources: {}
    rollingParams:
      intervalSeconds: 1
      maxSurge: 25%
      maxUnavailable: 25%
      timeoutSeconds: 600
      updatePeriodSeconds: 1
    type: Rolling
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: napeOfApp
        deploymentconfig: napeOfApp
      name: napeOfApp
    spec:
      containers:
        - image: 'my image repo'
          imagePullPolicy: IfNotPresent
          name: napeOfApp
          ports:
            - containerPort: 8080
              protocol: TCP
            - containerPort: 3084  //(JMX PORT) 
              protocol: TCP
            - containerPort: 3104
              protocol: TCP
            - containerPort: 7005
              protocol: TCP
            - containerPort: 8443
              protocol: TCP
          resources:
            limits:
              cpu: '1'
              memory: 3584Mi
            requests:
              cpu: 500m
              memory: 2560Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
  test: false
  triggers:
    - type: ConfigChange
status:
  availableReplicas: 1
  conditions:
    - lastTransitionTime: '2019-02-06T17:11:41Z'
      lastUpdateTime: '2019-02-06T17:11:41Z'
      message: Deployment config has minimum availability.
      status: 'True'
      type: Available
    - lastTransitionTime: '2019-02-06T17:11:42Z'
      lastUpdateTime: '2019-02-06T17:11:42Z'
      message: replication controller "napeOfApp" successfully rolled out
      reason: NewReplicationControllerAvailable
      status: 'True'
      type: Progressing
  details:
    causes:
      - type: ConfigChange
    message: config change
  latestVersion: 1
  observedGeneration: 1
  readyReplicas: 1
  replicas: 1
  unavailableReplicas: 0
  updatedReplicas: 1

3084Порт JMX.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Я предполагаю, что если вы видите ошибку отказано , значит, сервисный порт неправильный.Причина в том, что «соединение отказано» само по себе означает, что порт вообще не открыт.

Итак, вы, вероятно, просто пытаетесь получить доступ к службе с неправильного IP-адреса.

Это происходит, например, когда вы пытаетесь получить доступ к порту службы на IP-адресе узла.Помните, что сервисный порт внутренний для кластера, тогда как порт хоста будет выставлять этот порт на (обычно 5-значный) порт.

Чтобы выяснить, выполните oc get svc -o wide и посмотритена порту узла, к которому привязан ваш сервис.

0 голосов
/ 06 февраля 2019

Возможно ли установить соединение JMX между различными модулями, используя службу IP?

Да, оно должно работать без проблем, используя IP-адрес службы или имя службы в соответствии с тем, как DNS работает в K8s .

Похоже, что проблема для вас заключается в следующем:

-Djava.rmi.server.hostname=127.0.0.1

Это в основном привязка только к 127.0.0.1 и разрешение только локальных подключений.Возможно, вы захотите попробовать 0.0.0.0, чтобы разрешить внешние подключения.

Надеюсь, это поможет!

...