云计算技术.七层负载均衡项目实战

举报
tea_year 发表于 2025/02/27 20:24:44 2025/02/27
64 0 0
【摘要】 主流7层负载均衡器介绍 Nginx:作为最流行的开源7层负载均衡器之一,讲解了其安装、配置、高级功能(如SSL终止、缓存、访问控制)及实战案例。 HAProxy:详细介绍了HAProxy的配置、使用场景,特别是其在高并发环境下的性能优势和灵活的ACL(访问控制列表)配置。 Traefik & Envoy:介绍了这两款现代云原生负载均衡器的特点,以及它们在微服务架构中的

七层负载均衡项目实战

项目说明:

实现tomcat多实例负载均衡

1、Tomcat 多实例部署

多虚拟主机:nginx 多个Server标签(域名,ip,端口) 进程数量固定 master+worker

多实例(多进程):同一个程序启动多次,分为两种情况:

第一种:一台机器跑多个站点;

第二种:一个机器跑一个站点多个实例,配合负载均衡

1、复制程序文件

[root@qfedu.com ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.27/bin/apache-tomcat-8.0.27.tar.gz
[root@qfedu.com ~]# cd /application/tools/
[root@qfedu.com ~]# tar xf apache-tomcat-8.0.27.tar.gz
[root@qfedu.com ~]# cp -a apache-tomcat-8.0.27 tomcat8_1
[root@qfedu.com ~]# cp -a apache-tomcat-8.0.27 tomcat8_2

2、修改端口,以启动多实例。多实例之间端口不能一致

[root@qfedu.com ~]# sed -i 's#8005#8011#;s#8080#8081#' tomcat8_1/conf/server.xml
[root@qfedu.com ~]# sed -i 's#8005#8012#;s#8080#8082#' tomcat8_2/conf/server.xml
[root@qfedu.com application]# diff tomcat8_1/conf/server.xml tomcat8_2/conf/server.xml
22c22
< <Server port="8011" shutdown="SHUTDOWN">
---
> <Server port="8012" shutdown="SHUTDOWN">
67c67
<          Define a non-SSL/TLS HTTP/1.1 Connector on port 8081
---
>          Define a non-SSL/TLS HTTP/1.1 Connector on port 8082
69c69
<     <Connector port="8081" protocol="HTTP/1.1"
---
>     <Connector port="8082" protocol="HTTP/1.1"
75c75
<                port="8081" protocol="HTTP/1.1"
---
>                port="8082" protocol="HTTP/1.1"

3、将配置好的tomcat程序打包,以备之后使用

[root@qfedu.com ~]# tar zcf muti_tomcat8.tar.gz ./tomcat8_1 ./tomcat8_2

4、启动tomcat多实例

[root@qfedu.com ~]# /application/tomcat8_1/bin/startup.sh 
[root@qfedu.com ~]# /application/tomcat8_2/bin/startup.sh

5、检查端口是否启动

[root@qfedu.com tomcat8_1]# netstat -lntup |grep java
tcp6   0   0 127.0.0.1:8011    :::*    LISTEN   31906/java
tcp6   0   0 127.0.0.1:8012    :::*    LISTEN   31932/java
tcp6   0   0 :::8080           :::*    LISTEN   31812/java
tcp6   0   0 :::8081           :::*    LISTEN   31906/java
tcp6   0   0 :::8082           :::*    LISTEN   31932/java
tcp6   0   0 127.0.0.1:8005    :::*    LISTEN   31812/java
tcp6   0   0 :::8009           :::*    LISTEN   31812/java

6、将每个实例的网页进行区分

[root@qfedu.com ~]# echo 8081 >>/application/tomcat8_1/webapps/ROOT/index.jsp 
[root@qfedu.com ~]# echo 8082 >>/application/tomcat8_2/webapps/ROOT/index.jsp

7、在浏览器访问,进行测试

检查多实例的启动

http://10.0.0.17:8082

1190037-20171127162343831-1147071210.png

http://10.0.0.17:8081

1190037-20171127162353581-1370700278.png

2、Tomcat负载均衡集群

1、负载均衡器说明

[root@qfedu.com ~]# cat /etc/redhat-release 
CentOS release 7.4 (Final)
[root@qfedu.com ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@qfedu.com ~]# getenforce 
Disabled
[root@qfedu.com ~]# /etc/init.d/iptables status
iptables: Firewall is not running.

2、配置负载均衡器

1、备份原配置文件
[root@qfedu.com ~]# mv  /application/nginx/conf/nginx.conf{,.bak}
[root@qfedu.com ~]# egrep -v '#|^$' /application/nginx/conf/nginx.conf.default  > /application/nginx/conf/nginx.conf
2、配置文件内容
[root@qfedu.com ~]# cat /application/nginx/conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream web_pools {
        server 10.0.0.17:8081;
        server 10.0.0.17:8082;
    }
​
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.jsp index.htm;
        proxy_pass http://web_pools;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
3、重启nginx服务
[root@qfedu.com ~]# /application/nginx/sbin/nginx  -s stop 
[root@qfedu.com ~]# /application/nginx/sbin/nginx

3、使用命令进行访问测试

使用curl 命令进行测试,tail进行关键字提取

[root@qfedu.com ~]# curl -s 10.0.0.5|tail -1
8081
[root@qfedu.com ~]# curl -s 10.0.0.5|tail -1
8082

使用curl 命令进行测试,awk 进行关键字提取

[root@qfedu.com ~]# curl -s 10.0.0.5|awk 'END{print}'
8082
[root@qfedu.com ~]# curl -s 10.0.0.5|awk 'END{print}'
8081

使用curl 命令进行测试,sed进行关键字提取

[root@qfedu.com ~]# curl -s 10.0.0.5|sed -n '$p'
8082
[root@qfedu.com ~]# curl -s 10.0.0.5|sed -n '$p'
8081

4、在浏览器上进行访问测试

1190037-20171127162541722-347092218.png

1190037-20171127162551550-1844076575.png

建议使用google浏览器chrome 的隐身模式进行访问,使用ctrl+f5 进行强制刷新

总结

内容总结

  1. 负载均衡基础

    • 定义与作用:负载均衡通过分配网络流量或应用请求到多个服务器上,确保没有单个服务器过载,从而提升系统的整体性能和可靠性。
    • 类型对比:详细对比了4层(传输层,如LVS)与7层(应用层,如Nginx、HAProxy)负载均衡的工作原理、优缺点及适用场景。
  2. 7层负载均衡技术深度剖析

    • 工作原理:深入讲解了7层负载均衡如何基于应用层协议(如HTTP、HTTPS)进行请求分发,包括URL路径、主机头、cookie等关键信息的获取与处理。
    • 算法策略:介绍了轮询、最少连接、源地址哈希、加权轮询等多种负载均衡算法及其适用场景,以及如何根据业务需求选择合适的算法。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。