Постановка проблемы
У нас есть VPN-соединение размером 200 МБ с нашим клиентом Azure.
Мы тестируем восстановление сайта Azure (ASR), переключаясь с локальной виртуальной машины на Azure.На виртуальной машине размещается веб-приложение для мониторинга (RFCode), которое подключается к базе данных SQL на внутреннем сервере.
Отказ виртуальной машины от ASR работает хорошо.Однако, если виртуальная машина находится в Azure, она не может подключиться обратно к локальному SQL-серверу.
Ошибка:
Could not get JDBC Connection; nested exception is java.sql.SQLException: invalid database address:
Среда
- Наш предварительный SQL-сервер - это SQL 2014 Enterprise на WFC.TCP / IP включен со статическим портом 1433.
- Виртуальная машина работает под управлением Windows Server 2012 R2.
Устранение неполадок
Мы можем успешно пропинговать SQL по имени с виртуальной машины в Azure после отработки отказа.Таким образом, это не проблема DNS (конечно, пинг по IP тоже работает).Мы также можем выполнить ping обратно с хоста SQL на виртуальную машину в Azure.
Мы можем выполнить RDP на виртуальную машину, когда она будет в Azure.
Брандмауэр Windows отключен как на виртуальной машине, так и на серверах SQL.Насколько нам известно, в самом VPN-соединении нет никакой фильтрации.
Строка соединения, используемая приложением на премьере, не изменяется при сбое.Он работает предварительно, и ожидается, что он будет работать в Azure.
В строке подключения указано правильное имя базы данных (оно не изменилось с прежнего)
В SQL нет сообщений об ошибкахпотому что не похоже, что приложение достигает сервера.
Разумеется, я ожидаю, что виртуальная машина в Azure подключится к серверной части SQL после сбоя ASR так же, как и при предварительной установке.
Есть какие-нибудь предложения, что еще проверить?
Вот полная ошибка приложения
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: invalid database address: jdbc:jtds:sqlserver://MyFQDNinstancename:1433/RFCodeDB;sendStringParametersAsUnicode=false;cacheMetaData=true
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:428) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at com.rfcode.config.SystemPropertiesService.testDatabaseConnection(SystemPropertiesService.java:450) [com.rfcode.config-4.0.jar:na]
at com.rfcode.config.SystemPropertiesService.testDatabaseConnection(SystemPropertiesService.java:433) [com.rfcode.config-4.0.jar:na]
at com.rfcode.t1.service.impl.DatabaseMonitor$Monitor.testDBConnection(DatabaseMonitor.java:111) [classes/:na]
at com.rfcode.t1.service.impl.DatabaseMonitor$Monitor.run(DatabaseMonitor.java:104) [classes/:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]
Caused by: java.sql.SQLException: invalid database address: jdbc:jtds:sqlserver://MyFQDNInstancename:1433/RFCodeDB;sendStringParametersAsUnicode=false;cacheMetaData=true
at org.sqlite.JDBC.createConnection(JDBC.java:110) ~[sqlite-jdbc-3.7.15-M1.jar:na]
at org.sqlite.JDBC.connect(JDBC.java:87) ~[sqlite-jdbc-3.7.15-M1.jar:na]
at java.sql.DriverManager.getConnection(DriverManager.java:664) ~[na:1.8.0_31]
at java.sql.DriverManager.getConnection(DriverManager.java:208) ~[na:1.8.0_31]
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:153) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
... 7 common frames omitted````