docker技术快速实现前后端项目的集群化⑩搭建renren-fast java后端基于nginx的负载均衡集群
创建容器卷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雷同,后面就不继续测试了