Forums / Extensions / eZ Find / eZ find & cluster

eZ find & cluster

Author Message

Andreas Kaiser

Sunday 20 April 2008 3:58:08 pm

Just curious if anyone has eZ find extension installed in a eZ Publish cluster environment...

I'm sure it should work, because eZ find overview states "High scalability and performance ensures that the eZ Find search engine can support enterprise-level sites.", but comments are welcome...

Thanks...

eZ Partner in Madrid (Spain)
Web: http://www.atela.net/

Ivo Lukac

Monday 28 April 2008 6:57:13 am

I'm also interested with this issue.

Can someone please confirm it is working?

http://www.linkedin.com/in/ivolukac
http://www.netgen.hr/eng/blog
http://twitter.com/ilukac

A Fowler

Saturday 19 June 2010 7:48:55 pm

I am using it (eZ Find) in a clustered environment. It works. However, I'm not sure it's working completely properly. First of all, I know the indexing is happening on all nodes in the cluster independently. Sometimes a search, when re-run against the cluster, returns different results because the indexes are not all up to date on all the cluster nodes.

Thus, I also have questions. How should it ideally be set up? Should eZ Find run on its own dedicated node instead of multiple copies (and multiple indexes) on multiple nodes? If so, how do I redirect all search requests to that dedicated node? Is that something I can do within eZ Publish, or do I have to do it using special rules in my load balancer?

Gaetano Giunta

Sunday 20 June 2010 12:51:46 pm

The recommended way is to treat Solr as if it was a database:

- a single instance used, even in eZP cluster configs

- on a dedicated server

It makes everything much simpler (except for high-availability, but since the index can be rebuilt at any time, for sites without a huge number of contents and where a small search downtime is ok, rebuilding the index in case of a crash of the solr server might be acceptable. For real ha, you'll have to dig into solr master/slave modes)

About how to set it up: simply put in the solr.ini file the hostname of the server where solr is running. No loadbalancing needed.

Principal Consultant International Business
Member of the Community Project Board

Paul Borgermans

Sunday 20 June 2010 2:16:31 pm

Should the single instance as Gaetano mentioned is not enough (which I really doubt), Solr has a native master-slave cluster mode which is easy to set up.

See http://wiki.apache.org/solr/SolrReplication

In case of replication, to direct eZ Find/Solr backend writes, you can use a reverse proxy for eZ Find up to 2.2. The next version (2.3) may have simple directives to disriminate the master (for writes) and slaves (read) too ... however, work is underway in Solr to make even that unnecessary.

For those who attend the barcamp at the eZ Conference in Berlin next week and want to know more, shout about it and I'll give you some insight

Cheers

Paul

eZ Publish, eZ Find, Solr expert consulting and training
http://twitter.com/paulborgermans

A Fowler

Monday 21 June 2010 11:18:04 am

Thank you both, Giunta and Borgermans! This helps clarify things for me.

One question remains. Which node is responsible for updating the index? Is the dedicated node expected to have enough of the eZ Publish infrastructure and scripts in place so that it can run the updates in a cron job by itself? Or should one of the web server nodes in the cluster run the update scripts (and will they connect to the dedicated solr instance on the remote host)?

Gaetano Giunta

Tuesday 22 June 2010 1:30:20 am

The indexing of data is always done in a "push" way, ie. one of the servers with ezp installed will make http requests to solr on port 8993.

Which server does the requests depends a little bit:

  • realtime idnexing: the server where the content is being edited will do the push
  • delayedindexing: one server where eZP is fully installed and the indexation cronjob is run

It does not need to be an eZP node dedicated to push the content to the indexing server, but in common scenarios it is one node dedicated to

  • serving the editing interface
  • running eZP cronjobs

The advantage of keeping the editing interface separated is that even under peak traffic conditions editors will still have a snappy interface. Also while heavy cronjobs are running, visitors of the site will not be impacted.

Principal Consultant International Business
Member of the Community Project Board

eZ debug

Timing: Jan 18 2025 02:12:24
Script start
Timing: Jan 18 2025 02:12:24
Module start 'content'
Timing: Jan 18 2025 02:12:24
Module end 'content'
Timing: Jan 18 2025 02:12:24
Script end

Main resources:

Total runtime0.2391 sec
Peak memory usage4,096.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0078 589.1563180.7969
Module start 'content' 0.00780.0127 769.9531103.0234
Module end 'content' 0.02050.2186 872.9766531.6719
Script end 0.2390  1,404.6484 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00401.6780200.0002
Check MTime0.00140.5684200.0001
Mysql Total
Database connection0.00070.288610.0007
Mysqli_queries0.174472.92771410.0012
Looping result0.00160.68091390.0000
Template Total0.218191.210.2181
Template load0.00090.388110.0009
Template processing0.217290.828810.2172
Override
Cache load0.00070.281010.0007
Sytem overhead
Fetch class attribute can translate value0.00060.270610.0006
XML
Image XML parsing0.00030.137610.0003
General
dbfile0.00642.6578200.0003
String conversion0.00000.002830.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs