负载均衡

What?

单台服务器有性能等瓶颈,请求被合理分配到多台server上,以使能够处理更多请求

nginx 集群 lvs keepalived f5

nginx 官方测试并发支承5万并发 阿里开源的tengine 和nginx能够完美兼容

nignx负载均衡机制

  • 轮训(默认)

    按照配置的服务列表一个个分配

    • 缺点
      • 同一个用户,不同请求会分配到不同服务器
  • 加权负载均衡

    对性能不一致的机器 给予不同的权重,是性能好的服务器能够处理更多

  • 最少连接数

    分配给连接数更少的服务器

  • ip-hash

    保证会话持久 - 缺点 - 如果针对用户是企业用户,一般都是一条宽带外网ip都是一样的,这样的用户都会被分配到同一个server上,达不到负载均衡的效果

Where?

应用服务器前可以加nignx负载,如果nginx需要负载则需要在nginx前加lvs服务 参考 lvs

Why?

How?

轮训nginx配置

1
2
3
4
5
6
7
8
9
10
11
http {
upstream sjcluster{
server sj-node2;
server sj-node3;
}
server {
listen 80;
server_name node2;
location / {
proxy_pass http://sjcluster
}

权重配置

1
2
3
4
5
6
7
8
9
10
11
http {
upstream sjcluster{
server sj-node2 weight=3;
server sj-node3;
}
server {
listen 80;
server_name node2;
location / {
proxy_pass http://sjcluster
}

最小连接数配置

1
2
3
4
5
6
7
8
9
10
11
12
http {
upstream sjcluster{
least_conn;
server sj-node2;
server sj-node3;
}
server {
listen 80;
server_name node2;
location / {
proxy_pass http://sjcluster
}

ip-hash配置

1
2
3
4
5
6
7
8
9
10
11
12
http {
upstream sjcluster{
ip_hash;
server sj-node2 ;
server sj-node3;
}
server {
listen 80;
server_name node2;
location / {
proxy_pass http://sjcluster
}

参考