Thanks Tom,

It looks like there is an PHP extension on Git. seems like a phpized C lib
to create a Zend module to work with ZK. No mention of solr but I'm
guessing I can poll the ensemble for pretty much anything ZK.

Thanks for the direction! A ZK aware app is the way I need to go. I'll give
it go in the next few days.

Best,

GW





On 15 December 2016 at 09:52, Tom Evans <tevans...@googlemail.com> wrote:

> On Thu, Dec 15, 2016 at 12:37 PM, GW <thegeofo...@gmail.com> wrote:
> > While my client is all PHP it does not use a solr client. I wanted to
> stay
> > with he latest Solt Cloud and the PHP clients all seemed to have some
> kind
> > of issue being unaware of newer Solr Cloud versions. The client makes
> pure
> > REST calls with Curl. It is stateful through local storage. There is no
> > persistent connection. There are no cookies and PHP work is not sticky so
> > it is designed for round robin on both the internal network.
> >
> > I'm thinking we have a different idea of persistent. To me something like
> > MySQL can be persistent, ie a fifo queue for requests. The stack can be
> > always on/connected on something like a heap storage.
> >
> > I never thought about the impact of a solr node crashing with PHP on top.
> > Many thanks!
> >
> > Was thinking of running a conga line (Ricci & Luci projects) and shutting
> > down and replacing failed nodes. Never done this with Solr. I don't see
> any
> > reasons why it would not work.
> >
> > ** When you say an array of connections per host. It would still require
> an
> > internal DNS because hosts files don't round robin. perhaps this is
> handled
> > in the Python client??
>
>
> The best Solr clients will take the URIs of the Zookeeper servers;
> they do not make queries via Zookeeper, but will read the current
> cluster status from zookeeper in order to determine which solr node to
> actually connect to, taking in to account what nodes are alive, and
> the state of particular shards.
>
> SolrJ (Java) will do this, as will pysolr (python), I'm not aware of a
> PHP client that is ZK aware.
>
> If you don't have a ZK aware client, there are several options:
>
> 1) Make your favourite client ZK aware, like in [1]
> 2) Use round robin DNS to distribute requests amongst the cluster.
> 3) Use a hardware or software load balancer in front of the cluster.
> 4) Use shared state to store the names of active nodes*
>
> All apart from 1) have significant downsides:
>
> 2) Has no concept of a node being down. Down nodes should not cause
> query failures, the requests should go elsewhere in the cluster.
> Requires updating DNS to add or remove nodes.
> 3) Can detect "down" nodes. Has no idea about the state of the
> cluster/shards (usually).
> 4) Basically duplicates what ZooKeeper does, but less effectively -
> doesn't know cluster state, down nodes, nodes that are up but with
> unhealthy replicas...
>
> >
> > You have given me some good clarification. I think lol. I know I can spin
> > out WWW servers based on load. I'm not sure how shit will fly spinning up
> > additional solr nodes. I'm not sure what happens if you spin up an empty
> > solr node and what will happen with replication, shards and load cost of
> > spinning an instance. I'm facing some experimentation me thinks. This
> will
> > be a manual process at first, for sure....
> >
> > I guess I could put the solr connect requests in my clients into a try
> > loop, looking for successful connections by name before any action.
>
> In SolrCloud mode, you can spin up/shut down nodes as you like.
> Depending on how you have configured your collections, new replicas
> may be automatically created on the new node, or the node will simply
> become part of the cluster but empty, ready for you to assign new
> replicas to it using the Collections API.
>
> You can also use what are called "snitches" to define rules for how
> you want replicas/shards allocated amongst the nodes, eg to avoid
> placing all the replicas for a shard in the same rack.
>
> Cheers
>
> Tom
>
> [1] https://github.com/django-haystack/pysolr/commit/
> 366f14d75d2de33884334ff7d00f6b19e04e8bbf
>

Reply via email to