Nginx的安装配置在之前的文章中已经介绍过了,点击跳转
负载均衡简介
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
Nginx负载均衡策略
目前nginx负载策略共两大类,分别是:内置策略和扩展策略。 内置策略有四种:轮询策略、加权轮询策略、 最少连接策略和ip_hash策略。默认情况下内置策略会编译进Nginx的内核,只需要在nginx配置中指明参数即可。 扩展策略有三种:fair 策略,url_hash 策略,sticky 策略。
- 轮询策略
Nginx的默认策略,把每个请求依次按顺序分配给每个服务器,如果其中某个服务器宕机,会自动剔除。
http {
upstream myserver{
server server1:8888 max_fails=3 fail_timeout=3s ;
server server2:8888 max_fails=3 fail_timeout=3s ;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
- 加权轮询策略
在轮询策略的基础上加权重,即根据权重比例,每个服务器受访的概率不同,权重越大,受访概率越高,此方法适用于服务器配置不同,高配置服务器可设置较高权重。
http {
upstream myserver{
server server1:8888 weight=2;
server server2:8888 weight=4;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
- 最少连接策略
Nginx会根据当前所有服务器的繁忙程序(连接数),把当前请求分配给连接数最少的服务器,从而保证了不会过度的请求某一个服务器,此方式适用于当一些请求会占用较大资源时。
http {
upstream myserver{
least_conn;
server server1:8888;
server server2:8888;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
- ip_hash策略
上面提到的三种方式,可能会把同一个用户的每一次请求分发到不同服务器上,这时候就需要我们自己来维护session机制,因为不同的服务器是不会共享session的,而ip_hash策略通过维护访问者IP的hash使每一次请求都分发到同一个服务器,除非某个服务器宕机。
http {
upstream myserver{
p_hash;
server server1:8888;
server server2:8888;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
- fair 策略
此策略与最少连接类似,但是fail策略是根据服务器相应时间来判断服务器繁忙程度,然后将请求分发到相应时间最短的服务器,但是这种策略自适应性很强,实际网络情况是很复杂的,因此慎用。
http {
upstream myserver{
server server1:8888;
server server2:8888;
fair;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
- url_hash 策略
根据服务器维护的url_hash来决定分发服务器,即同一个url会分发到同一个服务器。
http {
upstream myserver{
hash $request_uri;
server server1:8888;
server server2:8888;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
- sticky 策略
保证一个客户端只和一个服务器进行通讯,保存长连接,当会话结束后再选择一个服务器,以此来保证压力平衡。注:浏览器不支持cookie,sticky不生效。
http {
upstream myserver{
sticky;
server server1:8888;
server server2:8888;
}
server {
listen 80;
server_name mydomain;
location / {
proxy_pass http://myserver;
}
}
}
本文暂时没有评论,来添加一个吧(●'◡'●)