反向代理与负载均衡
反向代理: 明确知道要访问哪个网站,借助代理网站来访问就是正向代理;第三方服务器为我们提供了访问服务器集群的内容,但我们不知道是哪台服务器提供的内容,这种代理方式称为反向代理。
负载均衡: 建立很多个服务器,这些服务器组成一个服务器集群,当有请求时中间服务器选择一个压力较小的服务器,然后将请求引入该选择的服务器,这样每个服务器压力趋于平衡,这就是负载均衡。负载均衡是通过反向代理来实现的。
Nginx 负载均衡的实现
1.新建一个配置文件fzjh.conf中
touch fzjh.conf
2.编辑配置文件
#设置用户
user root;
#工作衍生的进程数
worker_process 4;
#设置最大连接数
events{
worker_connections 2048;
}
#http部分是负载均衡服务器最重要的部分
http{
#设置负载均衡服务器待选列表
#test 服务器列表名称
upstream test{
#服务器地址可以是外网的也可以是内网的
server 192.168.1.1;
server 192.168.1.2;
}
server{
#监听网站的端口
listen:80;
#location /表示 监听网站的是根目录
location / {
proxy_pass http://test;
}
}
}
3.加载配置文件
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf
HTTP Upstream 模块
Upstream模块是Nginx服务器的一个重要模块, Upstream模块在实现 在轮询和客户端ip之间实现后端的负载均衡(即轮询算法)。常用指令有:
ip_hash指令
采用ip_hash指令,如果客户端请求已经访问了服务器A并登陆,那么第二次请求时,会将该请求通过哈希算法自动定位到该后端服务器中,而不是重新分配到别的服务器中。
user root;
worker_process 4;
events{
worker_connections 2048;
}
http{
upstream test{
#设置ip_hash; 将容易个用户引向同一个后端服务器
ip_hash;
server 192.168.1.1;
server 192.168.1.2;
}
server{
listen:80;
#location
location / {
proxy_pass http://test;
}
}
}
server指定
server指定主要用于指定服务器名称和参数。
user root;
worker_process 4;
events{
worker_connections 2048;
}
http{
upstream test{
#weight=2 设置服务器权重 默认是1
server 192.168.1.1 weight=2;
server 192.168.1.2;
}
server{
listen:80;
#location
location / {
proxy_pass http://test;
}
}
}
upstream指令
upstream指令主要用于设置一组在peoxy_pass和fastcgi_pass指令中使用代理服务器,默认负载均衡方式为轮询。
其他负载均衡的方法
负载均衡的核心就是建立服务器集群,负载均衡的实现分为硬件实现和软件实现两种方式。
优缺点:
硬件实现:运行效率非常高,但成本也非常高。
软件实现:运行效率不如硬件,成本也相对低很多。
Nginx就是通过软件的方式。