系统相关
首页 > 系统相关> > nginx部署基于http负载均衡器

nginx部署基于http负载均衡器

作者:互联网

nginx跨多个应用程序实例的负载平衡是一种用于优化资源利用率,最大化吞吐量,减少延迟和确保容错配置的常用技术。

环境介绍

配置nginx负载均衡器因会用到多台服务器来进行,所以下面我会用到docker,具体docker的使用请移步docker实战

安装nginx

具体nginx的安装请参考nginx安装部署

docker安装nginx

配置http负载均衡器

要开始使用NGINX Plus或NGINX开源对一组服务器的HTTP流量进行负载均衡,使用upstream指令定义该组,该指令放置在http上下文中,proxy_pass指令用来转发请求到后端一般指定在loction上下文中
基本配置方法:

http {
    upstream nginx {			#test为组名
        server www.nginx1.com ;		#server用来指定后端服务器的访问地址,一般指定域名、ip、端口,域名和ip二选一,端口可忽略
        server www.nginx2.com weight=5;		#weight指定权重值
        server www.nginx3.com down;			#down用来停止对此服务器的转发
        ......省略其他配置
    }
    server{
		location / {
			proxy_pass http://nginx;		#http://nginx为转发那个组的后端服务器
			......省略其他配置
		}
		......省略其他配置
	}
}

nginx做负载均衡官方提供了4种方法,下面逐一介绍这四种方法:

请求在服务器之间平均分配,同时考虑了服务器权重。默认情况下使用此方法(没有启用它的指令)
默认配置就是Round Robin,配置方法:

http {
   upstream nginx {			#test为组名
       server www.nginx1.com ;		#server用来指定后端服务器的访问地址
       server www.nginx2.com ;		#weight指定权重值
       ......省略其他配置
   }
   server{
   	location / {
   		proxy_pass http://nginx;		#http://nginx为转发那个组的后端服务器
   		......省略其他配置
   	}
   	......省略其他配置
   }
}

将活动连接最少的请求发送到服务器,也是在考虑到服务器的权重问题才设置的这种方法
配置方法:

http {
   upstream nginx {			#test为组名
   	   less_conn ; 
       server www.nginx1.com ;		#server用来指定后端服务器的访问地址
       server www.nginx2.com ;		#weight指定权重值
       ......省略其他配置
   }
   server{
   	location / {
   		proxy_pass http://nginx;		#http:#nginx为转发那个组的后端服务器
   		......省略其他配置
   	}
   	......省略其他配置
   }
}

从客户端IP地址确定向其发送请求的服务器。在这种情况下,可以使用IPv4地址的前三个八位位组或整个IPv6地址来计算哈希值。该方法保证了来自同一地址的请求将到达同一服务器,除非它不可用。
配置方法:

http {
   upstream nginx {			#test为组名
   	   ip_hash ; 
       server www.nginx1.com ;		#server用来指定后端服务器的访问地址
       server www.nginx2.com ;		#weight指定权重值
       ......省略其他配置
   }
   server{
   	location / {
   		proxy_pass http://nginx;		#http:#nginx为转发那个组的后端服务器
   		......省略其他配置
   	}
   	......省略其他配置
   }
}

向其发送请求的服务器是根据用户定义的键确定的,该键可以是文本字符串,变量或组合。
配置方法:

http {
  upstream nginx {			#test为组名
  	  hash $request_uri consistent;
      server www.nginx1.com ;		#server用来指定后端服务器的访问地址
      server www.nginx2.com ;		#weight指定权重值
      ......省略其他配置
  }
  server{
  	location / {
  		proxy_pass http://nginx;		#http://nginx为转发那个组的后端服务器
  		......省略其他配置
  	}
  	......省略其他配置
  }
}

标签:均衡器,http,com,nginx1,server,nginx,ubuntu,root
来源: https://www.cnblogs.com/kuiyajia/p/12047531.html