docker搭建nginx反向代理Nacos集群加mysql

目录

1.docker 搭建mysql主从

2.docker 搭建Nacos-server:1.3.1集群

2.1需要在数据库创建nacos需要的配置数据库

2.2docker 集群命令

2.3命令参数说明

2.4打开防火墙端口

2.5启动成功后 我们就可以访问 nacos 控制台了

3.docker 安装nginx

3.1.创建命令

3.2.nginx 配置内容

3.3nginx 支持五种分配模式

3.4重启nginx

3.5访问


1.docker 搭建mysql主从

docker mysql搭建

2.docker 搭建Nacos-server:1.3.1集群

2.1需要在数据库创建nacos需要的配置数据库

 

数据库初始化脚本:https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql

2.2docker 集群命令

需要修改ip为自己的ip端口的话 -p 位置左边修改可访问端口 右边修改容器内端口默认8848

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命令参数说明

MODE=cluster 集群模式

NACOS_APPLICATION_PORT=8848 容器nacos端口

NACOS_SERVERS=ip:38848,ip:38849,ip:38850 集群每个nacos-server服务

SPRING_DATASOURCE_PLATFORM=mysql 独立支持mysql

NACOS_SERVER_IP=ip 可选值hostname/ip 默认ip

MYSQL_* 相关

MYSQL_SERVICE_DB_NAME=nacos_config 数据库初始化脚本数据库名称

数据库初始化脚本: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宿主机端口:8848 nacos访问端口

--restart=always 重启docker服务会启动该容器

nacos/nacos-server:1.3.1 nacos镜像版本

如下直接全部复制进xshell

2.4打开防火墙端口

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

如果是阿里云服务器要去开启安全组规则

2.5启动成功后 我们就可以访问 nacos 控制台了

访问地址1:http://宿主机IP:38848/nacos
访问地址2:http://宿主机IP:38849/nacos
访问地址3:http://宿主机IP:38850/nacos
默认登录账号密码都是nacos
如图则集群搭建成功

3.docker 安装nginx

3.1.创建命令

-v docker 挂载在宿主机位置需要自己创建好将自己位置放在-v 右边:左边

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
​

补充

2.1.1docker容器设置自动启动

创建启动容器时加--restart=always

Flag Descriptionno 不自动重启容器. (默认value)on-failure 容器发生error而退出(容器退出状态不为0)重启容器unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

如果已经创建启动的容器,则使用update更新:docker update --restart=always nginx_master

3.2.nginx 配置内容

修改配置文件ip为自己的ip

nginx.conf 位置:/home/dockerdata/nginx/nginx_master/conf/nginx.conf上面启动命令挂载的位置

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.3nginx 支持五种分配模式

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

​docker restart nginx_master

3.5访问

http://nginxIP/nacos

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值