docker技术快速实现前后端项目的集群化⑩搭建renren-fast java后端基于nginx的负载均衡集群

docker技术快速实现前后端项目的集群化⑩搭建renren-fast java后端基于nginx的负载均衡集群

集群基于docker的网络架构

 

创建容器卷java01

 

[root@server01 ~]# docker volume create java01

 

获取centos基础镜像(如果使用java这个镜像,使用的是ubuntu系统,环境不是太熟悉,其次也没有能正常启动jar文件,改用centos作为基础镜像)

# docker pull centos

 

基于centos基础镜像创建容器名为java01,映射docker容器的磁盘为 /data/java01 挂载到java01卷上,并使用宿主机网络(--net=host)

 

[root@server01 ~]# docker run -it -d --name java01 -v java01:/data/java01 --net=host centos

 

 

依次创建新的java02/java03容器(此时我们基于centos基础镜像制作一个有jdk等基础环境的镜像,基于这个基础部署我们的应用效率会高一些)

 

具体制作可以参考:基于centos的docker基础镜像制作有jdk1.8的java环境镜像https://www.cnblogs.com/reblue520/p/13408393.html

 

我们基于myjava环境依次创建我们的镜像(注意修改jar包的端口)

[root@server01 ~]# docker volume create java02

java02

# 基于myjava基础镜像创建名为java02的容器,并将卷java02挂载到容器的 /data/java 目录

[root@server01 ~]# docker run -it -d --name java02 -v java02:/data/java --net=host myjava

[root@server01 ~]# docker cp renren-fast6002.jar java02:/data/java

[root@server01 ~]# docker exec -it java02 /bin/bash

[root@server01 /]# source /etc/profile

[root@server01 /]# nohup java -jar /data/java/renren-fast6002.jar

创建java03这个容器

打包jar

D:\java_source\renrenio-renren-fast-v2.0.0>mvn clean install -Dmaven.test.skip=true

 

创建后端程序java03容器,端口为6003

 

[root@server01 ~]# docker volume create java03

java03

[root@server01 ~]# docker run -it -d --name java03 -v java03:/data/java --net=host myjava

[root@server01 ~]# docker cp renren-fast6003.jar java03:/data/java

[root@server01 ~]# docker exec -it java03 /bin/bash

[root@server01 /]# source /etc/profile

[root@server01 /]# nohup java -jar /data/java/renren-fast6003.jar

添加nginx负载均衡

拉取nginx镜像
[root@server01 ~]# docker pull nginx

编写nginx配置文件
[root@server01 ~]# cat /data/nginx/backend_nginx01/nginx.conf 
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
        worker_connections  10240;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format main  '$remote_addr - - [$time_local] - - "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_cookie" "$request_body" "$http_user_agent" $request_time '; 
    log_format error  '$remote_addr - - [$time_local] - - "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time '; 

    sendfile        on;
    tcp_nodelay    on;

    keepalive_timeout  90;
    client_header_buffer_size 64k;
    large_client_header_buffers 4 64k;
    proxy_connect_timeout 90s;
    proxy_read_timeout 90s;
    proxy_send_timeout 90s; 
    proxy_buffer_size 16k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    proxy_ignore_client_abort on;    
    proxy_intercept_errors on;
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level  5;
    gzip_disable     "MSIE [1-6]\.";
    gzip_types text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/wasm;

    ssi on;
    ssi_silent_errors on;
    expires 60d;
    server_names_hash_bucket_size 20480;

    upstream tomcat {
        server 10.11.0.206:6001;
        server 10.11.0.207:6002;
        server 10.11.0.208:6003;
    }

    include vhost.d/*.conf;

    server {
        listen       8088 ;
        server_name  10.11.0.206;


        location / {
            proxy_pass http://tomcat;
            index  index.html index.htm;
        }

    }
}

启动nginx容器

[root@server01 ~]# docker run -it -d --name backend_nginx01 -v /data/nginx/backend_nginx01/nginx.conf:/etc/nginx/nginx.conf --net=host --privileged nginx

 

 

通过前端负载均衡nginx进行访问

http://10.11.0.206:8088/renren-fast/swagger/index.html

查看nginx的日志

[root@server01 ~]# docker logs -f backend_nginx01

 

挂掉一个java容器看前端nginx负载均衡是否能正常运行,可以看到能正常运行,说明负载均衡搭建成功

 

Nginx双机热备使用keepalived进行处理,与前面的keepalived雷同,后面就不继续测试了

 

posted @ 2020-07-31 17:37  reblue520  阅读(336)  评论(0编辑  收藏  举报