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.
- Instale o JDK do Java, você pode utilizar um instalador nativo pro seu sistema Operacional, ou fazer o download do JDK aqui.
- 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.
- Instale o servidor ZooKeeper, que pode ser encontrado aqui
- 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
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
- 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.
- 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. - O teste do seu servidor poderá ser realizado através de um comando:
- 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
$ 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