2015-12-14 3 views
1

Мои данные дали мне адрес http://127.0.0.1:8091/pools для подключения к нашему серверу Couchbase, и мне сообщили, что суффикс pools является адресом для всех узлов в кластере.Настройка Spring Couchbase на адрес хоста кластера

Я использую Spring 4.2.0.RELEASE с пружинным данных couchbase 2.0.0.M1 против Couchbase 2.5.1 Enterprise Edition (строительство-1083)

Теперь, если я добавляю выше URL, как находится в списке getBootstrapHosts:

@Override 
    protected List<String> getBootstrapHosts() { 
    return Collections.singletonList(couchbaseProperties.getHost()); 
    } 

я получаю исключение формат чисел на величину 8091/pools.

Но при использовании URL-адреса http://127.0.0.1:8091 я получаю исключение неверного пароля.

Я считаю, что первый url должен использоваться, но не так, как я пошел.

Возможно, метод, который я должен переопределить в классе AbstractCouchbaseConfiguration, но, глядя на исходный код, действительно не просвещал меня.

Это класс конфигурации Couchbase.

@Configuration 
@EnableCouchbaseRepositories(basePackages = { "com.thalasoft.data.couchbase.repository" }) 
@ComponentScan(nameGenerator = PackageBeanNameGenerator.class, basePackages = { "com.thalasoft.data.couchbase.config" }) 
@EnableTransactionManagement 
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration { 

    private static Logger logger = LoggerFactory.getLogger(CouchbaseConfiguration.class); 

    @Autowired 
    private CouchbaseProperties couchbaseProperties; 

    @Override 
    protected List<String> getBootstrapHosts() { 
    return Collections.singletonList(couchbaseProperties.getHost()); 
    } 

    @Override 
    protected String getBucketName() { 
    return couchbaseProperties.getBucketName(); 
    } 

    @Override 
    protected String getBucketPassword() { 
    return couchbaseProperties.getBucketPassword(); 
    } 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { 
    return new PropertySourcesPlaceholderConfigurer(); 
    } 

    @Bean 
    public LocalValidatorFactoryBean validator() { 
    return new LocalValidatorFactoryBean(); 
    } 

    @Bean 
    public ValidatingCouchbaseEventListener validationEventListener() { 
    return new ValidatingCouchbaseEventListener(validator()); 
    } 

} 
+0

пулы суффикса является конечной точкой, где узел будет обслуживать «кластер карту», ​​которая может быть использована для извлечения списка всех узлов в кластере. однако 2.x SDK удастся получить эту карту кластера самостоятельно. ему нужно только ip или hostname одного или, желательно, двух узлов для начального контакта (bootstrap) –

ответ

1

Тот факт, что администраторы баз данных дал вам 127.0.0.1 как адреса для подключения к показаться странным, но на самом деле может быть действительным, если один узел кластера работает с совместного размещения кода клиента ...

Этот синтаксис на основе url был использован для генерации SDK 1.4.x, а конфигурация действительно немного отличается от 2.x (отражающая эволюцию SDK Couchbase между 1.4.x и 2.x): вам просто нужно указать имя хоста или ip каждого узла для загрузки из списка.

Вам следует попробовать всего "127.0.0.1". Возможно также, что вам нужно указать имя ведра и/или пароль (обратитесь к администратору). По умолчанию используется Spring Data Couchbase для каждого из них: "default" и "" (пустой пароль), но вы можете переопределить методы getBucketName() и getBucketPassword() от AbsctractCouchbaseConfiguration, чтобы изменить это.

PS: документация Spring Data Couchbase доступна here

+0

Я читал, что Couchbase настоятельно рекомендовал иметь базу данных, размещенную вместе с кодом. – Stephane

+0

Что делать, если у меня не может быть списка узлов? На самом деле у нас слишком много узлов. Почему мы не можем хранить кластерную адресацию? – Stephane

+0

Список, о котором я говорю, - это только список начальной загрузки ... это оптимальная практика для отказоустойчивости для загрузки по крайней мере из двух узлов: если один из них выключен, процесс начальной загрузки может все же обнаружить весь кластер из второго узел. После этого SDK имеет глобальное видение кластера, вам не нужно фактически предоставлять исчерпывающий список узлов. –

Смежные вопросы