Utilice Consul, docker-compose, Consul-template y registrator para crear un clúster de Consul en la ventana acoplable (detalles gráficos!)

Utilice Consul, docker-compose, Consul-template y registrator para crear un clúster de Consul en la ventana acoplable

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 //集群节点详细信息

Inserte la descripción de la imagen aquí

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 //查看开启的容器

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí
Servidor Consul: 192.168.2.8
Ver servicio en el servidor de consul

curl 127.0.0.1:8500/v1/catalog/services

Inserte la descripción de la imagen aquí

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;
 }
}

Inserte la descripción de la imagen aquí
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

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí

// 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

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí
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

Inserte la descripción de la imagen aquí
Verifique nuevamente el archivo de configuración mhh.conf en vhost.
Inserte la descripción de la imagen aquí
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.
Inserte la descripción de la imagen aquí
Ver los registros. La IP de acceso es 192.168.2.8
Inserte la descripción de la imagen aquí

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:加入到已有的集群中

Inserte la descripción de la imagen aquí
Inicie sesión en 192.168.2.8:8500 en el navegador nuevamente o actualice la interfaz directamente
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_35456705/article/details/115247877
Recomendado
Clasificación