一: 负载均衡技术
1、引入负载均衡技术
负载均衡技术 (load blance) 是一种概念 把资源的使用进行平均分配。
负载均衡:分发流量、请求到不同的服务器。使流量平均分配(理想的状态的)
作用:
服务器容灾 流量分发
主要作用:
①流量分发 请求平均 降低单例压力
其他作用:
②安全 隐藏后端真实服务
③屏蔽非法请求(七层负载均衡)
2、负载均衡分类
-
1)二层负载均衡(mac)
根据OSI模型分的二层进行负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后,再分配后端实际的MAC地址响应
**2)三层负载均衡(ip) **
一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后,再分配后端实际的IP地址响应
3)四层负载均衡(tcp) 网络运输层面的负载均衡
在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器
4)七层负载均衡(http) 智能型负载均衡
根据虚拟的url或IP,主机接收请求,再转向(反向代理)相应的处理服务器
3、常见实现方式
实现方式分类:
①软件级别 性价比高 可控性强
②硬件级别 性能好 价格高 几万到几十万不等
硬件是实现方式:
F5 BIG-IP 四层和七层
软件实现方式:
OSI分层 | 实现方式 |
---|---|
七层 | Nginx、HAProxy |
四层 | LVS、HAProxy、Nginx(1.9版本后) |
四层和七层对比:
二.Nginx负载均衡实验分析
- 通常,一个tomcat站点由于可能出现单点故障以及无法应付过多的客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善web站点架构
- Nginx是一款性能优越的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理以及负载均衡器,来提升整个站点的负载并发能力
三.网络拓扑图以及实验环境
类型 | IP地址 | 系统 | 软件包 |
---|---|---|---|
Nginx服务器 | 192.168.100.140 | centos7 | nginx-1.12.2.tar.gz |
Tomcat服务器1 | 192.168.100.150 | centos7 | apache-tomcat-8.5.16.tar.gz;jdk-8u91-linux-x64.tar.gz |
Tomcat服务器2 | 192.168.100.160 | centos7 | apache-tomcat-8.5.16.tar.gz;jdk-8u91-linux-x64.tar.gz |
客户机 | 192.168.100.10 | Windows10 |
四.具体操作步骤以及验证
-
Tomcat01配置
1.解压jdk的压缩包 systemctl stop firewalld setenforce 0 tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ 2.配置Java环境变量 vim /etc/profile '添加' export JAVA_HOME=/usr/local/jdk1.8.0_91 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 3.加载 JAVA环境变量 source /etc/profile 4.解压Tomcat软件包 tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local 5.修改目录名,便于操作 cd /usr/local mv apache-tomcat-8.5.16/ tomcat 6.创建软链接,优化服务控制方式 ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/ ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/ 7.创建web站点,编辑站点内容,加入测试页面 mkdir -pv /web/webapp1 vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("Welcome Tomcat 01");%> </body> </html> 8.修改Tomcat的server.xml文件,定义一个虚拟主机,并且将网站文件路径指向已经建立的/web/webapp1,在hos段增加context段 [root@tomcat01 ~]# vim /usr/local/tomcat/conf/server.xml //148行 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> //注解:docBase: web应用的文档基准目录 reloadable设置监视“类”是否变化 path=""设置默认“类” 9.关闭安全性功能,开启服务 startup.sh systemctl stop firewalld setenforce 0
-
Tomcat02配置,与01的配置大体相同,index.jsp首页定义的输出Welcome Tomcat 02 这里不同,以示区分
1.解压jdk的压缩包 tar xzvf jdk-8u231-linux-x64.tar.gz -C /usr/local 2.配置JAVA环境变量 vim /etc/profile //追加到末尾 export JAVA_HOME=/usr/local/jdk1.8.0_231 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 3.加载JAVA环境变量 source /etc/profile 4.解压tomcat软件包 tar xzvf apache-tomcat-8.5.50.tar.gz -C /usr/local 5.修改目录名,便于操作 cd /usr/local mv apache-tomcat-8.5.50/ tomcat/ 6.创建软链接,优化服务控制方式 ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/ ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/ 7.创建web站点,编辑站点内容 mkdir -pv /web/webapp1 vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("Welcome Tomcat 02");%> </body> </html> ~ 8.修改Tomcat的server.xml文件,定义一个虚拟主机,并且将网站文件路径指向已经建立的/web/webapp1,在hos段增加context段 [root@tomcat02 ~]# vim /usr/local/tomcat/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> 9.关闭安全性功能,开启服务 shutdown.sh startup.sh systemctl stop firewalld setenforce 0
-
Nginx服务器的配置
1.解压软件包 tar xzvf nginx-1.12.2.tar.gz -C /opt 2.下载相关软件包 yum install pcre-devel zlib-devel gcc gcc-c++ make -y 3.创建nginx的用户 useradd -M -s /sbin/nologin nginx 4.编译安装nginx cd /opt/nginx-1.12.2/ ./configure \ --prefix=/usr/local/nginx \ --user=nginx --group=nginx \ --with-http_stub_status_module \ //启用状态统计 --with-http_gzip_static_module \ //启用gzip静态压缩 --with-http_flv_module //启用flv模块,提供寻求内存使用基于时间的偏移量文件 make && make install 5.编辑nginx的主配置文件 vim /usr/local/nginx/conf/nginx.conf #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream tomcat_server { //添加upstream函数,配置tomcat服务器池名称自定义,但保证和下面调用名称一致即可 server 192.168.100.150:8080 weight=1; //weight代表权重 server 192.168.100.160:8080 weight=2; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; //添加反向代理到设置的tomcat服务器池,这里调用的名称,要和上面生命的函数名一致 } 6.优化服务控制方式 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin 7.检查语法,是否配置正确 [root@nginx ~]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@nginx ~]# 8.关闭安全性功能,开启nginx服务 systemctl stop firewalld setenforce 0 nginx //启用nginx服务 netstat -ntap | grep nginx killall -1 nginx //重启nginx服务 9. 页面测试 访问代理服务器192.168.100.140 多次刷新并查看加权轮询