Abbiamo alcune configurazioni di SolrCloud & ZooKeeper in esecuzione in AWS EC2 e, per la maggior parte, funzionano senza problemi, ma dopo un recente errore di uno dei nostri nodi ZooKeeper ho iniziato a chiedermi se un metodo con cui i client risolvono il problema ZooKeepers era migliore di altri. I nostri client sono basati su java usando il client java di Solr 4.1.L'approccio migliore per specificare gli host ZooKeeper sui client Solr?
Originariamente stavamo usando le voci hostfile per identificare gli ZooKeepers, ma assicurandomi che le voci in /etc/hosts
fossero aggiornate data la natura di AWS, è diventato molto noioso farlo. Quindi ora stiamo utilizzando il DNS personalizzato tramite Route53 per identificare invece ZooKeepers. Ma stiamo ancora individuando i nodi Zookeeper singolarmente, in modo ad esempio che attualmente specificarlo al momento di lanciare i nostri clienti:
-Dsolr.zookeeperHosts='zk-1.mydomain.com:2181,zk-2.mydomain.com:2181,zk-3.mydomain.com:2181'
I padroni di casa zk-1.mydomain.com
ecc, sono semplicemente CNAME'd al DNS per ogni istanza ZooKeeper EC2. Così ora, se Amazon ci obbliga a riavviare uno ZooKeeper, che provoca l'ottenimento di un nuovo indirizzo IP, il client riceverà il nuovo IP quando il record DNS viene aggiornato.
La mia domanda ha a che fare con la domanda se c'è un approccio ancora migliore da prendere nella gestione di questo. Supponiamo di voler aggiungere altri ZooKeeper al mix, quindi abbiamo avuto un quorum di 5 nodi anziché di 3. (In realtà vorrei farlo.) Avrebbe più senso avere un singolo record DNS robin round che contenga tutto il ZooKeepers in esso e passa quel singolo nome DNS al client?
Ad esempio, impostare il record DNS zookeepers.mydomain.com
come un CNAME che punti a zk-1.mydomain.com
, zk-2.mydomain.com
e zk-mydomain.com
e poi semplicemente pas questo per i miei clienti:
-Dsolr.zookeeperHosts='zookeepers.mydomain.com:2181'
In questo modo, quando ho aggiungere nuovi guardiani dello zoo al cluster Potrei semplicemente aggiungere un altro record CNAME a zookeepers.mydomain.com
e non preoccuparti di aggiornare le configurazioni su tutti i client.
Il client Solr è abbastanza intelligente da utilizzare un record DNS con più record al suo interno? In particolare, se uno ZooKeeper risulta inattivo e il client tenta di connettersi ad esso, il client ne saprà abbastanza da richiedere di nuovo il DNS per ottenere l'IP del prossimo ZooKeeper e tentare di comunicare con esso?
Avete già provato?Ha funzionato ? – Stephane