IBM Maximo Manage 용 Apache Kafka 설치
Apache Kafka 는 외부 인터페이스에서 송수신되는 메시지에 대한 버퍼를 제공합니다. IBM® Maximo® Manage 소프트웨어가 외부 시스템과 인터페이스하지 않는 경우에는 Apache Kafka 가 필요하지 않습니다.
Red Hat® AMQ Streams 운영자는 엄격한 운영자를 기반으로 하며 온프레미스 설치를 위해 Kafka 를 설치하는 데 선호되는 방법입니다. 또한 클라우드 제공자가 관리하는 Kafka 서비스를 원하지 않는 경우 클라우드 기반 Maximo Application Suite 설치에서 Kafka 를 설치하는 데 사용할 수도 있습니다. 자세한 정보는 Red Hat AMQ Streams 연산자 및 Strimzi 연산자를 참조하십시오.
팁: 이 태스크는 Ansible® 역할 Kafka를 사용하여 수행할 수도 있습니다. 자세한 정보는 Ansible 콜렉션이 있는 IBM Maximo Application Suite 설치 및 카프카의 내용을 참조하십시오.
다음에 수행할 사항
Apache Kafka 스위트 매개변수를 구성하십시오. 자세한 내용은 설치하기 Apache Kafka 를 참조하세요.
Red Hat OpenShift Container Platform 웹 콘솔을 사용하여 설치
프로시저
- Red Hat OpenShift® Container Platform의 측면 탐색 메뉴에서 홈 > 프로젝트 를 클릭한 후 프로젝트 작성을 클릭하십시오. kafka이름을 입력하고 작성 을 클릭하여 Kafka의 새 네임스페이스를 프로비저닝하십시오.
- 글로벌 탐색줄에서 YAML 가져오기 아이콘
을 클릭하십시오. 다음 YAML을 입력하십시오.--- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: "kafka" namespace: "kafka" spec: targetNamespaces: - "kafka" --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: amq-streams namespace: "kafka" spec: channel: amq-streams-1.8.x installPlanApproval: Automatic name: amq-streams source: redhat-operators sourceNamespace: openshift-marketplace팁: AWS (BYOL) 버전 8.7의 Maximo Application Suite 의 경우 BAS 네임스페이스에 설치된 AMQ 스트림의 버전과 일치하도록amq-streams-1.8.x를amq-streams-1.7.x로 변경하십시오. - kafka 네임스페이스에서 운영자 그룹 및 등록 자원을 작성하려면 작성 을 클릭하십시오.
- 측면 탐색 메뉴에서 운영자 > 설치된 운영자를 클릭하십시오. AMQ Streams 를 검색하고 운영자 상태가 성공으로 설정되었는지 확인하십시오.
- 글로벌 탐색줄에서 YAML 가져오기 아이콘을 클릭하십시오. 다음 YAML 코드를 입력하십시오.
--- apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: "maskafka" namespace: "kafka" spec: # ------------------------------------------------------- kafka: version: 2.7.0 replicas: 3 resources: requests: memory: 4Gi cpu: "1" limits: memory: 4Gi cpu: "2" jvmOptions: -Xms: 3072m -Xmx: 3072m config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 log.message.format.version: "2.7" log.retention.hours: 24 log.retention.bytes: 1073741824 log.segment.bytes: 268435456 log.cleaner.enable: true log.cleanup.policy: delete auto.create.topics.enable: false storage: type: jbod volumes: - id: 0 type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 100Gi deleteClaim: true authorization: type: simple listeners: - name: tls port: 9094 type: route tls: true authentication: type: scram-sha-512 # ------------------------------------------------------- zookeeper: replicas: 3 resources: requests: memory: 1Gi cpu: "0.5" limits: memory: 1Gi cpu: "1" jvmOptions: -Xms: 768m -Xmx: 768m storage: type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 10Gi deleteClaim: true # ------------------------------------------------------- entityOperator: userOperator: {} topicOperator: {}클러스터에 대해 지원되는 스토리지 클래스를 사용하도록 지정된 스토리지 클래스
ocs-storagecluster-ceph-rbd을 (를) 수정하십시오. - 작성 을 클릭하여 Kafka 클러스터를 작성하십시오.
- 측면 탐색 메뉴에서 워크로드 > StatefulSets 를 클릭하고 kafka 프로젝트로 전환하십시오. 두 개의 statefulset: maskafka-kafka( Kafka 브로커) 및 maskafka-zookeeper( Kafka ZooKeepers) 가 표시됩니다. 각 statefulset을 선택하고 각각에 준비 상태에 있는 세 개의 팟 (Pod) 이 있는지 확인하십시오.
- 글로벌 탐색줄에서 YAML 가져오기 아이콘을 클릭하십시오. 다음 YAML을 입력하십시오.
--- apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: "maskafkauser" labels: strimzi.io/cluster: "maskafka" namespace: "kafka" spec: authentication: type: scram-sha-512 authorization: type: simple acls: - host: '*' operation: All resource: name: '*' patternType: literal type: topic - host: '*' operation: All resource: name: '*' patternType: literal type: group - host: '*' operation: All resource: name: '*' patternType: literal type: cluster - host: '*' operation: All resource: name: '*' patternType: literal type: transactionalId - Kafka에 대한 연결을 인증하기 위해 Maximo Application Suite 에서 사용되는 Kafka 사용자를 작성하려면 작성 을 클릭하십시오.
- 측면 탐색 메뉴에서 워크로드 > 시크릿 을 클릭하고 kafka 프로젝트로 전환하십시오. 사용자 엔티티 운영자가 maskafkauser 시크릿을 작성했는지 확인하십시오.
- 측면 탐색 메뉴에서 네트워킹 > 라우트 를 클릭하고 kafka 프로젝트로 전환하십시오. maskafka-kafka-tls-bootstrap 라우트가 작성되었는지 확인하십시오.
- Kafka 정보를 가져오십시오.
- Kafka 호스트 및 포트를 가져오려면 다음 코드를 입력하십시오.
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].addresses[0]}"샘플 출력{"host":"maskafka-kafka-tls-bootstrap-kafka.apps.cluster1.example-cluster.com","port":443} - Kafka CA 인증서를 가져오십시오.
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].certificates[0]}"샘플 출력-----BEGIN CERTIFICATE----- MIIFLTCCAxWgAwIBAgIUTExUl2XrdIPy6vZAtk9toGh2jbEwDQYJKoZIhvcNAQEN BQAwLTETMBEGA1UECgwKaW8uc3RyaW16aTEWMBQGA1UEAwwNY2x1c3Rlci1jYSB2 MDAeFw0yMjA1MTEyMTAyMzFaFw0yMzA1MTEyMTAyMzFaMC0xEzARBgNVBAoMCmlv LnN0cmltemkxFjAUBgNVBAMMDWNsdXN0ZXItY2EgdjAwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQDh6bYIudhZQ1/rR9IgSb7pzqTvtRiNOvzmnZPdtVtT q7lNLytPqpR6uuCIrhpuR0CPb++Rvjp2QrWgXr5VWBktT1MLk8WzDfX3+qxd5xC8 B00EKneBZkhohxBdb0co8ipxDpQAFTy+SeXhuROd5vwLEuh3OJeZMEUfTcNfUbvo J/IHUIGeDmhK//DumQE79z3vfLc2EcQgenMo0VoBy4ooQ2o4B7Y3plXHuStvtn6h lam30rSA+p3nKskrMDDpNKadHtmCrwI/rZZBFYb7DTdUpi69NeW3TEMRXGG3dMdk YYTdKN0zkB5BTvRx5FC6GX+cz/Uq3SnxlSmWB1DT+2nlnlwzVAgbNdsW4HiDUIdI FBJyQDqWTH9e7aUv3RzlrT4c995YBTfh1Jdvq5mzneMf6lab7iZoW1hGYQLRRC5y v8iTycwHd7EEGf/tjGrJ/s5nWPgGv/DEOg95/UvTRz9dZUWRwHCFANd0LaFW/HdF qkhuiVZOKNXqfr7zxnCw/F+0408+vcR43HKUTwId7vql+F+EgjT69U5pDF4sh6ep SgLTHoCGd/bekq5HHkrylCOty+ZU9EEWp4fQD+wN3RzGxJ080AA3RjkqsXmHbd5e aXlnhDB68mWpoHFuJ6YciNBBXlC/2HhDeR7PiMD9Zj0/7A3UHZj4hHXcSQoCnSW7 mwIDAQABo0UwQzAdBgNVHQ4EFgQU6yQKlZ+FEJyMkjsPxhmHERps1vgwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIB AEfcrS4I2xsbTuULMtHlOGLgv7Mo+aJ8Os+vCE+MvSMVrsSvslVnigzE6aSvi7Ys TTpstmAhIfOcEEqldRa5GcG6Az6NWlbskZXfftojWtjnZevkuRnn/xICdizX+mj4 A3WL/GOVpTAWVUa5+lUh1AzFWhBw5kDvMxHyQhmpegt98ptxNpj5n9cHSWwJpjXl boNil+Y5kA4raWGa6gEOE0lwmLyS5pjOWCTCTD2MvldNakYPMqObVPE4DNia4qal huxOyxdr51KNBc7yVgQ1Fa7ZD+rF1a6aa6GwvwAKYNoxd7VW7fmZBSckpuWer9+R YCVvgE2a4vLnc5zLFwOfhjqaZSiIx0PMEmkHx1ZTriVg0GVZ8beU+I9BxUQsJyJU S4z9UaHexmYu/YRAQXKODw1xhqqR6oW2+CXYrtUvzN6kamFh8jN3AKf4PKA+TmjL maW0M7FVp+0Erne59hBcZhKG0QYx4AkjCwKclRwDBxXcBTcmXduDFeGzLub0napJ Uczo2zURQ7L6qPew9Guh0O1dnGp+kgi8T8kt/DniMvQBWDK3GvFi0A5mVjLQqMHQ HvAPzshx7Si1O45hepGK4fxQMcwAHw6c1V3j10R8RHh7bckld5mJ5Nh/BjZhk/LK N5Klfwoek0QSVAXQfnX1YtJfrHfz5+TYx0NnYTcgX6fE -----END CERTIFICATE-----
- Kafka 사용자 이름 및 비밀번호를 가져오십시오.
oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=- - SASL (Simple Authentication and Security Layer) 메커니즘을 가져오십시오.
oc get Kafka.kafka.strimzi.io maskafka -n kafka -o jsonpath='{.spec.kafka.listeners[0].authentication}' | jq -r .샘플 출력:{ "type": "scram-sha-512" }참고: SASL 메커니즘은 SCRAM-SHA-512입니다.
- Kafka 호스트 및 포트를 가져오려면 다음 코드를 입력하십시오.
Red Hat OpenShift 명령행 인터페이스 (CLI) 를 사용하여 설치
프로시저
- bastion 호스트에서 Kafka를 설치하는 데 사용되는 네임스페이스,
OperatorGroup및Subscription리소스를 포함하는 YAML 파일 kafka-sub.yaml을 작성하십시오.--- apiVersion: v1 kind: Namespace metadata: name: "kafka" --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: "kafka" namespace: "kafka" spec: targetNamespaces: - "kafka" --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: amq-streams namespace: "kafka" spec: channel: amq-streams-1.8.x installPlanApproval: Automatic name: amq-streams source: redhat-operators sourceNamespace: openshift-marketplace팁: AWS (BYOL) 버전 8.7의 Maximo Application Suite 의 경우 BAS 네임스페이스에 설치된 AMQ 스트림의 버전과 일치하도록amq-streams-1.8.x를amq-streams-1.7.x로 변경하십시오. - kafka-sub.yaml 파일을 Red Hat OpenShift Container Platform 클러스터에 적용하십시오.
oc apply -f kafka-sub.yaml - AMQ Streams 운영자가 성공적으로 배치되었는지 확인하십시오.
oc get csv -n kafka -l operators.coreos.com/amq-streams.kafka샘플 출력NAME DISPLAY VERSION REPLACES PHASE amqstreams.v1.8.4 Red Hat Integration-AMQ Streams 1.8.4 amqstreams.v1.8.3 성공
- 배스천 호스트에서 Kafka 클러스터의 구성을 설명하는 Kafka 리소스를 포함하는 YAML 파일 kafka-cluster.yaml을 작성하십시오.
--- apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: "maskafka" namespace: "kafka" spec: # ------------------------------------------------------- kafka: version: 2.7.0 replicas: 3 resources: requests: memory: 4Gi cpu: "1" limits: memory: 4Gi cpu: "2" jvmOptions: -Xms: 3072m -Xmx: 3072m config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 log.message.format.version: "2.7" log.retention.hours: 24 log.retention.bytes: 1073741824 log.segment.bytes: 268435456 log.cleaner.enable: true log.cleanup.policy: delete auto.create.topics.enable: false storage: type: jbod volumes: - id: 0 type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 100Gi deleteClaim: true authorization: type: simple listeners: - name: tls port: 9094 type: route tls: true authentication: type: scram-sha-512 # ------------------------------------------------------- zookeeper: replicas: 3 resources: requests: memory: 1Gi cpu: "0.5" limits: memory: 1Gi cpu: "1" jvmOptions: -Xms: 768m -Xmx: 768m storage: type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 10Gi deleteClaim: true # ------------------------------------------------------- entityOperator: userOperator: {} topicOperator: {}클러스터에 대해 지원되는 스토리지 클래스를 사용하도록 지정된 스토리지 클래스
ocs-storagecluster-ceph-rbd를 수정했는지 확인하십시오. - kafka-cluster.yaml 파일을 Red Hat OpenShift 클러스터에 적용하십시오.
oc apply -f kafka-cluster.yaml - Kafka 클러스터가 성공적으로 배치되었는지 확인하십시오. Kafka CR은 준비 상태입니다.
다음 명령에 지정된 Kafka CR은 kafkas.ibmevents.ibm.com에서 제공하는 Kafka CR과의 모호성을 피하기 위해 해당 API 그룹 이름 kafkas.kafka.strimzi.io 로 완전히 규정됩니다.
oc get kafkas.kafka.strimzi.io -n kafka샘플 출력이름 원하는 Kafka 복제본 원하는 ZK 복제본 준비 경고 maskafka 3 3 참
- 배스천 호스트에서 YAML 파일을 작성하십시오 kafka-user.yaml. 이 파일에는 Kafka에 대한 연결을 인증하기 위해 Maximo Application Suite 에서 사용하는 Kafka 사용자의 구성을 설명하는 KafkaUser 자원이 포함되어 있습니다.
--- apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: "maskafkauser" labels: strimzi.io/cluster: "maskafka" namespace: "kafka" spec: authentication: type: scram-sha-512 authorization: type: simple acls: - host: '*' operation: All resource: name: '*' patternType: literal type: topic - host: '*' operation: All resource: name: '*' patternType: literal type: group - host: '*' operation: All resource: name: '*' patternType: literal type: cluster - host: '*' operation: All resource: name: '*' patternType: literal type: transactionalId - kafka-user.yaml 파일을 Red Hat OpenShift 클러스터에 적용하십시오.
oc apply -f kafka-user.yaml - 사용자 엔티티 운영자가 maskafkauser 시크릿을 작성했는지 확인하십시오.
oc get secret maskafkauser -n kafka샘플 출력이름 유형 데이터 AGE maskafkauser 오파크 2 2m14s
- Kafka 정보를 가져오십시오.
- Kafka 호스트 및 포트를 가져오십시오.
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].addresses[0]}"샘플 출력:{"host":"maskafka-kafka-tls-bootstrap-kafka.apps.cluster1.example-cluster.com","port":443} - Kafka CA 인증서를 가져오십시오.
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].certificates[0]}"샘플 출력:-----BEGIN CERTIFICATE----- MIIFLTCCAxWgAwIBAgIUTExUl2XrdIPy6vZAtk9toGh2jbEwDQYJKoZIhvcNAQEN BQAwLTETMBEGA1UECgwKaW8uc3RyaW16aTEWMBQGA1UEAwwNY2x1c3Rlci1jYSB2 MDAeFw0yMjA1MTEyMTAyMzFaFw0yMzA1MTEyMTAyMzFaMC0xEzARBgNVBAoMCmlv LnN0cmltemkxFjAUBgNVBAMMDWNsdXN0ZXItY2EgdjAwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQDh6bYIudhZQ1/rR9IgSb7pzqTvtRiNOvzmnZPdtVtT q7lNLytPqpR6uuCIrhpuR0CPb++Rvjp2QrWgXr5VWBktT1MLk8WzDfX3+qxd5xC8 B00EKneBZkhohxBdb0co8ipxDpQAFTy+SeXhuROd5vwLEuh3OJeZMEUfTcNfUbvo J/IHUIGeDmhK//DumQE79z3vfLc2EcQgenMo0VoBy4ooQ2o4B7Y3plXHuStvtn6h lam30rSA+p3nKskrMDDpNKadHtmCrwI/rZZBFYb7DTdUpi69NeW3TEMRXGG3dMdk YYTdKN0zkB5BTvRx5FC6GX+cz/Uq3SnxlSmWB1DT+2nlnlwzVAgbNdsW4HiDUIdI FBJyQDqWTH9e7aUv3RzlrT4c995YBTfh1Jdvq5mzneMf6lab7iZoW1hGYQLRRC5y v8iTycwHd7EEGf/tjGrJ/s5nWPgGv/DEOg95/UvTRz9dZUWRwHCFANd0LaFW/HdF qkhuiVZOKNXqfr7zxnCw/F+0408+vcR43HKUTwId7vql+F+EgjT69U5pDF4sh6ep SgLTHoCGd/bekq5HHkrylCOty+ZU9EEWp4fQD+wN3RzGxJ080AA3RjkqsXmHbd5e aXlnhDB68mWpoHFuJ6YciNBBXlC/2HhDeR7PiMD9Zj0/7A3UHZj4hHXcSQoCnSW7 mwIDAQABo0UwQzAdBgNVHQ4EFgQU6yQKlZ+FEJyMkjsPxhmHERps1vgwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIB AEfcrS4I2xsbTuULMtHlOGLgv7Mo+aJ8Os+vCE+MvSMVrsSvslVnigzE6aSvi7Ys TTpstmAhIfOcEEqldRa5GcG6Az6NWlbskZXfftojWtjnZevkuRnn/xICdizX+mj4 A3WL/GOVpTAWVUa5+lUh1AzFWhBw5kDvMxHyQhmpegt98ptxNpj5n9cHSWwJpjXl boNil+Y5kA4raWGa6gEOE0lwmLyS5pjOWCTCTD2MvldNakYPMqObVPE4DNia4qal huxOyxdr51KNBc7yVgQ1Fa7ZD+rF1a6aa6GwvwAKYNoxd7VW7fmZBSckpuWer9+R YCVvgE2a4vLnc5zLFwOfhjqaZSiIx0PMEmkHx1ZTriVg0GVZ8beU+I9BxUQsJyJU S4z9UaHexmYu/YRAQXKODw1xhqqR6oW2+CXYrtUvzN6kamFh8jN3AKf4PKA+TmjL maW0M7FVp+0Erne59hBcZhKG0QYx4AkjCwKclRwDBxXcBTcmXduDFeGzLub0napJ Uczo2zURQ7L6qPew9Guh0O1dnGp+kgi8T8kt/DniMvQBWDK3GvFi0A5mVjLQqMHQ HvAPzshx7Si1O45hepGK4fxQMcwAHw6c1V3j10R8RHh7bckld5mJ5Nh/BjZhk/LK N5Klfwoek0QSVAXQfnX1YtJfrHfz5+TYx0NnYTcgX6fE -----END CERTIFICATE----- - Kafka 사용자 이름 및 비밀번호 가져오기
oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=- - SASL 메커니즘을 가져오십시오.
oc get Kafka.kafka.strimzi.io maskafka -n kafka -o jsonpath='{.spec.kafka.listeners[0].authentication}' | jq -r .샘플 출력:{ "type": "scram-sha-512" }참고: SASL 메커니즘은 SCRAM-SHA-512입니다.
- Kafka 호스트 및 포트를 가져오십시오.