Utilice Consul, docker-compose, Consul-template y registrator para crear un clúster de Consul en la ventana acoplable
Directorio de artículos
- Utilice Consul, docker-compose, Consul-template y registrator para crear un clúster de Consul en la ventana acoplable
- Preparación ambiental:
- Requisitos experimentales:
- Uno, implementar el servidor Consul
- 2. Implementar el servicio de contenedor para unirse automáticamente al clúster nginx
-
- 1. Ropa interior Gliderlabs / Registryr Gliderlabs / Registrator
- 2. Pruebe el servicio para averiguar si la función es normal.
- 3. Verifique que los servicios http y nginx estén registrados ante el cónsul.
- 4. Instalar consul-template
- 5. Prepare el archivo de plantilla nginx de plantilla
- 6. Compile e instale nginx
- 7. Configurar nginx
- 8. Configure e inicie la plantilla.
- 9. Agregue un nodo contenedor nginx
- Tres, implementar cónsul multinodo
Preparación ambiental:
Servidor: 192.168.2.8 Docker-ce, Compose, Consul, Consul-template
Servidor: 192.168.2.9 Docker-ce, registrator
Más tarde, cuando se agregue Consul multinodo, se agregará un nodo
Servidor: 192.168.2.7 Docker-ce, Compose , Cónsul
Requisitos experimentales:
Logre la intercomunicación entre contenedores y contenedores en una red de una sola máquina
Cree servicios Consul para realizar el descubrimiento automático y la actualización de los servicios Logre una
alta disponibilidad de los servicios Consul
Uno, implementar el servidor Consul
Servidor Consul: 192.168.2.8
//把consul_0.9.2_linux_amd64.zip拖进来
mkdir /root/consul
cp consul_0.9.2_linux_amd64.zip /root/consul
cd /root/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin
cd /usr/bin
//把docker-compose包拖进来
chmod +x docker-compose
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.2.8 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
执行完可以用jobs查看,正在运行中
//查看集群信息
consul members
consul info | grep leader
//通过http api获取集群信息
curl 127.0.0.1:8500/v1/status/peers //查看集群server成员
curl 127.0.0.1:8500/v1/status/leader //集群 Raf leader
curl 127.00.1:8500/v1/catalog/services //注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx //查看 nginx 服务信息
curl 127.0.0.1:8500/v1/catalog/nodes //集群节点详细信息
2. Implementar el servicio de contenedor para unirse automáticamente al clúster nginx
Servidor: 192.168.2.9
1. Ropa interior Gliderlabs / Registryr Gliderlabs / Registrator
Puede verificar el estado de ejecución del contenedor y registrarse automáticamente, y también puede cancelar el servicio del contenedor de la
ventana acoplable al centro de configuración del servicio. Actualmente, se admiten Consul, Etcd (también almacenamiento distribuido) y SkyDNS2. Está
en el 192.168 .2.9 nodo. Haz lo siguiente:
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.2.9 \
consul://192.168.2.8:8500
docker images //查看生成的镜像
docker ps -a //查看开启的容器
2. Pruebe el servicio para averiguar si la función es normal.
Servidor: 192.168.2.9
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd
docker ps -a
3. Verifique que los servicios http y nginx estén registrados ante el cónsul.
Navegador ingrese http://192.168.2.8:8500, "haga clic en NODOS",
y luego haga clic en "consurl-server01", habrá 5 servicios
Servidor Consul: 192.168.2.8
Ver servicio en el servidor de consul
curl 127.0.0.1:8500/v1/catalog/services
4. Instalar consul-template
Consul-Template es un proceso de demonio que se utiliza para consultar información del clúster de Consul en tiempo real,
actualizar cualquier número de plantillas especificadas en el sistema de archivos y generar archivos de configuración. Una vez completada la actualización,
puede optar por ejecutar el comando de shell para realizar la operación de actualización y volver a cargar Nginx. Consul-Template
puede consultar el catálogo de servicios, claves, valores-clave, etc. en Consul.
Esta potente función de abstracción y la plantilla de lenguaje de consulta pueden hacer que Consul-Template sea especialmente adecuado para la
creación dinámica de archivos de configuración. Por ejemplo: cree Apache / Nginx Proxy Balancers, Haproxy Backends
5. Prepare el archivo de plantilla nginx de plantilla
Servidor Consul: 192.168.2.8
// Operar en cónsul
vim /root/consul/nginx.ctmpl
upstream http_backend {
{
{
range service "nginx"}}
server {
{
.Address}}:{
{
.Port}};
{
{
end}}
}
server {
listen 83;
server_name localhost 192.168.2.8;
access_log /var/log/nginx/mhh.cn-access.log;
index index.html index.php;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_backend;
}
}
Nota: Finalmente, el archivo de configuración se generará de acuerdo con esta plantilla.
6. Compile e instale nginx
Servidor Consul: 192.168.2.8
yum install gcc pcre-devel zlib-devel -y
tar zxvf nginx-1.12.0.tar.gz -C /opt
cd /opt
./configure --prefix=/usr/local/nginx
make && make install
7. Configurar nginx
Servidor Consul: 192.168.2.8
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
include vhost/*.conf; //添加虚拟主机目录
default_type application/octet-stream;
//创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost
//创建日志文件目录
mkdir /var/log/nginx
//启动nginx
/usr/local/nginx/sbin/nginx
netstat -natp | grep nginx
8. Configure e inicie la plantilla.
Servidor Consul: 192.168.2.8
Cargue el paquete consul-template_0.19.3_linux_amd64.zip en el directorio / root / consul
cp consul-template_0.19.3_linux_amd64.zip /root/consul
cd /root/consul
unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin/
consul-template -consul-addr 192.168.2.8:8500 \
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info
// Abra otra terminal para ver el archivo de configuración generado
Servidor Consul: 192.168.2.8
Es mhh.conf en el directorio / usr / local / nginx / conf / vhost
cd /usr/local/nginx/conf/vhost
ls
vim mhh.conf
9. Agregue un nodo contenedor nginx
Servidor: 192.168.2.9
Agregue un nodo contenedor nginx. Función de actualización de configuración y descubrimiento de servicio de prueba
// registrarse en el servidor de registro
docker run -itd -p:85:80 --name test-05 -h test05 nginx
Ingrese el navegador http://192.168.2.8:8500, "haga clic en NODOS", y luego haga clic en "consurl-server01", encontrará que se ha agregado un servidor
Servidor Consul: 192.168.2.8
Cuando el servidor de cónsul supervise la carga, aparecerá un mensaje para actualizar automáticamente
2021/03/26 12:03:16.909869 [INFO] (runner) initiating run
2021/03/26 12:03:16.910975 [INFO] (runner) rendered "/root/consul/nginx.ctmpl" => "/usr/local/nginx/conf/vhost/mhh.conf"
2021/03/26 12:03:16.910993 [INFO] (runner) executing command "/usr/local/nginx/sbin/nginx -s reload" from "/root/consul/nginx.ctmpl" => "/usr/local/nginx/conf/vhost/mhh.conf"
2021/03/26 12:03:16.911091 [INFO] (child) spawning: /usr/local/nginx/sbin/nginx -s reload
Verifique nuevamente el archivo de configuración mhh.conf en vhost.
Incluso si se detiene cualquier contenedor nginx, el archivo de configuración se cambiará en consecuencia. No lo demostraré aquí.
l Servidor: 192.168.2.9
Ver los registros de tres contenedores nginx
Se encuentra que todos los nodos nginx han sido equilibrados de carga por nginx. El equilibrio de carga accede al contenedor nginx, y la solicitud normalmente se sondea a cada nodo del contenedor. La adición o eliminación del contenedor modificará directamente el archivo de configuración en el directorio vhost .
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05
Visite 192.168.2.8:83, que es el puerto donde nginx brinda servicios.
Puede actualizar la página web repetidamente y observar los registros de tres contenedores nginx.
Ver los registros. La IP de acceso es 192.168.2.8
Tres, implementar cónsul multinodo
Servidor Consul recién agregado: 192.168.2.7
// Agregue un servidor de entorno Docker existente 192.168.2.7/24 para unirse al clúster existente
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.2.7 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.2.8 &> /var/log/consul.log &
-enable-script-checks=true:设置检查服务为可用
-datacenter:数据中心名称
-join:加入到已有的集群中
Inicie sesión en 192.168.2.8:8500 en el navegador nuevamente o actualice la interfaz directamente