上一篇讲了nginx的入门配置及命令,今天我们说一下nginx的负载均衡
./nginx -s stop#停止nginx
./nginx-s quit#安全退出
./nginx -s reload#修改了文件之后重新加载该程序文件
ps aux|grep nginx#查看nginx进程
sbin/nginx -c /conf/nginx.vonf #指定配置文件启动
http {
upstream [你的负载均衡机制名称,随便设置一个就好] {
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen [nginx监听端口];
server_name [head中的host对应的值]
location / {
proxy_pass http:// [你的负载均衡机制名称,对应上面upstream的值];
}
}
}
1.轮询(Round Robin默认)
轮询是最常见的一种负载均衡策略。Nginx默认使用轮询策略,将请求按照顺序分配到每个服务器,当请求到达最后一个服务器后,再从第一个服务器继续轮询。,如果后端服务器挂了,则自动剔除。
upstream backend {
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
2.权重(Weighted Load Balancing)
指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况
upstream backend {
server [ip地址]:[端口值] weight=3;
server [ip地址]:[端口值] weight=2;
server [ip地址]:[端口值] weight=1;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
3 .IP Hash
IP Hash是一种漂亮的负载均衡策略,具有Session保持的优点。算法的基本思路是通过对客户端的IP地址取Hash值,将此Hash值与服务器列表中的IP地址的Hash值进行比较,找到具有匹配Hash值的服务器。这样相同IP的请求总是被转发到同一台后端服务器处理,保证Session信息在同一台服务器上处理。
upstream backend {
ip_hash; #使用IP hash策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
4. 最少连接(Least Connections)
nginx会尽量不让负载繁忙的应用服务器上负载过多的请求,相反的,会把新的请求发送到比较不繁忙的服务器。
upstream backend {
least_conn; #使用Least Connections策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
5. 随机(Random)
Random会将请求随机发送到后端服务器上,这种策略比较简单,但是不保证对后端服务器的负载均衡性
upstream backend {
random; #使用Random策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
6. URL Hash
URL Hash会根据请求的URL的Hash值来将请求发送到后端服务器。相同URL的请求总是被转发到同一台后端服务器处理,从而保证Session信息在同一台服务器上处理。
upstream backend {
hash $request_uri; #使用URL Hash策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}