实训day41(9.2)

news2024/12/24 21:22:31

[root@localhost ~]# docker stop 30               //停止nginx容器
30
[root@localhost ~]# docker ps --all
CONTAINER ID   IMAGE          COMMAND                   CREATED        STATUS                      PORTS                                                  NAMES
b3cda6d78880   mysql:5.7.44   "docker-entrypoint.s…"   16 hours ago   Up 4 minutes                0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   vigilant_cray
a425c7feff30   java:v0        "/usr/local/jdk/bin/…"   2 days ago     Up 4 minutes                0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              upbeat_lamarr
3035a713b57e   nginx:latest   "/docker-entrypoint.…"   3 days ago     Exited (0) 30 seconds ago                                                          compassionate_mayer
[root@localhost ~]# docker rm 30                        //删除nginx容器
30

1.创建三个nginx容器
说明:

1.端口不能映射80
2.现在在远程是无法访问nginx服务的,现在创建nginx服务的集群,这个集群被haproxy代理,创建三个nginx容器,一个haproxy容器,必须给nginx容器指定名称,如果web0,web1,web2没有名称,就无法被link
[root@localhost ~]# docker run -itd --name=web0 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest 
83f463c242e492dbf2298fc04d1555b2d2eead5288c31a87737138f3beb48e30
[root@localhost ~]# docker run -itd --name=web1 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest 
2f40af73a44c6b251a5be480a49c8c2b09af1f7bc67346b44f5a733dd6485a6d
[root@localhost ~]# docker run -itd --name=web2 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest 
457b47245dfff34dbf6dee787152e144087fbf18437eddfabc5fdc22735004ac

2.拉取haproxy镜像
https://www.haproxy.com/documentation/haproxy-enterprise/getting-started/tutorials/docker-tutorial/#sidebar

[root@localhost ~]# docker pull haproxy                         //拉取haproxy镜像
[root@localhost ~]# docker images                                  //最新版
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
java         v0        46529fd5a4b2   2 days ago     774MB
nginx        latest    5ef79149e0ec   2 weeks ago    188MB
haproxy      latest    4e5bebb0fd91   7 weeks ago    103MB
mysql        5.7.44    5107333e08a8   8 months ago   501MB
centos       latest    5d0da3dc9764   2 years ago    231MB
[root@localhost ~]# yum -y install haproxy                 //在宿主机上下载haproxy,用来测试并且网haproxy容器中传文件,因为刚刚拉取的haproxy镜像小,其中许多命令都没有

3.创建haproxy容器

[root@localhost ~]# docker run -itd -p5000:5000 haproxy:latest /bin/bash      //创建haproxy容器
b6afb365f151e3f05e0cfaf357acf4d4c9a408079cfd87cb268b41637b8da81a
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg               //本机编辑haproxy配置文件
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 172.17.0.5:80 check weight 1 maxconn 2000
        server web1 172.17.0.7:80 check weight 1 maxconn 2000
        server web2 172.17.0.6:80 check weight 1 maxconn 2000
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################
[root@localhost ~]# docker cp /etc/haproxy/haproxy.cfg b6:/usr/local/etc/haproxy/          //将该文件传给haproxy容器
Successfully copied 5.12kB to b6:/usr/local/etc/haproxy/
[root@localhost ~]# docker attach b6                           //进入容器
haproxy@b6afb365f151:~$ haproxy -f /usr/local/etc/haproxy/haproxy.cfg       //启动服务,因为没有写入守护进程,所以只能用这条指令
浏览器访问:192.168.1.80:5000

4.link

容器重启以后,ip地址会发生变化,使用link连接他们,这样的话无论web0,web1,web2的ip为多少,都能启动服务

[root@localhost ~]# docker stop b6
[root@localhost ~]# docker rm b6

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg 

[root@localhost ~]# docker run -itd --link=web0 --link=web1 --link=web2 -p5000:5000 -v /etc/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest       //挂载本机的haproxy配置文件
f614ab4d4b7e10bf2ccb88ad8d0acece4189a629923351a68a431d82dd747f16

浏览器访问:192.168.1.80:5000
5.添加统计页面

[root@localhost ~]# docker stop f6
f6
[root@localhost ~]# docker rm f6
f6
[root@localhost ~]# docker run -itd --link=web0 --link=web1 --link=web2 -p5000:5000 -p8888:8888 -v /etc/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest            //把配置文件中关于统计页面的端口也映射出去 
91c0a31435939056d6fe0cf20fd6a3d53854b27a76f5f6c1bc54e903609c2529

浏览器访问:192.168.1.80:8888/dbs         用户名:admin     密码:123456

6.重启docker测试

[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker start upbeat_lamarr vigilant_cray web0 web1 web2 eloquent_newton        //haproxy这个容器必须在web0,web1,web2之后启动,因为被link的容器要先启动
upbeat_lamarr
vigilant_cray
web0
web1
web2
eloquent_newton

浏览器测试:192.168.1.80:8888/dbs    

练习:使用haproxy代理java
[root@localhost ~]# docker stop a4                     //停掉原来的java容器,然后创建三个java容器
a4
[root@localhost ~]# docker run -itd --name=java0 java:v0 /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
fb37b57acebd452fb44d95142888b3ce52ff347a387cae6b2499cf75030c9715
[root@localhost ~]# docker run -itd --name=java1 java:v0 /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
a0a9ddf1b47db327eeb2ef8a2ff3915b8d274cc7f27e802b87f71fa068bb3a8e
[root@localhost ~]# docker run -itd --name=java2 java:v0 /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
0f6c041fd2dafa98c67f24bb266c468d458f03bf73785c2e6f40c5f2ec2a4592
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg             //把java的加进去
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 web0:80 check weight 1 maxconn 2000
        server web1 web1:80 check weight 1 maxconn 2000
        server web2 web2:80 check weight 1 maxconn 2000
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################


######## java负载均衡配置 ###############
listen proxy-java
        bind 0.0.0.0:8080
        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 java0 java0:8080 check weight 1 maxconn 2000
        server java1 java1:8080 check weight 1 maxconn 2000
        server java2 java2:8080 check weight 1 maxconn 2000
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################
[root@localhost ~]# docker stop 91                     //停掉之前的haproxy容器
91
[root@localhost ~]# docker run -itd --link=web0 --link=web1 --link=web2 --link=java0 --link=java1 --link=java2 -p8080:8080 -p5000:5000 -p8888:8888 -v /etc/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest      //把java容器也link了,端口映射出去
04e061227170e8bc9b3a2c94b3fafcfba02084ccdffde8ac176d6ce70622330c
[root@localhost ~]# systemctl restart docker             //重启docker
[root@localhost ~]# docker start java0 java1 java2 web0 web1 web2 vigilant_cray vibrant_noether      //启动所有容器
java0
java1
java2
web0
web1
web2
vigilant_cray                             //mysql容器
vibrant_noether                      //haproxy容器
浏览器测试

7.ab压力测试:
[root@localhost ~]# yum provides */bin/ab                   //查找哪个包下有ab这个命令
httpd-tools-2.4.6-99.el7.centos.1.x86_64 : Tools for use with the Apache HTTP Server
源    :@updates
匹配来源:
文件名    :/usr/bin/ab

[root@localhost ~]# yum -y install httpd-tools.x86_64                   //安装它

[root@localhost ~]# ab -n 100 -c 10 http://localhost:5000/         //测试,-n指定总共要发送的请求数,-c指定并发请求的数量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银河麒麟v10-sp3 安装Tomcat10最新版

tomcat官方地址---Apache Tomcat - Apache Tomcat 10 Software Downloads 下载这个即可 Core: 含义:Core代表Tomcat的核心程序,即Tomcat的正式二进制发布版本。这是大多数用户做开发或学习时应该下载的版本。用途:包含了Tomcat服…

53.x86游戏实战-XXX获取人物状态

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

一套高效、稳定的自卸车自动充电系统

随着工业自动化和智能化水平的不断提升,无人化作业已成为现代生产线的必然趋势。在山西地区的室内生产条件下,富唯智能凭借其在自卸车充电系统领域的深厚积累,成功设计出一套高效、稳定的自卸车自动充电系统,为工业领域带来革命性…

GeoScene Pro教程(003):手机拍摄带有坐标的照片批量上图到GeoScenePro

文章目录 1、创建【地图】工程2、添加底图3、照片转点4、更改符号5、设置时间动画1、创建【地图】工程 2、添加底图 选中【地图】选项卡下的【底图】按钮 ,选择适合的底图。 3、照片转点 1、查看图片GPS,右键【属性】,这样就可以确保照片可以转点 2、选中工具栏的【分析】…

公司注册资本金验资出具验资报告的看法

验资报告(Capital Verification Report)是注册会计师根据《中国注册会计师审计准则第1602号-验资》的规定,在对被审验单位的股东(投资者、合伙人、主管部门等)出资情况实施审验工作的基础上,所出…

typedef关键字讲解

目录: 1. typedef关键字 2. ui的位置 3.ui的使用 很多人都见过typedef,但是少有人知道它的作用,其实它的作用就是让关键词简单化 比如说当我们用到 unsigned int 时,每次都要打印这么长的关键词,十分耗费时间 有没…

Electron桌面应用与文件路径处理:从Git、SourceTree到TortoiseGit的安装与配置

更多内容前往个人网站:孔乙己大叔 在开发Electron桌面应用程序时,正确处理文件路径是一个至关重要的环节。特别是当涉及到需要调用外部程序(如Git、SourceTree或TortoiseGit)时,确保这些程序安装在正确的位置&#xff…

超越卷积滤波器,HyCoT利用Transformer捕捉高光谱图像的全局依赖性 !

近年来,基于学习的高光谱图像(HSI)压缩模型的开发引起了大量关注。现有的模型主要使用卷积滤波器,仅捕捉局部依赖性。 此外,它们通常会带来高昂的训练成本,并具有较大的计算复杂性。 为了解决这些问题&…

【全能型AI“草莓”来袭】探索未来AI市场的多元化与边界

🐟作者简介:一名大三在校生,喜欢编程🪴 🐡🐙个人主页🥇:Aic山鱼 🐠WeChat:z7010cyy 🦈系列专栏:🏞️ 前端-JS基础专栏✨前…

C语言基础(三十三)

1、链表排序之归并排序与线性搜索 测试代码&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h>// 链表节点结构体 typedef struct Node {int data;struct Node *next; } Node;// 插入节点到链表末尾 Node* insertNode(Node *hea…

2.6 时序与总线操作

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

创建一个Spring MVC项目(配置,导入依赖,以及前端控制器)

Tomcat&#xff08;10.1.28&#xff09;配置 详细讲解&#xff01; 链接https://blog.csdn.net/or77iu_N/article/details/141266535?spm1001.2014.3001.5502 1、创建 Java Web 项目 File -> New -> Project 2、导入 Spring MVC 相关依赖 <dependency> <gro…

docker-compose 启动的harbor页面能登录,但是不能推送镜像

问题现象&#xff1a; docker-compose 安装的harbor&#xff0c;页面可以正常打开&#xff0c;但是不能推送镜像。 报错信息提示&#xff1a;connect: connection refused 故障原因&#xff1a; harbor.yml 中的external_url参数写错。这个是提供外部访问。页面请求地址和…

macos下的 sed命令安装与使用 gnu-sed

sed命令是我们在linu类系统中非常重要的一个命令, 但是在macos下面默认是没有sed命令的, 不过我们可以通过brew install gnu-sed ( 或者通过 sudo port install gsed )这个软件包来获得这个命令 GNU sed 命令安装 下面2种方式,选择一种安装即可 # brew安装 brew install gn…

论文《Generalized Focal Loss》阅读笔记

论文作者对自己文章的中文介绍&#xff1a;这里&#xff0c;所以本人结合论文进行一些简单记录。 存在的问题 之前的工作在训练阶段和推理阶段对最终得分的计算有些问题&#xff0c;即训练分开计算分类得分和定位得分&#xff0c;但是推理时又相乘得到最终的得分进行NMS&#…

PHP 项目流水线部署与错误问题解决

在现代软件开发中&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已成为确保代码质量和加快发布速度的关键实践。本文将介绍如何构建一个 PHP 项目的流水线部署&#xff0c;涵盖从代码提交到生产环境的自动化流程。 #### 1. 什么是流水线…

Amazon SPAPI PWC(普华永道)审计问题流程

如之前德勤审计记录&#xff0c;SP-API审计是public开发者必然会面临的一个流程&#xff1a;https://blog.csdn.net/MarcoMaJF/article/details/141825436 其流程和德勤审计差别不大&#xff0c;流程如下&#xff1a; PWC SP-API审计 1.开发者邮箱收到审计邮件. 2.回复确认会…

使用神卓互联内网穿透搭建微信开发回调环境

在开发微信应用的过程中&#xff0c;往往需要搭建一个本地开发环境来测试和调试代码。然而&#xff0c;由于微信平台需要通过公网访问开发者的服务器来进行消息推送和事件通知&#xff0c;这就要求开发者必须有一个可公开访问的域名或者IP地址。对于不具备公网IP的开发者来说&a…

问题合集更更更之vant组件适配桌面端

前言 &#x1f44f;问题合集更更更之vant组件适配桌面端~ &#x1f947;记得点赞关注收藏&#xff01; 1.问题描述 在pc端&#xff08;桌面端&#xff09;使用vant组件时&#xff0c;清除按钮不生效&#xff1f;除此之外&#xff0c;下拉框等滑动事件也无法正确触发。 注&…

Win10桌面出现Removable Storage Devices文件夹无法删除

最近在 coding 的时候&#xff0c;电脑桌面上突然间蹦出来一个 文件夹 “Removable Storage Devices” , 可移除的存储设备&#xff1f;&#xff0c;但是我们也没有放什么东西呀&#xff0c;就有点蒙圈了。 最后在网上百度了好久才 get 到这个方法&#xff0c;成功解决。 Win…