负载均衡,根据ip和端口号找到相应的web服务器站点(即端口区分):

22.1、nginx的负载均衡:

1、介绍:

网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,

将压力分散到不同的机器上。有时候来自web前端的压力,也能让人十分头痛。怎样将同一个域名的访问分散到两台或更多的机器上呢?这其实就是另一

种负载均衡了,nginx自身就可以做到,只需要做个简单的配置就行。nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx

还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

2、nginx的反向代理和负载均衡的区别:

(1)负载均衡需要通过反向代理来实现;

(2)反向代理就是指nginx作为前端服务器,将请求转发到后端,再将后端服务器的结果,返回给客户端;

(3)它在中间做了一个代理服务器的角色;

(4)负载均衡对反向代理增加了一些策略,因为后端是多台服务器,nginx会根据设定的策略将请求转发给

一个相对空闲的服务器,对负载进行分流,减轻服务器压力;

22.2、nginx 的 upstream目前支持 4 种方式的分配

1、轮询(默认)

  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight

  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3、ip_hash

  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,也可以搭建session服务器,共享所有用户的session。

4、fair(第三方)

  按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5、url_hash(第三方)

22.3、反向代理和负载均衡的区别:

nginx仅仅作为nginx Proxy反向代理使用,因为这个反向代理功能表现的效果是负载均衡均衡集群的效果,

所以称之为nginx的负载均衡。普通的负载均衡软件,例如大名鼎鼎的lvs,其实现的功能只是对请求数据包的转发

(也可能会改写数据包)、传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是

来自访问负载均衡器的客户端的真实用户。反向代理接收到访问用户的请求后,会代理用户重行发起请求代理下的

节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问节点服务器的客户端用户就是反向大力服务器,而非真实的网站访问用户。

几大负载均衡的软件:

nginx(小企业 l4 l7)、lvs(中等企业 l4)、haproxy(特大企业 l4 l7)

ois网络七层模型:l4:tcp(传输层)负载均衡;l7:http(应用层)负载均衡;

nginx负载均衡的组件模块:

ngx_http_proxy_module:proxy代理模块,用于把请求后抛给服务器节点或upstrem服务器池;

ngx_http_upstream_module:负载均衡模块,可以实现网站的负载均衡功能及节点的健康检(upstrem服务器池);

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#负载均衡的配置官网

22.4、配置nginx反向代理:

1、安装反向代理软件nginx(和安装nginx web服务器是一样的操作,lb01)

2、nginx负载均衡配置:

(1)普通配置介绍:

pstream backend {

server backend1.example.com weight=5; #weight,加权操作

server backend2.example.com:8080;

server backup1.example.com:8080 backup;//备份,不参与转发,只有当所有服务器都挂掉时才参与转发;

server backend3.example.com:8080 down;//临时停机维护,不参与任何转发,是关闭状态,

server 192.168.1.66 max_fails=2 fail_timeout=60s;//达到2次访问失败后认为服务器挂掉;挂掉60s后再次测试是否已经挂掉;

}

server {

location / {

proxy_pass http://backend;

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上使用设置日志接收模式为X-Forwarded-For即可;

}

}

(2)部署实例:

1)负载均衡服务器配置(lb01):

[root@lb01 ~]# cd /application/nginx/conf/

[root@lb01 conf]# cat nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

upstream php-pools {

server 10.0.0.8:80;

server 10.0.0.7:80;

ip_hash;

}

server {

listen 80;

server_name www.proxy.com;

location / {

proxy_pass http://php-pools;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

}

2)web01服务器配置:

[root@web01 nginx]# cat conf/nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

include extra/php.conf;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

}

[root@web01 ~]# cat /application/nginx/conf/extra/php.conf

server {

listen 80;

server_name www.php.com;

location / {

root html/php/;

index index.php index.html;

}

location ~ .*\.(php|php5)?$ {

root html/php/;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

3)web02配置:

web02的配置(因为之前使用的是apache搭建的服务器,所以使用该服务器,最后是使用nginx做web服务器):

[root@web02 ~]# vim /application/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

ServerAdmin 250416476-5@qq.com

DocumentRoot "/application/apache-2.2.31/htdocs/php/"

ServerName www.php.com

#ServerAlias www.dummy-host.example.com

ErrorLog "logs/www.php.com_error.log"

CustomLog "logs/www.php.com-access_log" common

</VirtualHost>

4)在本机的host文件添加域名解析:

10.0.0.5 www.proxy.com

5)在网页中进行测试:

先部署然后挂掉一个web服务器看访问日志如果有变化表示代理成功,或通过访问页面去判断;

也可以在linux中使用curl命令进行测试:

for n in `seq 20` ;do curl 10.0.0.5;sleep 1;done

22.5、配置vip:

vip(浮动ip,辅助ip) 、当lb01宕机之后,lb02顶上(平时lb02处于暂停服务的状态),即负载均衡的高可用;

在lb02上配置和lb01一样的配置;

(1)自动模式的浮动ip(keepalived):

1)lb01和lb02安装keeplived软件包:

[root@lb01 ~]# yum install keepalived -y

[root@lb01 ~]# rpm -qa keepalived

keepalived-1.2.13-5.el6_6.x86_64

2)配置lb01和lb02上的keeplived配置文件:

[root@lb01 ~]# vim /etc/keepalived/keepalived.conf #主

! Configuration File for keepalived

global_defs {

notification_email {

25041647-65@qq.com #发送邮件的地址 root@localhost.localdomain;

}

notification_email_from 25041647-65@qq.com #发送邮件的地址;

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL #id,不同的keepalived的id不同

}

vrrp_instance VI_1 { #实例

state MASTER #状态

interface eth0 #通信的网卡

virtual_router_id 51 #实例的id,相同

priority 100 #优先级,优先级大的获取资源

advert_int 1 #心跳间隔

authentication { #两台机器通信的密码

auth_type PASS

auth_pass 1111

}

virtual_ipaddress { #绑定的vip

10.0.0.3/24 dev eth0 label eth0:1

}

}

[root@lb02 ~]# vim /etc/keepalived/keepalived.conf #备

! Configuration File for keepalived

global_defs {

notification_email {

25041647-65@qq.com

}

notification_email_from 25041647-65@qq.com

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL1

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.0.0.3/24 dev eth0 label eth0:1

}

}

3)启动lb01和lb02上的keepalived服务:

[root@lb01~]# /etc/init.d/keepalived start

正在启动 keepalived: [确定]

4)lb01和lb02上的keepalived服务开机自启:

[root@lb01 ~]# chkconfig --list keepalived

keepalived 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

[root@lb01~]# chkconfig keepalived on

[root@lb01 ~]# chkconfig --list keepalived

keepalived 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

[root@lb01 ~]# ip addr | grep 10.0.0.3 #此时lb01的浮动ip地址已经启动

inet 10.0.0.3/24 scope global secondary eth0:1

5)在windows本地hosts中添加主机和域名的解析文件:

在lb01宕机后lb02能够自动顶上;

10.0.0.3 www.proxy.com

6)测试:

查看lb02的浮动ip没有结果,因为lb02的优先级小于lb01的优先级:

[root@lb02 ~]# ip addr | grep 10.0.0.3

当lb01宕机后,此时查看lb01的浮动ip地址已经出现:

[root@lb02 ~]# ip addr | grep 10.0.0.3

inet 10.0.0.3/24 scope global secondary eth0:1

22、lnmp_nginx反向代理(负载均衡)、高可用的更多相关文章

  1. nginx负载均衡高可用部署和代理配置

    nginx负载均衡高可用配置 服务器A:172.16.100.2 服务器B:172.16.100.3 首先先在两台服务器上分别安装好nginx和keepalived后,再进行下面的操作 配置keepa ...

  2. 实现基于Haproxy+Keepalived负载均衡高可用架构

    1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...

  3. Nginx+Keepalived负载均衡高可用

    Nginx+Keepalived负载均衡高可用方案: Nginx 使用平台:unix.linux.windows. 功能: A.www web服务  http 80 b.负载均衡(方向代理proxy) ...

  4. nginx 详解反向代理负载均衡

    什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...

  5. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  6. 反向代理负载均衡-----nginx

    一:集群 1.1:集群的概念    集群是一组相互独立的.通过高速网络互联的计算机,他们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高 ...

  7. Keepalived实现Nginx负载均衡高可用

    第一章:keepalived介绍 VRRP协议 目的就是为了解决静态路由单点故障问题的 第二章: keepalived工作原理 2.1 作为系统网络服务的高可用功能(failover) keepali ...

  8. 反向代理负载均衡之nginx

    一.集群 1.1 什么是集群 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性 ...

  9. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  10. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

随机推荐

  1. [bug] Springboot JPA使用Sort排序时的问题

    参考 https://blog.csdn.net/qq_44039966/article/details/102713779

  2. Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.

    1.按照提示 systemctl status ssh.service 查看报错原因 sshd -t 2.结果 /etc/ssh/sshd_config line 34: missing argume ...

  3. swagger上的接口写入数据库

    一.依赖 virtualenv -p python3.6 xx pip install scrapy pip install pymysql 二. 1.创建项目和spider1 scrapy star ...

  4. /var/log/syslog日志usb接口

    p:~# cat /proc/bus/input/devices |grep usbP: Phys=usb-0000:00:05.1-1/buttonS: Sysfs=/devices/pci0000 ...

  5. JQuery Ajax 请求参数 List 集合处理

    引言 JQuery Ajax 发送请求参数一般都是基本类型,比如 String.int:那么,请求参数如果是 List 集合应该如何处理呢? 情况一:Aajx 发送 List 类型请求参数 举例如下: ...

  6. elasticsearch_dsl 操作

    import elasticsearch from elasticsearch_dsl import Search, MultiSearch # Search-执行一个搜索,MultiSearch-同 ...

  7. 07.ElementUI 2.X 源码学习:源码剖析之工程化(二)

    0x.00 前言 项目工程化系列文章链接如下,推荐按照顺序阅读文章 . 1️⃣ 源码剖析之工程化(一):项目概览.package.json.npm script 2️⃣ 源码剖析之工程化(二):项目构 ...

  8. nginx 重定向到系统维护页面

    上周末兄弟项目准备扩展服务器以便提供更好的服务,兄弟项目有一些功能是实时提供到我这边的,需要我这边暂时把对应系统功能屏蔽,因为使用nginx,所以可以直接配置nginx重定向到固定系统维护页面. ng ...

  9. YOLO、SSD、FPN、Mask-RCNN检测模型对比

    YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...

  10. 摄像头ISP系统原理(上)

    摄像头ISP系统原理(上) ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号.它在相机系统中占有核心主导的地位,是构成相机的重要设备. 主 ...