永康网站建设zjyuxun,国际新闻最新消息今天新闻大事件是什么,网络营销的六大功能,微信开发公众平台公司nginx的负载均衡有4种模式#xff1a;
1)、轮询#xff08;默认#xff09; 每个请求按时间顺序逐一分配到不同的后端服务器#xff0c;如果后端服务器down掉#xff0c;能自动剔除。 2)、weight 指定轮询几率#xff0c;weight和访问比率成正比#xff0c;用于后端服务…nginx的负载均衡有4种模式
1)、轮询默认 每个请求按时间顺序逐一分配到不同的后端服务器如果后端服务器down掉能自动剔除。 2)、weight 指定轮询几率weight和访问比率成正比用于后端服务器性能不均的情况。 2)、ip_hash 每个请求按访问ip的hash结果分配这样每个访客固定访问一个后端服务器可以解决session的问题。 3)、fair第三方 按后端服务器的响应时间来分配请求响应时间短的优先分配。 4)、url_hash第三方
配置方法 打开nginx.cnf文件
在http节点下添加upstream节点
upstream webname { server 192.168.0.1:8080; server 192.168.0.2:8080; } 其中webname是自己取的名字最后会通过这个名字在url里访问的像上面这个例子一样什么都不加就是默认的轮询第一个请求过来访问第一个server第二个请求来访问第二个server。依次轮着来。
upstream webname { server 192.168.0.1:8080 weight 2; server 192.168.0.2:8080 weight 1; } 这个weight也很好理解权重大的被访问的概率就大上面这个例子的话访问2次server1访问一次server2
upstream webname { ip_hash; server 192.168.0.1:8080; server 192.168.0.2:8080; } ip_hash的配置也很简单直接加一行就可以了这样只要是同一个ip过来的都会到同一台server上
然后在server节点下进行配置
location /name { proxy_pass http://webname/name/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } proxy_pass里面用上面配的webname代替了原来的ip地址。
这样就基本完成了负载均衡的配置。
下面是主备的配置
还是在upstream里面
upstream webname { server 192.168.0.1:8080; server 192.168.0.2:8080 backup; } 设置某一个节点为backup那么一般情况下所有请求都访问server1当server1挂掉或者忙的的时候才会访问server2
upstream webname { server 192.168.0.1:8080; server 192.168.0.2:8080 down; } 设置某个节点为down那么这个server不参与负载。
实现实例 负载均衡是我们大流量网站要做的一个东西下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法希望对有需要的同学有所帮助哦。
负载均衡
先来简单了解一下什么是负载均衡单从字面上的意思来理解就可以解释N台服务器平均分担负载不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现也就是两台以上即可。
测试环境 由于没有服务器所以本次测试直接host指定域名然后在VMware里安装了三台CentOS。
测试域名 a.com
A服务器IP 192.168.5.149 主
B服务器IP 192.168.5.27
C服务器IP 192.168.5.126
部署思路 A服务器做为主服务器域名直接解析到A服务器192.168.5.149上由A服务器负载均衡到B服务器192.168.5.27与C服务器192.168.5.126上。
域名解析
由于不是真实环境域名就随便使用一个a.com用作测试所以a.com的解析只能在hosts文件设置。
打开C:WindowsSystem32driversetchosts
在末尾添加
192.168.5.149 a.com 1 保存退出然后启动命令模式ping下看看是否已设置成功
从截图上看已成功将a.com解析到192.168.5.149IP
A服务器nginx.conf设置 打开nginx.conf文件位置在nginx安装目录的conf目录下。
在http段加入以下代码
upstream a.com { server 192.168.5.126:80; server 192.168.5.27:80; }
server{ listen 80; server_name a.com; location / { proxy_pass http://a.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 保存重启nginx
B、C服务器nginx.conf设置 打开nginx.confi在http段加入以下代码
server{ listen 80; server_name a.com; index index.html; root /data0/htdocs/www; } 保存重启nginx
测试 当访问a.com的时候为了区分是转向哪台服务器处理我分别在B、C服务器下写一个不同内容的index.html文件以作区分。
打开浏览器访问a.com结果刷新会发现所有的请求均分别被主服务器192.168.5.149分配到B服务器192.168.5.27与C服务器192.168.5.126上实现了负载均衡效果。
B服务器处理页面
C服务器处理页面
假如其中一台服务器宕机会怎样 当某台服务器宕机了是否会影响访问呢
我们先来看看实例根据以上例子假设C服务器192.168.5.126这台机子宕机了由于无法模拟宕机所以我就把C服务器关机然后再来访问看看。
访问结果
我们发现虽然C服务器192.168.5.126宕机了但不影响网站访问。这样就不会担心在负载均衡模式下因为某台机子宕机而拖累整个站点了。
如果b.com也要设置负载均衡怎么办 很简单跟a.com设置一样。如下
假设b.com的主服务器IP是192.168.5.149负载均衡到192.168.5.150和192.168.5.151机器上
现将域名b.com解析到192.168.5.149IP上。
在主服务器(192.168.5.149)的nginx.conf加入以下代码
upstream b.com { server 192.168.5.150:80; server 192.168.5.151:80; }
server{ listen 80; server_name b.com; location / { proxy_pass http://b.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 保存重启nginx
在192.168.5.150与192.168.5.151机器上设置nginx打开nginx.conf在末尾添加以下代码
server{ listen 80; server_name b.com; index index.html; root /data0/htdocs/www; } 保存重启nginx
完成以后步骤后即可实现b.com的负载均衡配置。
主服务器不能提供服务吗 以上例子中我们都是应用到了主服务器负载均衡到其它服务器上那么主服务器本身能不能也加在服务器列表中这样就不会白白浪费拿一台服务器纯当做转发功能而是也参与到提供服务中来。
如以上案例三台服务器
A服务器IP 192.168.5.149 主
B服务器IP 192.168.5.27
C服务器IP 192.168.5.126
我们把域名解析到A服务器然后由A服务器转发到B服务器与C服务器那么A服务器只做一个转发功能现在我们让A服务器也提供站点服务。
我们先来分析一下如果添加主服务器到upstream中那么可能会有以下两种情况发生
1、主服务器转发到了其它IP上其它IP服务器正常处理
2、主服务器转发到了自己IP上然后又进到主服务器分配IP那里假如一直分配到本机则会造成一个死循环。
怎么解决这个问题呢因为80端口已经用来监听负载均衡的处理那么本服务器上就不能再使用80端口来处理a.com的访问请求得用一个新的。于是我们把主服务器的nginx.conf加入以下一段代码
server{ listen 8080; server_name a.com; index index.html; root /data0/htdocs/www; } 重启nginx在浏览器输入a.com:8080试试看能不能访问。结果可以正常访问
既然能正常访问那么我们就可以把主服务器添加到upstream中但是端口要改一下如下代码
upstream a.com { server 192.168.5.126:80; server 192.168.5.27:80; server 127.0.0.1:8080; } 由于这里可以添加主服务器IP192.168.5.149或者127.0.0.1均可以都表示访问自己。
重启Nginx然后再来访问a.com看看会不会分配到主服务器上。
主服务器也能正常加入服务了。
最后 一、负载均衡不是nginx独有著名鼎鼎的apache也有但性能可能不如nginx。
二、多台服务器提供服务但域名只解析到主服务器而真正的服务器IP不会被ping下即可获得增加一定安全性。
三、upstream里的IP不一定是内网外网IP也可以。不过经典的案例是局域网中某台IP暴露在外网下域名直接解析到此IP。然后又这台主服务器转发到内网服务器IP中。
四、某台服务器宕机、不会影响网站正常运行Nginx不会把请求转发到已宕机的IP上