í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.5 Após a inicialização bem-sucedida, podemos acessar o console do Nacos
3.2. Conteúdo de configuração do nginx
3.3 nginx suporta cinco modos de distribuição
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
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