第06章-部署前后端分离项目

  1. 6-1 后端项目后端项目部署与负载均衡
  2. 6-2 后端项目双机热备负载均衡
  3. 6-3 前端项目后端项目部署与负载均衡
  4. 6-4 前端项目双机热备负载均衡

除了MySQL和Redis要使用集群外,业务的节点的部署也要使用集群方案,才能保证高性能、高负载和高可用。这一章我们将学习打包前端VUE项目和后端SpringBoot项目,以集群的方式部署在Docker容器内。

6-1 后端项目后端项目部署与负载均衡

  1. 在MySQL集群导入项目SQL文件。

  2. 修改配置文件(数据库连接信息、Redis连接信息、Tomcat端口)

    redis:
        ## 单节点
        # host: localhsot
        # port: 6379
        # password: 
    
        ## 集群
        cluster:
            nodes:
            - 172.19.0.2:6379
            - 172.19.0.3:6379
            - 172.19.0.4:6379
            - 172.19.0.5:6379
            - 172.19.0.6:6379
            - 172.19.0.7:6379
  3. 利用Maven打包工程

    • renren-fast包含了tomcat.jar文件,所以工程打包成JAR文件就能独立运行

      打包部署流程
 Maven打包指令

 - 进入renren-fast目录,执行mvn命令

   ```shell
   mvn clean install -Dmaven.test.skip=true
   ```

   注:

   - `clean`:表示清除之前的JAR文件
   - `install`:意味着打包到本地
   - `-Dmaven.test.skip`:代表跳过测试代码
  1. 运行Java容器部署后台项目

    • 运行Java容器,部署并运行JAR文件

      # 创建Docker卷,并上传JAR至Docker卷
      docker volume create volume_name1
      ls /var/lib/docker/volumes/volume_name1/_data/
      # 运行Java容器
      docker run -it -d --name container_name -v volume_name1:/home/soft --net=host java
      # 进入Java容器
      docker exec -it container_name bash
      # 运行Java程序
      nohup java -jar /home/soft/renren-fast.jar &
  1. 后台程序负载均衡

    • Nginx是性能非常出色的反向代理服务器,最大可以支持8万/秒的并发访问

      Nginx负载均衡示意图

      注:Haproxy对TCP/IP支持很好;Nginx对HTTP支持很好。

    • 步骤:

      1. 安装Nginx镜像

        • Docker仓库提供了Nginx镜像,下载安装即可。

          docker pull nginx
      2. Nginx配置文件

        # Java容器负载均衡
        upstream upstream_name {
            server 192.168.99.104:6001;# Java容器IP与端口号
            server 192.168.99.104:6002;
            server 192.168.99.104:6003;
        }
        # Nginx服务
        server {
            listen 6101;
            server_name 192.168.99.104;
            location / {
                proxy_pass http://upstream_name;
                index index.html index.htm;
            }
        }
      3. 启动Nginx容器

        # 将Nginx配置文件上传至/home
        ls /home
        docker run -it -d --name container_name -v /home/nginx.conf:/etc/nginx/nginx.conf --net=host --privileged nginx

        注:Docker数据卷只能映射目录,不能映射文件。

6-2 后端项目双机热备负载均衡

利用Keepalived实现双机热备

Keepalived实现双机热备示意图
# 进入container_name1容器
docker exec -it container_name1 bash
# 安装Keepalived
apt-get update
apt-get install Keepalived
# 安装vim编辑器
apt-get install vim
# 修改Keepalived配置文件
vi /etc/keepalived/keepalived.conf
# 启动Keepalived
service Keepalived start
# 退出docker容器
exit
ping 192.168.99.151
# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface ens33 # 网卡设置,使用宿主机网络
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    vritual_ipaddress {
        192.168.99.151
    }
}
virtual_server 192.168.99.151 6201 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    real_server 192.168.99.104 6101 {# 转发的IP
        weight 1
    }
}

6-3 前端项目后端项目部署与负载均衡

利用Webpack打包工程

Webpack打包工程 前端项目运行
  1. 修改配置文件

    // /static/conf/index-prod.js
    // api接口请求地址
    window.SITE_CONFIG['baseUrl'] = 'http://192.168.99.151:6201/renren-fast';
  2. 打包前端项目

    • 执行Webpack打包指令

      npm run build
 npm安装较慢可以使用[淘宝NPM镜像](https://npm.taobao.org)

 使用淘宝NPM镜像定制的cnpm(gzip压缩支持)命令行工具代替默认的npm:

 ```shell
 npm install -g cnpm --registry=https://registry.npm.taobao.org
 ```
  • 打包之后的文件需要拷贝到Nginx中运行

    server {
        listen 6501;# NGINX分配的端口
        server_name 192.168.99.104;# NGINX分配的IP。为宿主机IP
        location / {
            root /home/fn1/renren-vue;
            index index.html;
        }
    }
  1. 创建并运行Nginx容器

    docker run -it -d --name container_name1 -v /home/fn1/nginx.conf:/etc/nginx/nginx.conf -v /home/fn1/renren-vue:/home/fn1/renren-vue --privileged --net=host nginx
  1. 利用Keepalived实现双机热备

    Keepalived实现前端双机热备
    1. 创建3个前端项目节点

    2. 创建2个Nginx节点做负载均衡

      # ff1/nginx.conf
      upstream fn {
          server 192.168.99.104:6501;
          server 192.168.99.104:6502;
          server 192.168.99.104:6503;
      }
      server {
          listen       6601;
          server_name  192.168.99.104; 
          location / {  
              proxy_pass   http://fn;
              index  index.html index.htm;  
          }  
      
      }
    3. 安装Keepalived实现双机热备

      见下一节。。

6-4 前端项目双机热备负载均衡

#进入ff1节点
docker exec -it ff1 bash
#更新软件包
apt-get update
#安装VIM
apt-get install vim
#安装Keepalived
apt-get install keepalived
#编辑Keepalived配置文件(如下)
vim /etc/keepalived/keepalived.conf
#启动Keepalived
service keepalived start
# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
   state MASTER
   interface ens33 # 网卡。
   virtual_router_id 52
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 123456
   }
   virtual_ipaddress {
       192.168.99.152# 虚拟IP
   }
}
virtual_server 192.168.99.151 6701 {
   delay_loop 3
   lb_algo rr
   lb_kind NAT
   persistence_timeout 50
   protocol TCP
   real_server 192.168.99.104 6601 {
       weight 1
   }
}

注:VM虚拟机对Keepalived支持不友好。当VM虚拟机挂起重新恢复后,宿主机会PING不通Keepalived的虚拟IP,此时需要进入容器重启Keepalived服务。

service keepalived restart

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tuyrk@qq.com

文章标题:第06章-部署前后端分离项目

文章字数:1.2k

本文作者:神秘的小岛岛

发布时间:2019-12-09, 20:34:26

最后更新:2019-12-09, 20:51:55

原始链接:https://www.tuyrk.cn/imooc/219-docker/06-front-back-deploy/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏