什么是负载均衡
1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。
什么是Nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
Nginx的作用?
nginx能做反向代理,那么什么是反向代理呢,举个栗子,我想在本地使用 www.xxx.com 的域名去访问 www.taobao.com。那么这个时候我们就可以通过nginx去实现。
再者,nginx能实现通过统一域名进入各个分支项目,nginx对请求进行分发,使访问请求达到均衡的目的,解决单台服务器压力。
nginx可以解决跨域问题,也可作为隔离层。
了解Nginx配置文件的整体结构
a.全局块
该部分配置主要影响全局Nginx:
配置运行参数:Nginx服务器用户组 woeker process数 Nginx进程PID存放路径 错误日志的存放路径配置文件的引入
b.events 块
该部分配置主要影响Nginx 服务器与用户的网络连接: 设置网连接的序列化书否允许同时接收多个网络连接事件驱动模型的选择最大的连接数的配置
c.http块
定义MIMI-Type自定义服务日志允许sendfile方式传输文件连接超时时间单连接请求数上限
d.server块
配置网络监听
1.基于端口的虚拟主机配置
2.基于名称的虚拟主机配置
3.基于ip的虚拟主机配置
e.location块
location配置请求根目录配置更改location 的URL 网络默认首页配置
我们可以直接在宝塔上进行nginx的安装,宝塔上nginx和apache不能并存,当我们在宝塔上安装完nginx后可以直接去进行相关的配置
server
{
listen 8081;
server_name 175.24.123.153;
index index_8081.html;
root /www/server/phpmyadmin;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
server
{
listen 8082;
server_name 123.207.211.151;
index index_8082.html ;
root /www/server/phpmyadmin;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
include /www/server/panel/vhost/nginx/*.conf;
upstream myServer {
server 175.24.123.153:8081;
server 175.24.123.153:8082 weight=10;
server 123.207.211.151:8080 weight=5;
}
server {
listen 8080;
listen [::]:8080;
server_name _;
location / {
proxy_pass http://myServer;
proxy_set_header Host $host;
proxy_set_header X-Read-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
然后我们应该去系统默认访问的文件夹中去设置指定默认访问的文件名
当我们给我们设置的服务指定了端口号之后要进行端口的开放
节点说明:
一、在http节点里添加:
定义负载均衡设备的 Ip及设备状态
upstream myServer {
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
二、在需要使用负载的Server节点下添加
proxy_pass http://myServer;
upstream 每个设备的状态:
1、down 表示当前的server暂时不参与负载
2、weight 默认为1.weight越大,负载的权重就越大。
3、max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4、fail_timeout:max_fails 次失败后,暂停的时间。
5、backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
软件负载均衡软件有Nginx、LVS、HaProxy等是目前使用最广泛的三种负载均衡软件。
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5)、url_hash(第三方)
配置不同的ip服务,配置方式是一样的,然后只要在upstream myServer中连接一下就好了
然后就是本地的负载均衡的配置
进行配置
只要路径写对,结合到项目中也可以使用本地ip127.0.0.1+端口号进行访问
server{
listen 8081;
server_name _;
location / {
root ../../www/month6;
index index_8081.html index_8081.php;
}
}
server{
listen 8082;
server_name _ ;
location / {
root html;
index index_8082.html;
}
}
server{
listen 8083;
server_name _ ;
location / {
root html;
index index_8083.html;
}
}
upstream myServer {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 weight=1;
}
server {
listen 8080;
listen [::]:8080;
server_name _;
location / {
proxy_pass http://myServer;
proxy_set_header Host $host;
proxy_set_header X-Read-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
最后启动小皮,关闭apache