当前位置: 首页 > article >正文

使⽤docker部署project-exam-system(2)

制作docker-compose.yml⽂件,实现⼀键部署

步骤:

1. 启动nginx

docker run -itd -p80:80 -v
/root/pes/web/src/dist/:/usr/share/nginx/html/
nginx:latest
2. 启动java容器
3. 启动mysql
配置⾼可⽤的项⽬
1. 先创建三个前段 nginx容器
1. 端⼝不能映射80
docker run -itd -v
/root/pes/web/src/dist/:/usr/share/nginx/htm
l/ nginx:latest
2. 现在在远程是⽆法访问nginx服务,⽽且现在也不希望外部
直接访问nginx,希望创建nginx服务的集群,这个集群被
haproxy代理,创建三个nginx容器,创建⼀个haproxy服
务,⽽且nginx容器还需要指定名称,web0 web1 web2因为
如果没有名称,那么容器就⽆法被haproxy --link
3. 启动haproxy容器 hap0
1. 拉取haproxy镜像
docker pull haproxy
https://www.haproxy.com/documentation/ha
proxy-enterprise/getting
started/tutorials/docker
tutorial/#sidebar
2. 配置
global
daemon
# nbproc 1
# pidfile /var/run/haproxy.pid
# ⼯作⽬录
# chroot /usr/local/etc/haproxy
defaults
log 127.0.0.1 local0 err #[err
warning info debug]
mode http #默认的模
式mode { tcp|http|health },tcp是4层,http
是7层,health只会返回OK
retries 2 #两次连接
失败就认为是服务器不可⽤,也可以通过后⾯设置
option redispatch #当
serverId对应的服务器挂掉后,强制定向到其他健康
的服务器
option abortonclose #当服务器
负载很⾼的时候,⾃动结束掉当前队列处理⽐较久的链
option dontlognull #⽇志中不
记录负载均衡的⼼跳检测记录
maxconn 4096 #默认的最
⼤连接数
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超
timeout server 30000ms #服务器超
#timeout check 2000 #=⼼跳检
测超时
######## 监控界⾯配置 #################
listen admin_status
# 监控界⾯访问信息
bind 0.0.0.0:8888
mode http
# URI相对地址
stats uri /dbs
# 统计报告格式
stats realm Global\ statistics
# 登录账户信息
stats auth admin:123456
########frontend配置##############
######## mysql负载均衡配置 ###############
listen proxy-mysql
bind 0.0.0.0:3306
mode tcp
# 负载均衡算法
# static-rr 权重, leastconn 最少连
接, source 请求IP, 轮询 roundrobin
balance roundrobin
# ⽇志格式
option tcplog
# 在 mysql 创建⼀个没有权限的haproxy
⽤户,密码为空。 haproxy⽤户
# create user 'haproxy'@'%'
identified by ''; FLUSH PRIVILEGES;
option mysql-check user haproxy
# 这⾥是容器中的IP地址,由于配置的是
轮询roundrobin,weight 权重其实没有⽣效
server MYSQL_1
192.168.130.100:3306 check weight 1
maxconn 2000
server MYSQL_2
192.168.130.101:3306 check weight 1
maxconn 2000
#server MYSQL_3
192.168.130.102:3306 check weight 1
maxconn 2000
# 使⽤keepalive检测死链
# option tcpka
########################################
#
######## mysql负载均衡配置 ###############
listen proxy-web
bind 0.0.0.0:5000
mode http
# 负载均衡算法
# static-rr 权重, leastconn 最少连
接, source 请求IP, 轮询 roundrobin
balance roundrobin
# ⽇志格式
option tcplog
# 在 mysql 创建⼀个没有权限的haproxy
⽤户,密码为空。 haproxy⽤户
# create user 'haproxy'@'%'
identified by ''; FLUSH PRIVILEGES;
#option mysql-check user haproxy
# 这⾥是容器中的IP地址,由于配置的是
轮询roundrobin,weight 权重其实没有⽣效
server web0 10.1.1.10:80 check
weight 1 maxconn 2000
server web1 10.1.1.10:81 check
weight 1 maxconn 2000
server web2 10.1.1.10:82 check
weight 1 maxconn 2000
#server MYSQL_3
192.168.130.102:3306 check weight 1
maxconn 2000
# 使⽤keepalive检测死链
# option tcpka
########################################
#

使用haproxy代理部署

1. 在宿主机上安装了haproxy,配置,代理三个的
nginx容器中的web服务,也是直接添加容器的ip地
systemctl start haproxy
2. 创建⼀个haproxy,将配置⽂件导⼊到容器,在容器
中启动haproxy,也是可以的
docker cp
/root/pes/haproxy/haproxy.cfg 容器名
称|id:/usr/local/etc/haproxy/haproxy.
cfg
# 启动
haproxy -f
/usr/local/etc/haproxy/haproxy.cfg
3. 实际的使⽤haproxy容器,只需要将配置⽂件挂载到
指定的⽬录就可以
docker run
-itd #交互 终端 后台
--link=web0 锚定web0
--link=web1
--link=web2
-p5000:5000
-v
#/root/pes/haproxy/haproxy.cfg:/usr/l
ocal/etc/haproxy/haproxy.cfg
# 将配置⽂件挂载到容器中
haproxy:latest #镜像
3. 启动
4. 代理java服务
# 通⽤java容器
docker stop java01
docker rm java01
# 开启三个java容器,名称分别为java0 java1
java2
docker run -itd --name java0 -v
/root/pes/java/src/:/java/src java:v0
docker run -itd --mane java1 -v
/root/pes/java/src/:/java/src java:v0
docker run -itd --name java2 -v
/root/pes/java/src/:/java/src java:v0
#配置haproxy.cfg
listen proxy-java
bind 0.0.0.0:8080
mode http
# 负载均衡算法
# static-rr 权重, leastconn 最少连
接, source 请求IP, 轮询 roundrobin
balance roundrobin
# ⽇志格式
option tcplog
# 在 mysql 创建⼀个没有权限的haproxy
⽤户,密码为空。 haproxy⽤户
# create user 'haproxy'@'%'
identified by ''; FLUSH PRIVILEGES;
#option mysql-check user haproxy
# 这⾥是容器中的IP地址,由于配置的是
轮询roundrobin,weight 权重其实没有⽣效
server j0 java0:8080 check
weight 1 maxconn 2000
server j1 java1:8080 check
weight 1 maxconn 2000
server j2 java2:8080 check
weight 1 maxconn 2000
#server MYSQL_3
192.168.130.102:3306 check weight 1
maxconn 2000
# 使⽤keepalive检测死链
# option tcpka
########################################
#
# 移除haproxy容器,重新创建
docker stop hap0
docker -itd --name hap0 --link=web0 --
link=web1 --link=web2 --link=java0 --
linke=java1 --link=java2 -p8080:8080 -
p8888:8888 -p5000:5000 -v
/root/pes/haproxy/haproxy.cfg:/usr/local
/etc/haproxy/haproxy nginx:latest
5. ab压⼒测试
yum provides *bin/ab
yum -y install httpd-tools

Docker-compose⾃动化部署

1. 安装docker
source docker.sh
2. 安装pip
yum -y install python2-pip
3. 升级pip
pip install --upgrade pip==20.3 -i
https://mirrors.aliyun.com/pypi/simple
4. 安装docker-compose
pip install docker-compose -i
https://mirrors.aliyun.com/pypi/simple
5. 创建pes⽬录以及⼦⽬录
cd
mkdir -p pes/{msyql,java,web}
6. 在pes⽬录下创建并且编辑dockerr-compose.yml⽂件
cd pes
vim docker-compose.yml
version: "3"
servies:
web:
container_name: web0
image: nginx:latest
ports:
- "80:80"
expose:
- 80
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
restart: "always"
java:
mysql:
7. 添加web服务
web:
container_name: web0
image: nginx:latest
ports:
- "80:80"
expose:
- 80
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
restart: "always"
8. docker-compose启动集群
cd pes
docker-compose up -d
9. docker-compose暂停集群
cd pes
docker-compose stop
10. docker-compose移除容器
docker-compose down
11. docker-compose多开容器
docker-compose up -d --scale web=5
        

http://www.kler.cn/news/288429.html

相关文章:

  • [翻译+笔记] 用于视频生成的Diffusion Model
  • codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释
  • 山体滑坡监测预警系统—百科分享
  • 开放式耳机怎么戴?开放式耳机比入耳式耳机舒适吗?
  • leetcode43字符串乘法
  • 梯度提升机:数据分析的强有力工具
  • webpack-01
  • 【HarmonyOS 4.0】网络请求 - axios
  • Spring Boot实现发QQ邮件
  • Windows环境Chrome安装提示无可用更新问题解决【2024年版】
  • 【2024-2025源码+文档+调试讲解】微信小程序的城市公交查询系统
  • 前端js—实现字符串拼接
  • 驱动和固件的区别 — 简单介绍
  • 美国海外仓可以用哪家海外仓系统好?
  • JDS汽车检测主要内容
  • 科研论文必须要了解的25个学术网址
  • 2024数博会技术成果回顾 | KPaaS助力企业数智化转型
  • STM32——Flash闪存
  • 人脸表情识别/情绪识别的参考参数及相关开源产品汇总
  • LLM大模型教程:低使用门槛开源大模型服务框架Ollama
  • 提升效率!ArcGIS中创建脚本工具
  • 压缩大型语言模型 LLMs
  • 智能提醒助理系列-Nginx搭建
  • MySQL高级课程:索引设计与性能优化的最佳实践
  • 为初学者简单易懂地讲解Transformer的基础知识是什么?
  • vue,小程序,uni-app的生命周期
  • 【HarmonyOS 4.0】鸿蒙应用模型
  • [Algorithm][综合训练][kotori和n皇后][取金币][矩阵转置]详细讲解
  • 【JavaEE初阶】HTTP请求(Request)
  • 某付宝又火了!什么样的人能够申请网商贷?个人也能申请吗?