负载均衡
负载均衡
将请求平均的分配给后端服务器,防止单个服务器的压力过大导致宕机。
为什么要是用负载均衡
- 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾
- 往往我们接触的最多的是SLB(Server Load Balance)负载均衡,实现最多的也是SLB、那么SLB它的调度节点和服务节点通常是在一个地域里面。那么它在这个小的逻辑地域里面决定了他对部分服务的实时性、响应性是非常好的。
- 所以说当海量用户请求过来以后,它同样是请求调度节点,调度节点将用户的请求转发给后端对应的服务节点,服务节点处理完请求后在转发给调度节点,调度节点最后响应给用户节点。这样也能实现一个均衡的作用,那么Nginx则是一个典型的SLB!
负载均衡语法
# ngx_http_upstream_module
#语法
Syntax: upstream name { ... }
Default: —
Context: http
#例子
# 在配置文件内,准备连接池,代理转发至连接池
upstream supermarie {
server 172.16.1.7:80;
server 172.16.1.8:80;
server 172.16.1.9:80;
}
server {
... ...
location / {
proxy_pass http://supermarie;
}
}
# 这样就实现了负载均衡.
负载均衡实现案例
1.准备工作
服务器 | IP |
---|---|
lb01 | 172.16.1.31 |
web01 | 172.16.1.7 |
web02 | 172.16.1.8 |
web03 | 172.16.1.9 |
首先在三台服务器配置好超级玛丽游戏
2.服务器
将后端服务打包成一个IP连接池。
[root@lb01 conf.d]# vim supermary.conf
# 定义一个IP连接池
upstream supermary {
server 172.16.1.7:80;
server 172.16.1.8:80;
server 172.16.1.9:80;
}
server {
listen 80;
server_name py.test1.com;
location / {
proxy_pass http://supermary;
include /etc/nginx/proxy_params;
}
}