Приложение хост-машины не может выполнить запрос к базе данных Cassandra гостевой машины

Приложение хост-машины не может выполнить запрос к базе данных Cassandra гостевой машины

Среда

Хозяин:

  • Ubuntu 18.04 Desktop 64 бит
  • Visual Studio Code + CassandraCSharpDriver

Гость:

  • Ubuntu 18.04 Сервер 64 бит
  • Установлены Java и Cassandra
  • Один узел
  • Репликация 1
  • Последовательность 1
  • Служба Cassandra запущена
  • созданы пространство ключей и таблица
  • Данные введены в таблицу
  • Сеть Virtual Box для гостевой ОС настроена на мост.

Проблема

При запуске кода на хост-машине возникает ошибка:

user@desktop:~/Desktop/vsc$ dotnet run
Unhandled exception. Cassandra.NoHostAvailableException: All hosts tried for query failed (tried 192.168.0.15:9042: SocketException 'No route to host')
   at Cassandra.Connections.ControlConnection.Connect(Boolean isInitializing)
   at Cassandra.Connections.ControlConnection.InitAsync()
   at Cassandra.Tasks.TaskHelper.WaitToCompleteAsync(Task task, Int32 timeout)
   at Cassandra.Cluster.Cassandra.SessionManagement.IInternalCluster.OnInitializeAsync()
   at Cassandra.ClusterLifecycleManager.InitializeAsync()
   at Cassandra.Cluster.Cassandra.SessionManagement.IInternalCluster.ConnectAsync[TSession](ISessionFactory`1 sessionFactory, String keyspace)
   at Cassandra.Cluster.ConnectAsync(String keyspace)
   at Cassandra.Tasks.TaskHelper.WaitToComplete(Task task, Int32 timeout)
   at Cassandra.Tasks.TaskHelper.WaitToComplete[T](Task`1 task, Int32 timeout)
   at Cassandra.Cluster.Connect(String keyspace)
   at HelloWorld.Program.Main(String[] args) in /home/user/Desktop/vsc/Program.cs:line 15
user@desktop:~/Desktop/vsc$ 

Что я пробовал

На машине с Windows, где машина запускает код и Cassandra на одном хосте без использования виртуальной машины, код и база данных работают нормально, поскольку код может вставлять данные и выбирать их из базы данных без каких-либо проблем.

Я могу пинговать в обоих направлениях без проблем, а traceroute возвращает следующее:

Базовый:

user@desktop:~$ traceroute 192.168.0.15
traceroute to 192.168.0.15 (192.168.0.15), 30 hops max, 60 byte packets
 1  node1 (192.168.0.15)  0.737 ms  0.694 ms  0.697 ms
user@desktop:~$ 

С портом:

user@desktop:~$ traceroute 192.168.0.15 -p 9042
traceroute to 192.168.0.15 (192.168.0.15), 30 hops max, 60 byte packets
 1  node1 (192.168.0.15)  0.386 ms  0.388 ms  0.422 ms
user@desktop:~$ 

Открыл номер порта в гостевой виртуальной машинеiptables -I INPUT 1 -p tcp --dport 9042 -j ACCEPT

Теперь появляется следующее сообщение об ошибке:

user@desktop:~/Desktop/vsc$ dotnet run
Unhandled exception. Cassandra.NoHostAvailableException: All hosts tried for query failed (tried 192.168.0.15:9042: SocketException 'Connection refused')
   at Cassandra.Connections.ControlConnection.Connect(Boolean isInitializing)
   at Cassandra.Connections.ControlConnection.InitAsync()
   at Cassandra.Tasks.TaskHelper.WaitToCompleteAsync(Task task, Int32 timeout)
   at Cassandra.Cluster.Cassandra.SessionManagement.IInternalCluster.OnInitializeAsync()
   at Cassandra.ClusterLifecycleManager.InitializeAsync()
   at Cassandra.Cluster.Cassandra.SessionManagement.IInternalCluster.ConnectAsync[TSession](ISessionFactory`1 sessionFactory, String keyspace)
   at Cassandra.Cluster.ConnectAsync(String keyspace)
   at Cassandra.Tasks.TaskHelper.WaitToComplete(Task task, Int32 timeout)
   at Cassandra.Tasks.TaskHelper.WaitToComplete[T](Task`1 task, Int32 timeout)
   at Cassandra.Cluster.Connect(String keyspace)
   at HelloWorld.Program.Main(String[] args) in /home/user/Desktop/vsc/Program.cs:line 15
user@desktop:~/Desktop/vsc$ 

Вопрос

Как мне настроить гостевую виртуальную машину, чтобы я мог получить код на хост-машине для подключения к базе данных Cassandra? Я предполагаю, что проблема возникает из-за того, что виртуальная машина не настроена должным образом?

Я подключаюсь к серверу, используя 192.168.0.15, но внутренне сервер, похоже, использует 127.0.0.1. Нужно ли мне перенаправлять входящие соединения на 127.0.0.1? Как мне проверить, так ли это, и как перенаправить порт, если это необходимо? Когда я тестировал код в Windows, где код и сервер были одной и той же машиной, я подключался к локальному порту 127.0.0.1.

Связанный контент