Docker cria cluster Nacos de proxy reverso nginx mais mysql

índice

1. Docker constrói mestre e escravo mysql

2.Docker constrói Nacos-server: 1.3.1 cluster

2.1 Necessidade de criar o banco de dados de configuração exigido pelo nacos no banco de dados

2.2 comando de cluster do docker

2.3 Descrição do parâmetro de comando

2.4 Abrir portas de firewall

2.5 Após a inicialização bem-sucedida, podemos acessar o console do Nacos

3.docker install nginx

3.1. Criar comando

3.2. Conteúdo de configuração do nginx

3.3 nginx suporta cinco modos de distribuição

3.4 reinicie o nginx

3.5 Visita


1. Docker constrói mestre e escravo mysql

compilação docker mysql

2.Docker constrói Nacos-server: 1.3.1 cluster

2.1 Necessidade de criar o banco de dados de configuração exigido pelo nacos no banco de dados

 

Script de inicialização do banco de dados: https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql

2.2 comando de cluster do docker

Se você precisar modificar o ip para sua própria porta ip -p, modifique o ip acessível no lado esquerdo, modifique a porta no contêiner por padrão 8848 à direita

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 Descrição do parâmetro de comando

MODE = modo cluster cluster

NACOS_APPLICATION_PORT = 8848 porta de nacos de contêiner

NACOS_SERVERS = ip: 38848, ip: 38849, ip: 38850 cada serviço nacos-server no cluster

SPRING_DATASOURCE_PLATFORM = mysql suporta mysql independentemente

NACOS_SERVER_IP = ip valor opcional hostname / ip ip padrão

MYSQL_ * related

MYSQL_SERVICE_DB_NAME = nacos_config nome do banco de dados do script de inicialização do banco de dados

Script de inicialização do banco de dados: 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 porta do host: porta de acesso 8848 nacos

--restart = reiniciar sempre o serviço docker irá iniciar o contêiner

nacos / nacos-server: 1.3.1 versão espelho nacos

Copie tudo diretamente para o xshell como segue

2.4 Abrir portas de firewall

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

Se for um servidor Alibaba Cloud, abra a regra do grupo de segurança

2.5 Após a inicialização bem-sucedida, podemos acessar o console do Nacos

Endereço de acesso 1: http: // host IP: 38848 / nacos 
endereço de acesso 2: http: // host IP: 38849 / nacos 
endereço de acesso 3: http: // host IP: 38850 / nacos 
conta de login e senha padrão Se nacos for mostrado na 
figura, o cluster foi construído com sucesso

3.docker install nginx

3.1. Criar comando

-v docker é montado no local do host, você precisa criá-lo e colocar seu local à direita de -v: esquerdo

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 início automático das configurações do docker container

Adicione --restart = sempre ao criar o contêiner de inicialização

O sinalizador Descriptionno não reinicia automaticamente o contêiner. (Valor padrão) em caso de falha, o contêiner sai devido a um erro (o status de saída do contêiner não é 0) reinicie o contêiner, a menos que interrompido reinicie o contêiner apenas quando o contêiner tiver sido interrompido ou o Docker parado / reiniciado sempre no contêiner Reinicie o contêiner quando ele for interrompido ou o Docker for interrompido / reiniciado

Se você já criou um contêiner iniciado, use update para atualizar: docker update --restart = always nginx_master

3.2. Conteúdo de configuração do nginx

Modifique o ip do arquivo de configuração para o seu próprio ip

Local do nginx.conf: /home/dockerdata/nginx/nginx_master/conf/nginx.conf onde o comando de inicialização é montado

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 suporta cinco modos de distribuição

#设定负载均衡的服务器列表
    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 reinicie o nginx

​docker restart nginx_master

3.5 Visita

http: // nginxIP / nacos

 

 

Acho que você gosta

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