第06章-部署前后端分离项目
除了MySQL和Redis要使用集群外,业务的节点的部署也要使用集群方案,才能保证高性能、高负载和高可用。这一章我们将学习打包前端VUE项目和后端SpringBoot项目,以集群的方式部署在Docker容器内。
6-1 后端项目后端项目部署与负载均衡
在MySQL集群导入项目SQL文件。
修改配置文件(数据库连接信息、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
利用Maven打包工程
renren-fast包含了tomcat.jar文件,所以工程打包成JAR文件就能独立运行
Maven打包指令
- 进入renren-fast目录,执行mvn命令
```shell
mvn clean install -Dmaven.test.skip=true
```
注:
- `clean`:表示清除之前的JAR文件
- `install`:意味着打包到本地
- `-Dmaven.test.skip`:代表跳过测试代码
运行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 &
后台程序负载均衡
Nginx是性能非常出色的反向代理服务器,最大可以支持8万/秒的并发访问
注:Haproxy对TCP/IP支持很好;Nginx对HTTP支持很好。
步骤:
安装Nginx镜像
Docker仓库提供了Nginx镜像,下载安装即可。
docker pull nginx
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; } }
启动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实现双机热备

# 进入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打包工程


修改配置文件
// /static/conf/index-prod.js // api接口请求地址 window.SITE_CONFIG['baseUrl'] = 'http://192.168.99.151:6201/renren-fast';
打包前端项目
执行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; } }
创建并运行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
利用Keepalived实现双机热备
创建3个前端项目节点
创建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; } }
安装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" 转载请保留原文链接及作者。