#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 регионами
Это server2 с 0 регионами
Это server3 с 0 регионами
Ответ №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
файлов на сервере может быть громоздким и подверженным ошибкам (каждый раз, когда вы что-то меняете, это также должно быть изменено на других серверах), но это для вас.