nginx负载均衡的相关配置
一台nginx的负载均衡服务器(172.25.254.131)
两台安装httpd作为web端
一、准备工作
1.1 安装nginx
yum -y install gcc openssl-devel pcre-devel
useradd -s /sbin/nologin nginx
cd ~/nginx-1.10./
./configure \
>--prefix=/usr/local/nginx \
>--user=nginx \
>--group=nginx \
>--with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module #在安装pcre的时候,如果使用的是源码安装,则在这里需要只用pcre的位置
make && make install
ln -s /usr/local/nginx/sbin/nginx /sbin/
nginx -t
nginx
nginx -s reload
1.2 安装appache
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# systemctl restart httpd
[root@web1 ~]# netstat -ntlp |grep
tcp6 ::: :::* LISTEN /httpd
[root@web1 ~]# echo 172.25.254.134>>/var/www/html/index.html
[root@web1 ~]# curl 172.25.254.134
172.25.254.134
[root@web1 ~]# firewall-cmd --add-port=/tcp --permanent
[root@web1 ~]# firewall-cmd --reload
[root@web1 ~]# firewall-cmd --list-all
ports: /tcp
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# systemctl restart httpd
[root@web2 ~]# netstat -ntlp |grep
tcp6 ::: :::* LISTEN /httpd
[root@web1 ~]# echo 172.25.254.135>>/var/www/html/index.html
[root@web1 ~]# curl 172.25.254.135
172.25.254.135
[root@web1 ~]# firewall-cmd --add-port=/tcp --permanent
[root@web1 ~]# firewall-cmd --reload
[root@web1 ~]# firewall-cmd --list-all
ports: /tcp
二、配置
2.1 开始配置nginx的负载均衡
一般2000万pv以下的负载均衡都可以使用nginx实现,依赖于Nginx_http_upstream_module模块。所支持的代理方式有proxy_pass,fastcgi_pass,memcached_pass.
upstream模块应放于nginx.conf配置的http{}内。默认的算法是wrr权重轮询
参数:weight max_fails(根据应用场景,小的话,用户体验度高,但是要求节点足够多,同时在负载大于80%后,不会向该节点扔请求,大的话可以提高服务器的利用率 ),backup,fail_timeout,down
[root@lb01 ~]# cd /usr/local/nginx/conf/
[root@lb01 conf]# egrep -v "#|^$" nginx.conf.default
worker_processes ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ;
server {
listen ;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
}
[root@lb01 conf]# egrep -v "#|^$" nginx.conf.default >nginx.conf
[root@lb01 conf]# vim nginx.conf
worker_processes ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ;
upstream web_pools{
#可以跟ip_hash;这样,backup不能使用,权重也没有效果,一个客户端永远访问一台
server 172.25.254.134: weight=;
server 172.25.254.135: weight=;
server 172.25.254.158: weight= backup; #nginx自带的一个高可用
}
#nginx自带判断功能,单节点故障,会自己剔除故障节点,节点故障修复,又会自己添加进来
server {
listen ;
server_name www.lb01test.com;
location / {
root html;
index index.html index.htm;
proxy_set_header Host $host; #只带请求的主机名
proxy_pass http://web_pools;
}
}
}
[root@lb01 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@lb01 conf]# nginx -s reload
2.2 访问
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.135
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.134
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.135
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.134
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.135
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.134
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.135
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.134
[root@lb01 conf]# curl http://www.lbtest.com
172.25.254.135
三 、upstream核心模块和相关参数
3.1 算法
轮询:默认算法,每一个请求按顺序逐一分配到不同的后端服务器,如果后端服务器down掉了,则能自动剔除。
weight:权重,设置权重,用于后端服务器性能不均的情况,访问比率约等于权重之比
ip_hash:解决了session问题:每个请求按访问IP的hash结果分配,这样每个访客可以固定一个后端服务器。
fair(第三方)动态算法:
按照后端服务器的响应时间来分配请求,相应的时间短的有限分配,是比轮询和权重的更加智能的负载均衡算法,必须下载upstream_fair的模块
url_hash算法
按照访问的url的hash结果来分配请求,让每个url定向到同一个后端服务器,后端服务器Wie缓存服务器时的效果显著。在uupstream中加入hash语句,servevr语句中不能写入weight等其他参数,hash_method是使用的hash算法
url_hash安访问的url的hash结果来分配请求,是每个url定向到同一个后端服务器。可以进一步的提高后端缓存服务器的命中率,需要安装Nginx的hsah软件包
url_hash(web缓存节点)和Ip_hsah(回话保持类似)
least_conn:最少连接数,那个机器连接数少就分发
一致性Hash
max_conns=number:限制最大的并发连接,默认为0,没有限制
3.2 http_proxy_module
Proxy_pass指令属于ngx_http_proxy_module模块,此模块可以将请求转发到另一台服务器
proxy_set_header:设置后端的服务器获取用户的主机名或者真实的IP地址,以及代理着的真实IP
client_body_buffer_size:用于指定客户端请求主题缓冲区大小,可以理解为先保存到本地在传给用户
proxy_connect_timeout:表示与后端服务器连接的超时时间,及发起我吼等候的超时时间
proxy_send_timeout:表示后端服务器的数据回传时间,即在规定的时间之内后端服务器必须传完所有的数据,否则,Nginx将断开连接
proxy_read_timeout:是指Nginx从反向代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等后端服务器的响应时间,
Proxy_pass http://blog_server_pool:用于指定反向代理的服务器池
proxy_set_header Host $Host:当后端服务器上配置多个虚拟主机时,需要用到Header来区分反向代理哪一个主机
proxy_set_header X-Forwareded-For $remote_addr:如果侯丹Web服务器上的程序需要获取用户IP,从该Header头获取。
nginx负载均衡的相关配置的更多相关文章
- Nginx记录-nginx 负载均衡5种配置方式(转载)
nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成 ...
- nginx 负载均衡5种配置方式
nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比, ...
- nginx负载均衡之入门配置
先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况.那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上 ...
- 干货 | Nginx负载均衡原理及配置实例
一个执着于技术的公众号 Nginx系列导读 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文件详解 理解正向代理与反向代理的区别 ...
- nginx负载均衡tomcat和配置ssl
目录 tomcat 组件功能 engine host context connector service server valve logger realm UserDatabaseRealm 工作流 ...
- Nginx负载均衡的详细配置及使用案例详解.
感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...
- [项目构建 十三]babasport Nginx负载均衡的详细配置及使用案例详解.
在这里再次说明下, 这个项目是从网上 找到的一套学习资料, 自己在 空闲时间学习了这些东西. 这里面的code当然会有很多不完善的地方, 但是确实也能学到很多新东西.感谢看过这一些列博文和评论的小伙伴 ...
- Nginx负载均衡的详细配置 + Keepalived使用
1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器 ...
- nginx负载均衡及详细配置
接上篇nginx配置,然后再准备两台web服务器: nginx服务器:192.168.0.241 web1:192.168.0.141 web2:192.168.0.142 一.两台web服务器先安装 ...
随机推荐
- 流程控制 Day06
package com.sxt.arraytest2; public class breakTest { public static void main(String[] args) { label: ...
- 从HelloWorld看Knative Serving代码实现
摘要: Knative Serving以Kubernetes和Istio为基础,支持无服务器应用程序和函数的部署并提供服务.我们从部署一个HelloWorld示例入手来分析Knative Servin ...
- @bzoj - 3836@ [Poi2014]Tourism
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个n个点,m条边的无向图,其中你在第i个点建立旅游站点的费 ...
- [***]HZOJ 优美序列
又是一道神仙题.考试的时候居然打了一个回滚莫队,不知道我咋想的…… 先说一个某OJT80,洛谷T5分的思路(差距有点大): 可以把位置和编号映射一下,区间内最大值和最小值对应的位置,每次更新,直到找到 ...
- 在线学编程!十大IT在线教育网站推荐
在线学编程!十大IT在线教育网站推荐 1.CSDN学院(http://edu.csdn.net/) CSDN学院是CSDN推出的一个面向中国软件开发者和IT专业人员的技术教育服务平台.主要提供IT领域 ...
- uni-app获取当前位置
uniapp获取当前城市: 官方api:uni.getLocation()获取当前的地理位置.速度. 在微信小程序中,当用户离开应用后,此接口无法调用,除非申请后台持续定位权限:当用户点击“显示在聊天 ...
- JVM问题诊断
https://gitbook.cn/books/5d2d822f175a450263e945f9/index.html
- 20190527-JavaScriptの打怪升级旅行 { 语句 [ 声明 ,变量 ] }
写在前面的乱七八糟:时间总是轻易地溜走,不留一丝念想,近一个月,倒是过得有点丧,从今天开始起,已经开始接触后台了,而JavaScript也只是大致有了个分类框架,那些细枝末节还有的补,任重道远,天将降 ...
- codeforces1253F(图转换为树减少复杂度)
题意: 给定一个无向图,其中1-k为充电桩,然后给定q个询问\(u_i, v_i\)(都是充电桩),然后问从其中一个充电桩到达另外一个充电桩需要最小的电池的容量. 每经过一条边都需要消耗一定的能量,到 ...
- SuperSocket获取所有连接上的 Session
你也可以从 AppServer 实例获取所有连接上的 session 然后推送数据到所有客户端: foreach(var session in appServer.GetAllSessions()) ...