Для кластера серверов apache geode 3 с use-cluster-configuration true реплицированные регионы отображаются только на 1 сервере, а не на всех 3

#geode

#geode

Вопрос:

С помощью gfsh я запускаю локатор: start locator --name=LocatorUAT --properties-file=..configgemfire.properties затем я запускаю сервер с файлом свойств и cache.xml

start server --name=ServerUAT --properties-file=..configgemfire.properties

где свойства имеют use-cluster-configuration=true и cache.xml имеет несколько таких регионов:

<region name="deal" refid="REPLICATE_PERSISTENT"><region-attributes disk-store-name="deal" disk-synchronous="false"></region-attributes></region>

Затем я запускаю еще 2 сервера, подобных этому:

start server --name=ServerUAT2 --server-port=40405

start server --name=ServerUAT3 --server-port=40406

Все они запускаются нормально, и я могу перечислить участников и клиентов, подключающихся к кластеру. Затем я захожу в pulse и вижу топологию, в которой я вижу 3 сервера, а также вижу, что есть 47 регионов:

Импульс

Хотя, когда я перехожу на server2 или server3, импульс показывает regions = 0, и я ожидал увидеть реплицированные регионы на server2 и server3. Почему это?

Это server1 с 47 регионами

server1

Это server2 с 0 регионами

server2

Это server3 с 0 регионами

server3

Ответ №1:

Перво-наперво: смешивание службы конфигурации кластера с отдельными cache.xml файлами поддерживается не полностью, и может возникнуть несколько проблем, я бы рекомендовал использовать единый подход при настройке вашего кластера (служба конфигурации кластера, предпочтительно в виде отдельных cache.xml файлов, вероятно, устареет в будущем).

Тем не менее, второй и третий серверы, похоже, не запускаются с использованием cache.xml файла, и регионы создаются локально на каждом сервере только тогда, когда они определены в cache.xml файле (или всякий раз, когда они передаются им локатором через службу конфигурации кластера); вероятно, это то, что здесь происходит.

Как устранить проблему (при условии, что приведенное выше предположение верно): не используйте отдельные cache.xml файлы для любого участника, а вместо этого создайте все регионы с помощью gfsh команд, чтобы они сохранялись в службе конфигурации кластера и «отправлялись» на серверы всякий раз, когда они появляются.

Комментарии:

1. Спасибо, ну, есть только 1 cache.xml файл, который запускается 1-м сервером для запуска, а затем я ожидал, что 2-й и 3-й серверы примут ту же конфигурацию из службы конфигурации кластера… вы знаете, чего нам не хватает? Кроме того, если бы нам пришлось создавать все регионы из gfsh , то это могло бы занять довольно много времени — не несколько секунд!

2. cache.xml Файлы, используемые серверами во время запуска, не передаются и не хранятся в службе конфигурации кластера, на самом деле все наоборот: все, что вы определили в службе конфигурации кластера (управляемой gfsh командами), передается на серверы при их запуске. Вы можете получить более подробную информацию о том, как это работает здесь . Короче говоря, у вас есть два варианта:

3. 1. Полностью настройте свой кластер с помощью службы конфигурации кластера с помощью gfsh команд. Это может занять некоторое время, но это делается только один раз, поскольку изменения сохраняются в локаторах и подбираются серверами при каждом перезапуске.

4. 2. Реплицируйте cache.xml файл и сделайте его доступным для каждого отдельного сервера во время запуска, чтобы все они создавали одинаковые регионы с одинаковыми конфигурациями (возможно, вам захочется использовать относительные пути для disk-stores , чтобы избежать проблем).

5. Я, безусловно, сторонник варианта 1, это более простой и рекомендуемый механизм для настройки и управления вашим кластером. Наличие отдельных cache.xml файлов на сервере может быть громоздким и подверженным ошибкам (каждый раз, когда вы что-то меняете, это также должно быть изменено на других серверах), но это для вас.