Docker compila el clúster Nacos de proxy inverso nginx más mysql

Tabla de contenido

1.Docker compila maestro y esclavo de mysql

2.Docker construye Nacos-server: 1.3.1 cluster

2.1 Necesidad de crear la base de datos de configuración requerida por nacos en la base de datos

2.2comando de clúster de docker

2.3 Descripción del parámetro de comando

2.4 Puertos de firewall abiertos

2.5 Después de un inicio exitoso, podemos acceder a la consola de nacos

3.docker instalar nginx

3.1. Crear comando

3.2.contenido de configuración denginx

3.3 nginx admite cinco modos de distribución

3.4 reiniciar nginx

3.5 Visita


1.Docker compila maestro y esclavo de mysql

docker mysql build

2.Docker construye Nacos-server: 1.3.1 cluster

2.1 Necesidad de crear la base de datos de configuración requerida por nacos en la base de datos

 

Script de inicialización de la base de datos: https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql

2.2comando de clúster de docker

Si necesita modificar la ip a su propio puerto ip -p, modifique la ip accesible en el lado izquierdo, modifique el puerto en el contenedor por defecto 8848 a la derecha

docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=ip:38848,ip:38849,ip:38850 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=33306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=980224 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=ip \
-e JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m \
-p 38848:8848 \
--name nacos48 \
--restart=always \
nacos/nacos-server:1.3.1
 
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=ip:38848,ip:38849,ip:38850 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=33306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=980224 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=ip \
-e JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m \
-p 38849:8848 \
--name nacos49 \
--restart=always \
nacos/nacos-server:1.3.1
​
docker run -d \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8848 \
-e NACOS_SERVERS=ip:38848,ip:38849,ip:38850 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=33306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=980224 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=ip \
-e JVM_XMS=215m -e JVM_XMX=215m -e JVM_XMN=215m \
-p 38850:8848 \
--name nacos50 \
--restart=always \
nacos/nacos-server:1.3.1

2.3 Descripción del parámetro de comando

MODE = modo de clúster de clúster

NACOS_APPLICATION_PORT = 8848 contenedor puerto nacos

NACOS_SERVERS = ip: 38848, ip: 38849, ip: 38850 cada servicio de servidor nacos en el clúster

SPRING_DATASOURCE_PLATFORM = mysql es compatible con mysql de forma independiente

NACOS_SERVER_IP = ip valor opcional nombre de host / ip ip predeterminada

MYSQL_ * relacionado

MYSQL_SERVICE_DB_NAME = nombre de la base de datos del script de inicialización de la base de datos nacos_config

Script de inicialización de la base de datos: https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql

JVM_XMS = 215m -e JVM_XMX = 215m -e JVM_XMN = 215m

 

-p 38850: 8848 38850 puerto de host: 8848 puerto de acceso nacos

--restart = siempre reiniciar el servicio Docker iniciará el contenedor

nacos / nacos-server: 1.3.1 versión espejo de nacos

Copie todo directamente en xshell de la siguiente manera

2.4 Puertos de firewall abiertos

firewall-cmd --zone=public --add-port=38848/tcp --permanent
firewall-cmd --zone=public --add-port=38849/tcp --permanent
firewall-cmd --zone=public --add-port=38850/tcp --permanent
firewall-cmd --zone=public --add-port=33306/tcp --permanent
firewall-cmd --reload

Si es un servidor de Alibaba Cloud, abra la regla del grupo de seguridad

2.5 Después de un inicio exitoso, podemos acceder a la consola de nacos

Dirección de acceso 1: http: // IP de host: 38848 / nacos 
dirección de acceso 2: http: // IP de host: 38849 / 
dirección de acceso de nacos 3: http: // IP de host: 38850 / 
cuenta de inicio de sesión y contraseña predeterminadas de nacos Si nacos se muestra en la 
figura, el clúster se construyó correctamente

3.docker instalar nginx

3.1. Crear comando

-v docker se monta en la ubicación del host, debe crearlo usted mismo y poner su ubicación a la derecha de -v: left

docker run -id --name=nginx_master -p 80:80 -v  /home/dockerdata/nginx/nginx_master/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/dockerdata/nginx/nginx_master/logs:/var/log/nginx \
-v /home/dockerdata/nginx/nginx_master/html:/usr/share/nginx/html --restart=always nginx:1.19.0
​

suplemento

2.1.1 inicio automático de la configuración del contenedor de la ventana acoplable

Agregue --restart = siempre al crear el contenedor de inicio

Bandera Descripción no no reinicia automáticamente el contenedor. (Valor predeterminado) en caso de falla, el contenedor sale con un error (el estado de salida del contenedor no es 0) reinicia el contenedor a menos que se detenga reinicia el contenedor solo cuando el contenedor se haya detenido o Docker se detuvo / reinicia siempre en el contenedor Reinicie el contenedor cuando se haya detenido o Docker se detenga / reinicie

Si ha creado un contenedor iniciado, use update para actualizar: docker update --restart = always nginx_master

3.2.contenido de configuración denginx

Modifique la ip del archivo de configuración a su propia ip

nginx.conf ubicación: /home/dockerdata/nginx/nginx_master/conf/nginx.conf donde está montado el comando de inicio

user  nginx;
worker_processes  1;
​
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
​
​
events {
    worker_connections  1024;
}
​
​
http {
    upstream nacos-cluster {
    server ip:38848;
    server ip:38849;
    server ip:38850;
    }
​
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
​
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
​
    access_log  /var/log/nginx/access.log  main;
​
    sendfile        on;
    #tcp_nopush     on;
​
    keepalive_timeout  65;
​
    #gzip  on;
​
    server {
        listen       80;
        listen  [::]:80;
        server_name  ip;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location /nacos {
            proxy_pass   http://nacos-cluster;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
}
​

3.3 nginx admite cinco modos de distribución

#设定负载均衡的服务器列表
    upstream 变量名 {
        #weigth参数表示权值,权值越高被分配到的几率越大
        #max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
        #fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器
    }
!!!分配方式
    Nginx的upstream支持5种分配方式,下面将会详细介绍,其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:
1、轮询        
        轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。
        upstream backend {
            server 192.168.200.131:8848;
            server 192.168.200.131:8849;
            server 192.168.200.131:8850;
        }
2、weight        
        轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
        upstream backend {
            server 192.168.200.131:8848 weight=1;
            server 192.168.200.131:8849 weight=2;
            server 192.168.200.131:8850 weight=3;
        }
3、ip_hash        
        每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
        upstream backend {
            ip_hash;
            server 192.168.200.131:8848;
            server 192.168.200.131:8849;
            server 192.168.200.131:8850;
        }
4、fair        
        fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
        upstream backend {
            server 192.168.200.131:8848;
            server 192.168.200.131:8849;
            server 192.168.200.131:8850;
            fair;
        }
5、url_hash
        与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
        upstream backend {
            server 192.168.200.131:8848;
            server 192.168.200.131:8849;
            server 192.168.200.131:8850;
            hash $request_uri;
            hash_method crc32;
        }
        其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。

3.4 reiniciar nginx

​docker restart nginx_master

3.5 Visita

http: // nginxIP / nacos

 

 

Supongo que te gusta

Origin blog.csdn.net/adminBfl/article/details/108797060
Recomendado
Clasificación