Programação paralela e distribuída - cluster dúvida

Olá galera, estou com um trabalho finaleira de semestre na faculdade e preciso entregar um servidor que funcione parecido como o megaupload funcionava. eu crio um cluster de servers e preciso eleger um líder e o processo de eleição se repete de tempo em tempo. o cliente conecta no cluster e conversa com o lider. Cliente escolhe um arquivo e envia, o arquivo é dividido em partes entre todos os participantes do cluster de servidores e quando o cliente requisitar o arquivo é montado de novo e entregue ao cliente. Estou em dúvida de como montar esse processo… Uso sockets e programo tudo no braço, uso Ignite,. EJB + JBoss… Alguma idéia de por que caminho eu vou para resolver? Só quero algumas dicas, o resto eu pesquiso pra chegar na solução final. Obrigado!