lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Floyd Wu <floyd...@gmail.com>
Subject Re: Switch to new leader transparently?
Date Thu, 11 Jul 2013 04:21:32 GMT
Thanks Aloke, I will do some research.
2013/7/10 下午9:45 於 "Aloke Ghoshal" <alghoshal@gmail.com> 寫道:

> Hi Floyd,
>
> We use SolrNet to connect to Solr from a C# application. Since SolrNet is
> not aware about SolrCloud or ZK, we use a Http load balancer in front of
> the Solr nodes & query via the load balancer url. You could use something
> like HAProxy or Apache reverse proxy for load balancing.
>
> On the other hand in order to write a ZK aware client in C# you could start
> here: https://github.com/ewhauser/zookeeper/tree/trunk/src/dotnet
>
> Regards,
> Aloke
>
>
> On Wed, Jul 10, 2013 at 4:11 PM, Furkan KAMACI <furkankamaci@gmail.com
> >wrote:
>
> > By the this is not related to your question but this may help you for
> > connecting Solr via C#: http://solrsharp.codeplex.com/
> >
> > 2013/7/10 Floyd Wu <floyd.wu@gmail.com>
> >
> > > Hi Furkan
> > > I'm using C#,  SolrJ won't help on this, but its impl is a good
> reference
> > > for me. Thanks for your help.
> > >
> > > by the way, how to fetch/get cluster state from zk directly in plain
> http
> > > or tcp socket?
> > > In my SolrCloud cluster, I'm using standalone zk to coordinate.
> > >
> > > Floyd
> > >
> > >
> > >
> > >
> > > 2013/7/10 Furkan KAMACI <furkankamaci@gmail.com>
> > >
> > > > You can define a CloudSolrServer as like that:
> > > >
> > > > *private static CloudSolrServer solrServer;*
> > > >
> > > > and then define the addres of your zookeeper host:
> > > >
> > > > *private static String zkHost = "localhost:9983";*
> > > >
> > > > initialize your variable:
> > > >
> > > > *solrServer = new CloudSolrServer(zkHost);*
> > > >
> > > > You can get leader list as like:
> > > >
> > > > *ClusterState clusterState =
> > > > cloudSolrServer.getZkStateReader().getClusterState();
> > > > List<Replica> leaderList = new ArrayList<>();
> > > >   for (Slice slice : clusterState.getSlices(collectionName)) {
> > > >   leaderList.add(slice.getLeader()); /
> > > > }*
> > > >
> > > >
> > > > For querying you can try that:
> > > > *
> > > > *
> > > > *SolrQuery solrQuery = new SolrQuery();*
> > > > *//fill your **solrQuery variable here**
> > > > *
> > > > *QueryRequest queryRequest = new QueryRequest(solrQuery,
> > > > SolrRequest.METHOD.POST);
> > > > queryRequest.process(**solrServer**);*
> > > >
> > > > CloudSolrServer uses LBHttpSolrServer by default. It's definiton is
> > like
> > > > that: *LBHttpSolrServer or "Load Balanced HttpSolrServer" is just a
> > > wrapper
> > > > to CommonsHttpSolrServer. This is useful when you have multiple
> > > SolrServers
> > > > and query requests need to be Load Balanced among them. It offers
> > > automatic
> > > > failover when a server goes down and it detects when the server comes
> > > back
> > > > up.*
> > > > *
> > > > *
> > > > *
> > > > *
> > > >
> > > > 2013/7/10 Anshum Gupta <anshum@anshumgupta.net>
> > > >
> > > > > You don't really need to direct any query specifically to a leader.
> > It
> > > > will
> > > > > automatically be routed to the right leader.
> > > > > You may put a load balancer on top to just fix the problem with
> > > querying
> > > > a
> > > > > node that has gone away.
> > > > >
> > > > > Also, ZK aware SolrJ Java client that load-balances across all
> nodes
> > in
> > > > > cluster.
> > > > >
> > > > >
> > > > > On Wed, Jul 10, 2013 at 2:52 PM, Floyd Wu <floyd.wu@gmail.com>
> > wrote:
> > > > >
> > > > > > Hi there,
> > > > > >
> > > > > > I've built a SolrCloud cluster from example, but I have some
> > > question.
> > > > > > When I send query to one leader (say
> > > > > > http://xxx.xxx.xxx.xxx:8983/solr/collection1) and no problem
> > > > everything
> > > > > > will be fine.
> > > > > >
> > > > > > When I shutdown that leader, the other replica(
> > > > > > http://xxx.xxx.xxx.xxx:9983/solr/collection1) in the some shard
> > will
> > > > be
> > > > > > new
> > > > > > leader. The problem is:
> > > > > >
> > > > > > The application doesn't know new leader's location and still
send
> > > > request
> > > > > > to http://xxx.xxx.xxx.xxx:8983/solr/collection1 and of course
no
> > > > > response.
> > > > > >
> > > > > > How can I know new leader in my application?
> > > > > > Are there any mechanism that application can send request to
one
> > > fixed
> > > > > > endpoint no matter who is leader?
> > > > > >
> > > > > > For example, application just send to
> > > > > > http://xxx.xxx.xxx.xxx:8983/solr/collection1
> > > > > > even the real leader run on
> > > > http://xxx.xxx.xxx.xxx:9983/solr/collection1
> > > > > >
> > > > > > Please help on this or give me some key infomation to google
it.
> > > > > >
> > > > > > Many thanks.
> > > > > >
> > > > > > Floyd
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > Anshum Gupta
> > > > > http://www.anshumgupta.net
> > > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message