您正在查看过时的Debezium版本的文档。开云体育官方注册网址
如果您想查看本页最新的稳定版本,请前往在这里

在OpenShift开云体育官方注册网址上部署Debezium

这个过程是设置Debezium连接器在红帽的开云体育官方注册网址OpenShift集装箱平台。这些指令已经在OpenShift的两个最新版本中进行了测试。这些说明应该也适用于任何其他Kubernetes发行kubectl命令。

要更快地开始,请尝试开云体育官方注册网址Debezium在线学习场景.它为您启动了一个OpenShift集群,这让您可以在几分钟内开始在浏览器中使用Debezium。开云体育官方注册网址

开云体育官方注册网址Debezium部署

要在OpenShift上设置Apache Kafka和Kafka Connect,请使用Strimzi项目。这些映像提供了“Kafka即服务”,通过提供企业级配置文件和映像,将Kafka带到Kubernetes和OpenShift,以及Kubernetes上运行Kafka的操作符。

先决条件
  • OpenShift命令行界面(oc)已安装。

  • 安装Docker。

过程
  1. 在OpenShift项目中,输入以下命令来安装Kafka代理和Kafka Connect的操作符和模板:

    export STRIMZI_VERSION=0.18.0 git clone -b $STRIMZI_VERSION https://github.com/strimzi/strimzi-kafka-operator cd strimzi-kafka-operator #切换到admin用户创建安全对象作为安装的一部分:oc login -u system:admin oc create -f install/cluster-operator && oc create -f examples/templates/cluster-operator

    要了解更多关于在Kubernetes和OpenShift上使用Strimzi设置Apache Kafka的信息,请参见卡夫卡的Strimzi部署

  2. 部署Kafka代理集群:

    #部署临时单实例Kafka代理:oc process strimzi-ephemeral -p CLUSTER_NAME=broker -p ZOOKEEPER_NODE_COUNT=1 -p KAFKA_NODE_COUNT=1 -p KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -p KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 | oc apply -f -
  3. 创建一个安装了Debezium连接器的Kafka Connect映像:开云体育官方注册网址

    1. 下载并提取要运行的每个Debezium连接器的存档。开云体育官方注册网址例如:

      curl https://repo1.maven.org/maven2/io/开云体育官方注册网址debezium/debezium-connector-mysql/1.3.1.Final/debezium-connector-mysql-1.3.1.Final-plugin.tar.gz tar xvz '
    2. 创建一个Dockerfile使用Strimzi Kafka图像作为基础图像。下面的示例创建一个插件/ debe开云体育官方注册网址zium目录,其中将包含您想要运行的每个Debezium连接器的目录。开云体育官方注册网址要运行多个Debezium连接器,请插入开云体育官方注册网址复制连接每个连接器。

      FROM strimzi/kafka:0.18.0-kafka-2.5.0 USER root:root RUN mkdir -p /opt/kafka/plugins/开云体育官方注册网址debezium COPY ./debezium-connect -mysql/ /opt/kafka/plugins/debezium/ USER 1001 . txt

      在Kafka Connect开始运行连接器之前,Kafka Connect会加载任何第三方插件/ opt /卡夫卡/插件目录中。

    3. 从Dockerf开云体育官方注册网址ile中构建Debezium映像,并将其推送到您的首选容器注册表中,例如,quay.io或Docker Hub,执行以下命令。取代开云体育官方注册网址debezium-communityDocker Hub组织的名称。

      export DOCKER_ORG=开云体育官方注册网址debezium-community docker build。-t ${DOCKER_ORG}/connect-开云体育官方注册网址debezium docker push ${DOCKER_ORG}/connect-debezium

      一段时间后,所有部件都应该启动并运行:

      get pods NAME READY STATUS重启AGE broker-entity-operator-5fb7bc8b9b-r86nz 3/3运行1 4m broker-kafka-0 2/2运行0 4m broker-zookeeper-0 2/2运行0 5m debezu -connect-3-4sdjr 1/1运行0 1开云体育官方注册网址m strimzi-cluster-operator-d77476b8f-rblqf 1/1运行0 5m

      或者,转到OpenShift Web控制台的“Pods”视图(https://myhost:8443/console/project/myproject/browse/pods)以确认所有吊舱已启动并运行:

      openshift豆荚

验证部署结果

实例验证部署是否正确开云体育官方注册网址Debezium教程在OpenShift环境中。

  1. 启动一个MySQL服务器实例,其中包含一些示例表:

    #为数据库配置证书oc set env dc/ MySQL MYSQL_ROOT_PASSWORD=debezium MYS开云体育官方注册网址QL_USER=mysqluser MYSQL_PASSWORD=mysqlpw开云体育电动老虎机

    一个带有MySQL服务器的新pod应该启动并运行:

    oc get pods NAME READY STATUS重启年龄…mysql-1-4503l 1/1 Running 0 2s mysql-1-deploy 1/1 Running 0 4s…
  2. 注册Debezium My开云体育官方注册网址SQL连接器来运行部署的MySQL实例:

    c . exec -i -c kafka broker-kafka-0——curl - x POST \ - h "Accept:application/json" \ - h "Content-Type:application/json" \ http:开云体育官方注册网址//debezium-connect-api:8083/connectors -d @- <<'EOF' {"name": "inventory-connector", "config": {"connector.class": "io. debezim .connector.mysql. mysqlconnector ", "任务。Max ": "1", 开云体育电动老虎机"数据库。主机名:“mysql”,“数据库”。开云体育电动老虎机端口:“3306”,“数据库”。开云体育电动老虎机用户":"deb开云体育官方注册网址ez开云体育电动老虎机ium", "数据库"。密码":"dbz", "databas开云体育电动老虎机e.server. "Id ": "184054", 开云体育电动老虎机"database.server.name": "dbserver1", "database.include "。List ": "inventory", 开云体育电动老虎机"database.history.kafka.bootstrap. "Servers ": "broker-kafka-bootstrap:9092", 开云体育电动老虎机"database.history.kafka. kafka. "主题:“模式变化。库存"}}EOF

    Kafka Connect的日志文件应该包含关于初始快照执行的消息:

    Oc logs $(Oc get pods -o name -l strimzi.io/name=开云体育官方注册网址debezium-connect)
  3. 的更改事件客户表中对应的Kafka主题:

    Oc exec -it broker-kafka-0——/opt/kafka/bin/kafka-console-consumer.sh \——bootstrap-server localhost:9092 \——from-beginning \——属性打印。Key =true \——topic dbserver1.inventory.customers

    你应该会看到如下输出(为了便于阅读,进行了格式化):

    #信息1 {"id": 1001} #信息1值{"前":null, "后":{"id": 1001, "first_name": "Sally", "last_name": "Thomas", "email": "sally.thomas@acme.com"}, "source": {"version": "1.3.1. "最后”、“连接器”:“mysql”、“名称”:“dbserver1”、“server_id”:0,”ts_sec”:0,”gtid”:空,“文件”:“mysql-bin。000003", "pos": 154, "row": 0, "snapshot": true, "thread": null, "db": "inventory", "table": "customers"}, "op": "c", "ts_ms": 1509530901446} #消息2关键字{"id": 1002} #消息2值{"before": null, "after": {"id": 1002, "first_name": "George", "last_name": "Bailey", "email": "gbailey@foobar.com"}, "source": {"version": "1.3.1. "最后”、“连接器”:“mysql”、“名称”:“dbserver1”、“server_id”:0,”ts_sec”:0,”gtid”:空,“文件”:“mysql-bin。000003”、“pos”:154年,“行”:0,“快照”:真的,“线程”:空,“分贝”:“库存”、“表”:“客户”},“人事处”:“c”、“ts_ms”:1509530901446}…
  4. 中修改部分记录客户数据库表:开云体育电动老虎机

    . oc exec -it $(oc get pods -o custom-columns=NAME:.metadata.name——no-headers -l app=mysql) \——bash -c 'mysql -u $MYSQL_USER -p$MYSQL_PASSWORD inventory' #例如执行UPDATE customers SET email="sally.thomas@example.com" WHERE ID = 1001;

    您现在应该在前面启动的消费者中看到其他更改消息。

如果您有任何关于在Kubernetes或OpenShift上运行Debezium的问题或请求,请在我们的开云体育官方注册网址用户组或者在Debeziu开云体育官方注册网址m开发人员的聊天