Назад | Перейти на главную страницу

Как настроить кластер с репликацией SESSION в Coldfusion 10?

Я не могу настроить кластер с репликацией сеанса. Я успешно настроил кластер с липкой сессией. Когда я погуглил, я нашел много ссылок, объясняющих ту же проблему, например

  1. http://cfmlblog.adamcameron.me/2012/11/problem-with-session-replication-with.html

  2. https://forums.adobe.com/thread/1238702?start=0&tstart=0

Включает ли автоматическая отмена выбора прикрепленного сеанса репликацию сеанса?

Но у меня нет решения. Кто-нибудь решил эту проблему?

Перекрестная публикация здесь от мой ответ на StackOverflow на этот же вопрос

Из статьи, которую вы добавили Адам Кэмерон, он упоминает о проблемах с репликацией сеанса - Проблема с репликацией сеанса при кластеризации CF10. Ключевым моментом здесь является то, что ошибка была введена для ColdFusion 10 (3361502) не имея возможности включить репликацию сеанса в Администраторе. С тех пор эта ошибка исправлена. Вы используете обновленную версию?

В одном из комментариев к этой ошибке кто-то из Adobe упоминает об этом:

Когда липкий сеанс включен, сеанс не реплицируется, а когда липкий сеанс отключен, сеанс автоматически реплицируется.

Казалось бы, в ColdFusion 10, когда вы отключаете закрепленные сеансы, это должно включать репликацию сеансов. Вы также должны включить переменные сеанса J2EE.

Есть также некоторые ограничения при репликации сеанса. Из документы здесь:

Репликация сеанса также гарантирует, что переменные области сеанса реплицируются по кластеру. Однако репликация сеанса не поддерживает репликацию массивов в CFC области сеанса или переменных..

После короткой беседы я отослал ОП к этой статье - Работа с Tomcat как с встроенным сервером приложений в котором более подробно рассказывается о работе с кластерами в ColdFusion 10. Особый интерес представляет раздел, посвященный управлению кластером, под названием «Добавление удаленного экземпляра в кластер». Там упоминаются некоторые дополнения, которые необходимо внести в файл server.xml на каждом удаленном экземпляре.

Чтобы добавить удаленный экземпляр в кластер, выполните следующие действия:

  1. Зарегистрируйте удаленный экземпляр на локальном компьютере.
  2. Создайте кластер на локальной машине.
  3. Откройте файл cf_install_dir \ instance-name \ runtime \ conf \ server.xml удаленного экземпляра.
  4. Добавьте следующий блок между записями </host> и </engine> :
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
    <Manager notifyListenersOnReplication="true" expireSessionsOnShutdown="false" className="org.apache.catalina.ha.session.DeltaManager">
</Manager>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership port="45565" dropTime="3000" address="228.0.0.4" className="org.apache.catalina.tribes.membership.McastService" frequency="500">
    </Membership>
    <Receiver port="4003" autoBind="100" address="auto" selectorTimeout="5000" maxThreads="6" className="org.apache.catalina.tribes.transport.nio.NioReceiver">
    </Receiver>
    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
        <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender">
        </Transport>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector">
    </Interceptor>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor">
    </Interceptor>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="">
</Valve>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve">
</Valve>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">
</ClusterListener>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener”>
</ClusterListener>
</Cluster>

5. В приведенной выше записи обновите порт членства с помощью порта многоадресной рассылки кластера.

6. С помощью администратора локального хоста ColdFusion добавьте в кластер локальный и удаленный экземпляры.

Примечание: Если вы включаете прикрепленные сеансы, маршрут JVM удаленного и локального экземпляров не должен совпадать.

7. Перезапустите все экземпляры.