I. Visión general
1.1 Introducción
Zookeeper es un código abierto, distribuido, proporcionado un servicio de coordinación del proyecto Apache para aplicaciones distribuidas
1.2, el mecanismo de trabajo
el modo empleado del zoológico desde el punto de vista de entender el diseño: es una gestión distribuida marco observador patrón de diseño basado en el servicio, que es responsable del almacenamiento y manejo de preocupación para todos los datos, y luego aceptar el registro del observador, una vez que el estado de estos datos va a cambiar Zookeeper ha sido responsable de notificar al Zookeeper. las registradas en el observador reaccionar en consecuencia.
1.3 Características
1) Zookeeper: un grupo que consta de un líder (líder), más seguidores (seguidor).
2) Mientras más de la mitad de la supervivencia nodos de clúster, racimo Zookeeper será capaz de servicio normal.
Consistente 3) datos globales: Cada servidor de retener una copia idéntica de los datos, el cliente, independientemente de que se conectan al servidor, los datos son consistentes.
4) solicitud de actualización secuencial, la solicitud de actualización desde el mismo cliente se ejecutan en el orden en que fueron enviados.
5) atomicidad de actualización de datos, una actualización de datos, ya sea éxito o fracasan.
6) en tiempo real, dentro de un determinado período de tiempo, el cliente puede leer los datos más recientes.
1.4 Estructura de Datos
ZooKeeper estructura modelo de datos y archivos de Unix sistemas son similares, el conjunto puede ser visto como un árbol, cada nodo se denomina ZNode. Cada 1 MB predeterminado ZNode capaz de almacenar datos, cada ZNode se identifican de manera única por su camino.
znode un total de cuatro tipos: persistentes (persistentes), temporal (efímeras), con una duración ordenó (persistent_sequential) y ordenó temporalmente (ephemeral_sequential).
1.5, escenarios de aplicación
Los servicios proporcionados incluyen: servicios de nombres unificado, gestión de la configuración unificada, gestión de cluster unificado, nodo de servidor dinámico en línea, balanceo de carga suave.
1,6, que se utiliza en combinación con otros componentes
Metadatos en HBase, ZooKeeper de los principales nodos de un clúster de elección para realizar un seguimiento de servidor disponible y guardar el clúster: HBase
Kafka: En Kafka, ZooKeeper para detectar un choque, para darse cuenta de las conclusiones del tema (tema) y mantener los temas de estado de producción y consumo
, El despliegue segundo cluster
Premise
① nodos de clúster menos la mitad de la supervivencia, el número de grupos es preferiblemente un número impar, un mínimo de tres
② Cada clúster de servidor debe instalar el JDK
③ nodos tiempo / tiempo de sincronización zona
④ interior libre estanco de la agrupación
⑤ modificar el nombre de host del local y de análisis sintáctico
Planificación clúster: Zookeeper desplegado en el nodo 1, el nodo 2, nodo3 tres nodos
2.1, la instalación de JDK
Desinstalar la versión antigua
rpm -qa | grep openjdk | xargs rpm -e --nodeps
Crear un directorio de instalación
mkdir -p /usr/lib/jvm/jdk1.8.0_73
instalar
tar -xvzf jdk-8u73-linux-x64.tar.gz -C /usr/lib/jvm
Añadir la variable de entorno en el archivo / etc / profile en
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_73
export JRE_HOME=/usr/lib/jvm/jdk1.8.0_73/jre
export CLASSPATH=.:/usr/lib/jvm/jdk1.8.0_73/lib:/usr/lib/jvm/jdk1.8.0_73/jre/lib
export PATH=$PATH:/usr/lib/jvm/jdk1.8.0_73/bin
La relectura de variables de entorno
source /etc/profile
2,2, ZK de montaje (cada grupo de nodos)
Para extraer el directorio de instalación
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/
Crear un directorio zkData
mkdir -p /opt/zookeeper-3.4.9/data
La creación de archivos myid, añadir el número del servidor correspondiente en el archivo
echo "1" > /opt/zookeeper-3.4.9/data/myid
2.3, modificar el archivo de configuración (los nodos del clúster)
Rebautizado /opt/zookeeper-3.4.9/conf este directorio es zoo_sample.cfg zoo.cfg
mv zoo_sample.cfg zoo.cfg
Modificar el directorio de almacenamiento de datos
dataDir=/opt/zookeeper-3.4.9/data
dataLogDir=/opt/zookeeper-3.4.9/logs
Añadir la siguiente configuración
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
#此处的1为data目录下myid的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
#node1为zk节点的主机名,前提是已经做好本地解析
#2888是follower与leader交换信息的端口
#3888是用于执行选举leader时相互通信的端口
#ZooKeeper服务器在启动时从一个名为zoo.cfg的配置文件读取所有 选项,多个服务器如果角色相似,同时基本配置信息一样,就可以共享 一个文件。data目录下的myid文件用于区分各个服务器,对每个服务器 来说,data目录必须是唯一的,因此这个目录可以更加方便地保存一些 差异化文件。服务器ID将myid文件作为一个索引引入到配置文件中。
otras configuraciones
tickTime =2000 #通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
initLimit =10 #LF初始通信时限
syncLimit =5 #LF同步通信时限
clientPort =2181 #客户端连接端口
ZK modificar el directorio de almacenamiento de registro: zkEnv.sh
sed -i 's/ZOO_LOG_DIR="."/ZOO_LOG_DIR="\/opt\/zookeeper-3.4.9\/logs"/g' /opt/zookeeper-3.4.9/bin/zkEnv.sh
sed -i 's/ZOO_LOG4J_PROP="INFO,CONSOLE"/ZOO_LOG4J_PROP="DEBUG,ROLLINGFILE"/g' /opt/zookeeper-3.4.9/bin/zkEnv.sh
ZK modificar el archivo de configuración de log4j: log4j.properties
sed -i 's/zookeeper.root.logger=INFO, CONSOLE/zookeeper.root.logger=INFO, ROLLINGFILE/g' /opt/zookeeper-3.4.9/conf/log4j.properties
sed -i 's/zookeeper.log.dir=./zookeeper.log.dir=\/opt\/zookeeper-3.4.9\/logs/g' /opt/zookeeper-3.4.9/conf/log4j.properties
sed -i 's/zookeeper.tracelog.dir=./zookeeper.tracelog.dir=\/opt\/zookeeper-3.4.9\/logs/g' /opt/zookeeper-3.4.9/conf/log4j.properties
2.4, iniciar (cada nodo en el cluster)
/opt/zookeeper-3.4.9/bin/zkServer.sh start-foreground
zkServer.sh parámetro de guión
puesta en primer plano: Los tiempos están empezando a ver nada inusual, pero también pueden ver anomalías durante el funcionamiento.
imprimir-cmd: Compruebe cada parámetro empleado del zoológico se inicia, y similares que comprende una ruta de Java
2.5, ver el estado
[root@node1 zookeeper-3.4.9]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
En tercer lugar, basado en el despliegue de la ventana acoplable autónomo
3.1, cargador de muelle de composición del cargador de muelle e instalar
Extraer el paquete de instalación
tar zxvf docker-18.09.8.tgz
instalar
mv docker/* /usr/bin/
mkdir /etc/docker
cp daemon.json /etc/docker/daemon.json
cp docker.service /usr/lib/systemd/system/docker.service
Instalación de composición del cargador de muelle
cp docker-compose/docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
Inicio y fijar la bota
systemctl daemon-reload
systemctl start docker
systemctl enable docker
systemctl restart docker
3.2, la introducción de zookeeper espejo
docker load -i zookeeper-3.4.9_20191008.tar
3.3, el archivo de cargador de muelle-compose.yml listo
version: '2'
services:
zookeeper:
image: zookeeper:3.4.9
restart: always
container_name: zookeeper
ports:
- 2181:2181
environment:
ZOO_IP: 192.168.143.200
ZOO_MY_ID: 1
volumes:
- "/home/data/zookeeper/data:/opt/zookeeper-3.4.9/data"
- "/home/data/zookeeper/logs:/opt/zookeeper-3.4.9/logs"
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
network_mode: "host"
① recipiente está expuesta al puerto 2181 al puerto 2181 del host
el directorio de datos lógicos y de registro está montado ②
③ montar recipiente hora local y la zona horaria del archivo anfitrión
④ red contenedores anfitrión
3.4, iniciar empleado del zoológico espejo
docker-compose -f docker-compose.yml up -d
3.5, cheque
Compruebe el estado del buque
[root@master home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4685488115a zookeeper:3.4.9 "/opt/zookeeper-3.4.…" 12 minutes ago Up 12 minutes zookeeper
Compruebe el interior del recipiente empleado del zoológico
[root@master home]# docker exec -it e4685488115a /bin/bash
[root@master /]# ps afx
PID TTY STAT TIME COMMAND
122 pts/0 Ss 0:00 /bin/bash
135 pts/0 R+ 0:00 \_ ps afx
1 ? Ssl 0:01 /opt/jdk1.8.0_73/bin/java -Dzookeeper.log.dir=/opt/zookeeper-3.4.9/logs -Dzookeeper.root.logger=DEBUG,ROLLI
[root@master /]# jps
1 QuorumPeerMain
136 Jps
Anfitrión inspección en el puerto de escucha
[root@master home]# netstat -tanlp | grep java
tcp6 0 0 :::41309 :::* LISTEN 5850/java
tcp6 0 0 :::2181 :::* LISTEN 5850/java
Cuatro, gestión Zookeeper comando de cuatro caracteres
4.1, modificar el soporte de archivos de configuración de comandos de cuatro caracteres
Zookeeper ofrece una serie de comandos de cuatro palabras para vigilar su ejecución, agregue la siguiente configuración en el comando de cuatro caracteres abrir el archivo de lista blanca zoo.cfg inferior
4lw.commands.whitelist = * # 4 todos los comandos de palabra puede ser usada
4.2, de cuatro caracteres Resumen de los comandos
conf: configuración detallada de los servicios relacionados con la producción.
Contras: Lista todos los detalles de conexión de la conexión / sesión al servidor para todos los clientes. El número de paquetes que incluyen la "recepción / transmisión", id de sesión, el retardo de funcionamiento, la última operación se realiza así sucesivamente.
volcado: la salida de todos los mensajes que esperan en la cola de la sesión y los nodos provisionales, este comando se ejecuta para el líder.
ENVI: Prints detalla información sobre el entorno de servicio (diferente del comando conf).
REQS: lista de peticiones sin tratar
RUOK: Servicios de prueba se encuentran en el estado correcto. Si es así, entonces el servicio devuelve "imok", de lo contrario no tiene correspondiente.
El dato: lista de salida en el rendimiento y la conexión del cliente.
CMEH: listas de vigilancia de información de resumen del servidor.
WCHC: Para obtener más información de reloj de servidor de listas de sesión, su salida es una lista de reloj relacionado la sesión.
WCHP: Para obtener más información sobre el servidor reloj lista a través de la ruta de acceso. Se da salida a un camino asociado con la sesión.
mntr: La salida es más detallada que las estadísticas del servidor comando stat
CRST: reposición de la orden funcionales todas las estadísticas de conexión
Ejemplo: Para obtener más información de configuración del servidor de salida, con el CN
[la raíz @ Master Home] NC # yum install -Y
ejemplo: estadísticas del servidor de salida
Artículo de referencia:
http://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html
"ZooKeeper: Distributed tecnología de proceso de colaboración a explicar"