Pesquisar este blog

quinta-feira, 20 de novembro de 2014

Instalação do Apache Zookeeper

Antes de iniciar a instalação veja os requisitos do sistema para a instalação do Apache ZooKeeper.

Servidor Clusterizado

Para ter um serviço confiável do ZooKeeper você deve realizar um deploy em um cluster conhecido como conjunto. Enquanto a maioria dos servidores do conjunto estiver de pé, o serviço estará disponível. Isto acontece pois o ZooKeeper necessita de uma maioria, e por isso é recomendável ter um número impar de servidores. Por exemplo se você tiver 4 máquinas, apenas uma poderá apresentar falha, pois se duas falharem, as outras duas que sobram não representam uma maioria, porém com 5 máquinas, mesmo com 2 falhas as três restantes ainda representam a maioria e com isso o serviço permanece de pé.
Abaixo seguem os passos para se configurar um servidor que será parte de um conjunto. Estes passos deverão ser executados em todas as cópias que fazem parte do seu cluster de conjunto.
  1. Instale o JDK do Java, você pode utilizar um instalador nativo pro seu sistema Operacional, ou fazer o download do JDK aqui.
  2. Configure o Heap Size do Java, isto é muito importante para evitar o swap, o que degrada seriamente a performance do servidor. Para saber qual é o valor correto a ser utilizado no heap do java utilize testes de carga e tenha certeza que você ainda possui uma margem de segurança, ou seja, memória livre, antes de entrar no swap.
  3. Instale o servidor ZooKeeper, que pode ser encontrado aqui
  4. Crie um arquivo de configuração, que pode ter qualquer nome, use o exemplo a seguir como um ponto de começo:
    tickTime=2000
    dataDir=/var/lib/zookeeper/
    clientPort=2181
    initLimit=5
    syncLimit=2
    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
    server.3=zoo3:2888:3888
    Para saber mais detalhes dos parâmetros de configuração você pode consultar a página oficial de ajuda do ZooKeeper , abaixo o básico é explicado:
    Cada máquina de um cluster deverá conhecer todas as outras que fazem parte do conjunto. Esta configuração é realizada através das várias linhas no arquivo de configuração server.id=host:port:port. Cada servidor possui um identificador, que deve ser configurado em um arquivo chamado myid, um para cada servidor, que deverá ficar dentro do dataDir definido na sua configuração
  5. O arquivo myid deve conter uma simples linha com apenas um parâmetro, o nome do servidor. Que no caso do servidor.1 será apenas o valor "1" e nada mais. Este identificador deverá ser único para cada servidor dentro do cluster e o seu valor deverá ser entre 1 e 255.
  6.  Assim que o arquivo de configuração estiver estiver configurado você poderá inicializar o seu servidor do ZooKeeper com o comando:
    $ java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.cfg
    QuorumPeerMain inicializa o servidor ZooKeeper, veja o script zkServer.sh contido dentro do diretório bin para maiores detalhes sobre como inicializar um servidor.
  7. O teste do seu servidor poderá ser realizado através de um comando:
    1. Java
      $ java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf:src/java/lib/jline-0.9.94.jar \ org.apache.zookeeper.ZooKeeperMain -server 127.0.0.1:2181
    Ao rodar este comando você irá se conectar em um shell onde é possível executar operações simples. Para se conectar no servidor ZooKeeper com um cliente MultiThread você deve executar o seguinte comando:
$ cli_mt 127.0.0.1:2181
    assim que você se conectar no servidor você deverá ver alguma coisa como:
Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]
    Agora que você está conectado no servidor, já pode executar algumas operações básicas.

Servidor Simples e Setup de Desenvolvedor

Para configurar um servidor simples, ou um ambiente de desenvolvedor você deve executar os mesmos passos acima, a única diferença será no arquivo de configuração, que aqui será:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

Para inicializar o servidor basta executar o seguinte comando:
bin/zkServer.sh start

Nenhum comentário:

Postar um comentário