使⽤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
        
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值