# upstream
在多個應用實例間做負載均衡是一個被廣泛使用的技術,用于優化資源效率,最大化吞吐量,減少延遲和容錯。nginx可以作為一個非常高效的HTTP(7層)負載均衡器來分發請求到多個應用服務器,并提高web應用的性能,可擴展性和可靠性。
nginx支持以下負載均衡機制(或者方法):
* round-robin/輪詢: 到應用服務器的請求以round-robin/輪詢的方式被分發
* least-connected/最少連接:下一個請求將被分派到活動連接數量最少的服務器
* ip-hash/IP散列: 使用hash算法來決定下一個請求要選擇哪個服務器(基于客戶端IP地址)
## 默認輪詢(加權)
```
http {
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
```
在這個配置中,每5個新請求將會如下的在應用實例中分派: 3個請求分派去srv1,一個去srv2,另外一個去srv3.
## 最小連接數
當某些請求需要更長時間來完成時,最少連接可以更公平的控制應用實例上的負載。
```
upstream myapp1 {
least_conn;
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
```
## IP Hash
請注意,在輪詢和最少連接負載均衡方法中,每個客戶端的后續請求被分派到不同的服務器。對于同一個客戶端沒有任何方式保證發送給同一個服務器。如果需要將一個客戶端綁定給某個特定的應用服務器,那么可以使用ip-hash負載均衡機制。
```
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
```
- 簡介
- php
- php基礎
- php常用數組函數
- php常用字符串函數
- php魔術方法
- php高階
- swoole
- php優化
- workerman
- PHP底層運行機制和原理
- php框架
- laravel
- 前端
- react
- 爬蟲
- Scrapy
- Linux
- IO復用
- nginx
- nginx進程工作原理
- nginx配置
- 正向代理反向代理
- UPSTREAM
- SERVER
- HTTPS
- queue
- kafka
- redis
- DB
- mysql
- 存儲引擎
- 索引
- 鎖
- 觸發器
- 分庫分表
- 三范式
- 負載均衡
- 事務
- EXPLAN
- mysql死鎖
- mysql索引覆蓋與回表
- mysql聚簇索引與非聚簇索引
- NoSql
- memcache
- redis
- mongo
- 網絡協議
- tcp與udp
- https與http
- 架構
- LNMP架構下HTTP請求的調用次序
- 數據結構&算法
- 基礎數據結構
- Linked List
- array
- stack
- queue
- tree
- hash
- heap
- 常見算法
- 排序算法
- 查找算法
- 其他
- php的一些坑
- 常問面試題
- 技術面試最后反問面試官的話
- hr
- redis緩存擊穿、穿透、雪崩
- 面試中回答的不好的問題
- web攻擊防范