Debezium Как правильно зарегистрировать коннектор SqlServer в Kafka Connect - соединение отказано - PullRequest
1 голос
/ 08 апреля 2020

Вопрос:

Как правильно зарегистрировать соединитель SqlServer в Kafka Connect для подключения к автономному SQL Экземпляру сервера? Примечание. Я НЕ запускаю SQL Сервер в Docker.

Ошибка:

Ошибка: вызвана: com.microsoft.sqlserver.jdb c .SQLServerException: сбой соединения TCP / IP с хостом 127.0.0.1, порт 1433. Ошибка: «Соединение отклонено (соединение отклонено). Проверьте свойства соединения. Убедитесь, что экземпляр SQL Сервер работает на хосте и принимает соединения TCP / IP на порту. Убедитесь, что соединения TCP с этим портом не установлены. заблокирован брандмауэром. ".

Устранение неполадок:

  1. Включен CD C в таблице dbo.Posts (см. ниже)
  2. Проверено, что TCP / IP включен, и все адреса включены и активированы на порту 1433 в SQL Диспетчер конфигурации сервера SQL Конфигурация сети сервера
  3. Отключено Windows Брандмауэр
  4. Включено SQL Обозреватель серверов в SQL Диспетчер конфигурации сервера
  5. Проверено, что я могу lnet войти в следующих случаях: (127.0.0.1 1433; localhost 1433; lt-ls231 1433)

Контекст:

Я пытаюсь настроить Debezium на Windows 10, используя Docker. Я могу без проблем выполнить следующие команды в Powershell:

docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:1.1 

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:1.1 

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e  OFFSET_STORAGE_TOPIC=my_connect_offsets -e  STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka debezium/connect:1.1

Я получаю сообщение об ошибке (см. Выше), когда я пытаюсь зарегистрировать SQL соединение сервера с Kafka-Connect connect, я запускаю следующая команда:

Invoke-RestMethod -Method Post -Uri 'http://localhost:8083/connectors/' -Headers @{'Accept' = 'application/json'; 'Content-Type' = 'application/json'} -Body '{"name": "mssqlserver-localhost-testDb-connector",  "config": {"connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", "database.hostname": "127.0.0.1", "database.port": "1433", "database.user": "svc_kafka", "database.password": "password", "database.dbname": "Posts", "database.server.name": "LT-LS231", "table.whitelist": "dbo.Posts", "database.history.kafka.bootstrap.servers": "kafka:9092", "database.history.kafka.topic": "dbhistory.LT-LS231" }}'

Форматируется JSON следующим образом:

Invoke-RestMethod -Method Post -Uri 'http://localhost:8083/connectors/' -Headers @{'Accept' = 'application/json'; 'Content-Type' = 'application/json'} -Body '

{  
    "name": "mssqlserver-localhost-testDb-connector",  
    "config": {
        "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", 
        "database.hostname": "127.0.0.1", 
        "database.port": "1433", 
        "database.user": "svc_kafka", 
        "database.password": "password", 
        "database.dbname": "Posts", 
        "database.server.name": "LT-LS231", 
        "table.whitelist": "dbo.Posts", 
        "database.history.kafka.bootstrap.servers": "kafka:9092", 
        "database.history.kafka.topic": "dbhistory.LT-LS231" 
  }
}'

Это смоделировано после JSON, предоставленного на сайте Дебезиума: https://debezium.io/documentation/reference/1.1/connectors/sqlserver.html#sqlserver -deploying-а-разъем

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Решением для непроизводственной среды является использование host.docker.internal. Это можно найти на сайте Docker здесь: https://docs.docker.com/docker-for-windows/networking/. Смотрите раздел под названием I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST. Мне нужно будет посмотреть на Docker0, который рекомендуется в ответе Джири.

Правильный JSON следующий:

{  
    "name": "LT-LS231-mssqlserver-connector",  
    "config": {
        "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", 
        "database.server.name": "staging", 
        "database.hostname": "host.docker.internal", 
        "database.port": "1433", 
        "database.user": "svc_kafka", 
        "database.password": "*********", 
        "database.dbname": "Test", 
        "table.whitelist": "dbo.Posts", 
        "database.history.kafka.bootstrap.servers": "kafka:9092", 
        "database.history.kafka.topic": "dbhistory.Posts" 
  }
}
1 голос
/ 08 апреля 2020

Проблема в ссылке на localhost. Если вы запускаете контейнер Connect in Docker, то localhost является локальным узлом контейнера, а не машины. Попробуйте выставить сервер SQL на интерфейсе docker0 или на всех интерфейсах, а затем используйте docker0 IP в запросе на регистрацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...