环境还是前面的环境,会不断地更新扩大,今天主写nginx部分,有兴趣可以点点关注,一起学习,有赞必回。
实验环境:
服务器 | 用途作用 |
---|---|
nginx,php(192.168.10.5) | 做web2节点服务器 ,做web2的php服务器 |
nginx,mysql(192.168.10.6) | 做web1节点服务器,做web2的数据库 |
nginx(192.168.10.2) | 做反向代理服务器 |
mysql(192.168.10.4) | 做web1的数据库 |
php(192.168.10.3) | 做web1的php服务器 |
测试机(192.168.10.1) | 测试访问 |
天天说代理,负载均衡,你知道它俩区别是什么吗?
代理负责把连接请求直接转发到后台某个web节点
负载均衡负责把请求使用某种调度算法分散发布给后台所有web节点
(1)启动lb1,安装nginx,这里就不写了,源码的还是rpm的前面都有
(2)创建代理配置文件,添加优化项
vim /etc/nginx/conf.d/lb1.conf
添加:
server {
listen 80;
server_name blog.benet.com;
location / {
proxy_pass http://192.168.10.6;
proxy_set_header Host $http_host; #转发请求时,包含头部“HOST”信息
proxy_set_header X-Real-IP $remote_addr; #和下行一起,共同实现追踪客户端原ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30; #代理和后端服务器连接超时时间
proxy_send_timeout 60; #后端服务器传回代理的超时时间
proxy_read_timeout 60; #代理等待后端服务器的响应时间
proxy_buffering on; #启用缓存,后端返回内容先缓存,再给客户端,收到多少转多少
proxy_buffer_size 32k; #代理缓存用户头信息的缓存区大小
proxy_buffers 4 128k; #缓存区的设置
}
}
server {
listen 80;
server_name zh.benet.com;
location / {
proxy_pass http://192.168.10.6;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
保存退出
systemctl restart nginx
或者这样写:
编译nginx_params文件,vim /etc/nginx/nginx_params
vim /etc/nginx/nginx_params
添加:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
保存退出
网站文件配置调用,vim /etc/nginx/conf.d/lb1.conf
server {
listen 80;
server_name blog.benet.com;
location / {
proxy_pass http://192.168.10.6;
include nginx_params;
}
}
server {
listen 80;
server_name zh.benet.com;
location / {
proxy_pass http://192.168.10.6;
include nginx_params;
}
}
保存退出
重启nginx:systemctl restart nginx
(3)客户机测试修改/etc/hosts
文件,访问blog.benet.com
查看日志
[root@localhost ~]# tail -f /var/log/nginx/access.log
192.168.10.2 - - [04/Apr/2020:02:35:38 -0700] "GET /wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js?ver=1.0 HTTP/1.0" 304 0 "http://blog.benet.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "192.168.10.1"
192.168.10.2 - - [04/Apr/2020:02:35:38 -0700] "GET /wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js?ver=2.1.2 HTTP/1.0" 304 0 "http://blog.benet.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "192.168.10.1"
192.168.10.2 - - [04/Apr/2020:02:35:38 -0700] "GET /wp-includes/js/wp-emoji-release.min.js?ver=4.9.4 HTTP/1.0" 304 0 "http://blog.benet.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "192.168.10.1"
到此,反向代理已经做好。
负载均衡(Load Balance),简写LB
面对高并发web请求,使用各种调度算法(rr,wrr,lc,wlc,ip_hash),分散转发到后台web群集节点,提高数据吞吐量,高容灾等。
常见的LB:
软件:lvs nginx haproxy
硬件:F5
云LB:阿里云SLB 腾讯云CLB 青云QLB ucloud ULB 等
(1)修改lb1的配置文件,添加负载均衡功能
vim /etc/nginx/conf.d/lb1.conf
修改为:
upstream web_cluster {
server 192.168.10.5:80 weight=1;
server 192.168.10.6:80 weight=1;
}
server {
listen 80;
server_name blog.benet.com;
location / {
proxy_pass http://web_cluster;
include nginx_params;
}
}
server {
listen 80;
server_name zh.benet.com;
location / {
proxy_pass http://web_cluster;
include nginx_params;
}
}
保存退出
重启nginx:systemctl restart nginx
(2)客户端访问验证,浏览器如果判断不出来,就看web节点上的日志。
(3)nginx负载均衡后端状态
参数 | 状态 |
---|---|
down | 当前节点服务器不参与负载均衡 |
backup | 备份服务器 |
max_fails | 允许请求失败的次数 |
fails_timeout | 经过max_fails失败后,服务的暂停时间 |
max_conns | 同一ip最大连接数 |
注:down一般是在服务器宕机或维护时才使用。
具体使用方法如下:
vim /etc/nginx/conf.d/lb1.conf
修改为:
upstream web_cluster {
server 192.168.10.5:80 max_fails=2 fails_timeout=10s max_conns=1;
server 192.168.10.6:80 down;
}