У меня есть Aerospike, работающий через Vagrant в виртуальном ящике, который работает в системе Windows.
У меня есть приложение Java Spring Boot, работающее в Windows, которое может общаться с базой данных aerospike на хосте 127.0.0.1 и порте 3000.
Вот мой файл свойств -
prepaid.aerospike.namespace=hello
prepaid.aerospike.hosts.count=1
prepaid.aerospike.hostname1=127.0.0.1
prepaid.aerospike.port1=3000
prepaid.aerospike.sequence.namespace=hello1
А вот и файл AerospikeConfiguration -
package com.citruspay.common.prepaid.aerospike;
import java.util.Properties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.aerospike.client.AerospikeException;
import com.aerospike.client.Host;
import com.spikeify.Spikeify;
@Configuration
public class AerospikeConfiguration {
@Value("${prepaid.aerospike.namespace}")
private String namespace;
@Value("${prepaid.aerospike.hosts.count}")
private String aerospikeHostCount;
@Value("${prepaid.um.aerospike.cache.namespace}")
private String aerospikeUMCacheNamespace;
@Value("${prepaid.aerospike.history.namespace}")
private String aerospikeHistoryNamespace;
@Autowired
@Qualifier("configProperties")
Properties config;
public Host[] aerospikeHosts() {
Integer hostsCount = Integer.parseInt(aerospikeHostCount);
Host[] hosts = new Host[hostsCount];
for (int i = 1; i <= hostsCount; i++) {
hosts[i - 1] = new Host(
config.getProperty("prepaid.aerospike.hostname" + i),
Integer.parseInt(
config.getProperty("prepaid.aerospike.port" + i)));
}
return hosts;
}
@Bean
public Spikeify spikeify() throws AerospikeException {
SpikeifyService.globalConfig(namespace, aerospikeHosts());
return SpikeifyService.sfy();
}
public String getNamespace() {
return namespace;
}
}
Проблема
У меня есть питон для Windows, работающий в моей системе.
Я пробовал запустить точно такой же пример, приведенный в https://www.aerospike.com/docs/client/python
При запуске файла python через python aerospike.py я получаю -
failed to connect to the cluster with [('127.0.0.1', 3000)]
Обновлять
Сетевой раздел из aerospike.conf-
network {
service {
address any
port 3000
}
heartbeat {
mode mesh
port 3002 # Heartbeat port for this node.
# address 127.0.0.1
# List one or more other nodes, one ip-address & port per line:
# # mesh-seed-address-port 10.10.10.11 3002
# # mesh-seed-address-port 10.10.10.12 3002
# # mesh-seed-address-port 10.10.10.13 3002
# # mesh-seed-address-port 10.10.10.14 3002
#
# interval 250
# timeout 10
#
}
fabric {
port 3001
}
info {
port 3003
}
}
Как мне это проверить? Команда tasklist показывает бродягу - Image Name PID Session Name Session# Mem Usage -> vagrant.exe 12912 Console 1 2,552 K
Настроен ли у вас адрес доступа в файле aerospike.conf? Можете ли вы запустить службу asinfo -v в своем бродячем поле и посмотреть, какие IP-адреса объявляются клиентам.
@lvolmar Нет, у меня не настроен адрес доступа в aerospike.conf. Вывод asinfo -v service показывает две комбинации IP-портов. Это не мой IP-адрес локального хоста. Я не уверен, где они настроены.
Вам нужно найти файл aerospike.conf и показать его здесь. Он будет в вашем бродячем экземпляре, обычно в /etc/aerospike/aerospike.conf. Что-то в вашей конфигурации ограничивает доступ со стороны клиента. См .: aerospike.com/docs/operations/configure/network/general/…
@RonenBotzer добавил контент aerospike.conf. См. Обновление вопроса.
Это усечено? Отсутствует раздел network. Для справки см. aerospike.com/docs/operations/configure/index.html.
@RonenBotzer, извини. Добавлен сетевой раздел.
Выглядит нормально. Можете ли вы показать фрагмент Python, который не подключается? Я предполагаю, что и приложение Java, и скрипт Python работают на этом компьютере, а не подключаются откуда-то еще, где вам нужно будет указать IP-адрес eth0 или eth1 этой виртуальной машины.
Теперь я получаю другую ошибку, когда пытаюсь запустить новый скрипт Python - import aerospike ModuleNotFoundError: No module named 'aerospike'. Попытка установить aerospike для python не работает. Похоже, не поддерживается - обсуждение.aerospike.com/t/….
Хорошо, в следующий раз упомяните, что такое клиентская ОС (Windows), и мы можем пропустить цепочку комментариев.




Клиент Python в настоящее время не поддерживается в Windows. Вы можете попробовать собрать его с помощью Клиент C для Windows. Пожалуйста, разветвите Aerospike / Aerospike-клиент-питон и внесите изменения, если вы заставите его работать.
К какому IP-адресу / порту привязан Aerospike? Вы используете какой-нибудь брандмауэр?