参考:https://www.jianshu.com/p/6406c6a74955
nginx 是一个性能非常优秀的反向代理服务器,可以非常方便的进行静态服务、反向代理、负载均衡等的配置。
在之前的博客centos7 下 nginx 的安装与配置中已经讲过 nginx 的基本配置,但这只是用到了 nginx 的一部分功能。对于多台服务器的集群而言,nginx 的负载均衡和自动容灾(故障转移)功能才是更加重要的,可以有效的提高服务的可靠性。可以说,如果负载均衡不做自动容灾(故障转移)的话,那就等于没做。在实际服务器集群中,总会有几台故障机或维护机,生产环境的要求就决定了必须要有自动容灾(故障转移)。
下面就来简要谈谈怎么配置。
负载均衡
负载均衡部分是非常简单的。
upstream backend_server {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:9090 weight=2;
}
server {
listen 80;
listen [::]:80;
# security
include nginxconfig.io/security.conf;
location / {
include nginxconfig.io/proxy.conf;
proxy_pass http://backend_server;
}
}
重点就在于 upstream 部分。此处需要先定义一个 upstream,然后在下方引用即可。
分配方式在 upstream 块中定义即可。
nginx 的 upstream 目前支持 5 种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
upstream bakend {
ip_hash;
server 192.168.203.14:88;
server 192.168.203.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream bakend {
fair;
server 192.168.203.14:88;
server 192.168.203.15:80;
}
5、url_hash(第三方)
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效。
自动容灾(故障转移)
下面就是本文的重头戏,关于 nginx 的自动容灾(故障转移)部分。
所谓自动容灾(故障转移),就是在后台服务器中出现故障时,能够自动转移到健康的服务器上,来维持整个服务的稳定。
配置也是比较简单的,在负载均衡的基础上添加一些配置即可。重点在于两段加了注释的内容,其余的都是装饰。
#轮询服务器,weight为服务器权重,与访问频率成正比,max_fails最大超时次数,fail_timeout服务器代理监听超时时间
upstream backend_server {
server 192.168.203.43:80 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.203.44:80 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.203.45:80 weight=1 max_fails=2 fail_timeout=10s;
}
server {
listen 80;
listen [::]:80;
# security
include nginxconfig.io/security.conf;
location / {
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#设置一些超时时间。可选
proxy_next_upstream_timeout 1s;
proxy_next_upstream_tries 2;
proxy_connect_timeout 1s;
proxy_read_timeout 1s;
proxy_send_timeout 1s;
include nginxconfig.io/proxy.conf;
proxy_pass http://backend_server;
}
}
在网上搜 nginx 自动容灾(故障转移)的时候有些文章没有讲到重点,本文稍微提取了下重点来讲述,希望对大家有所帮助
- 本文链接: https://wp.cmyr.ltd/archives/remember-once-nginx-load-balancing-and-automatic
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
发表回复
要发表评论,您必须先登录。