LVS(负载均衡)+keepalived(HA)+Nginx(反向代理)+Web(动静态网站服务器)

考虑到LVS和Nginx的缺点(由于LVS采用的是同步请求转发策略而Nginx采用的是异步转发策略,结合两者的缺点:作为负载均衡服务器的Nginx和LVS处理相同的请求时,所有的请求和响应流量都会经过Nginx服务器,但是使用LVS时,仅请求流量经过LVS的网络,响应流量由后端的服务器的网络返回,也就是说,当后端web服务器规模较大时,Nginx的网络带宽就成了一个巨大的瓶颈,但是仅仅使用LVS作为负载均衡使用时,一旦后端接收到请求的服务器出了问题,那么这次请求就失败了,如果在LVS后端添加一层Nginx代理群,结合两者的优势,就避免以上的情况出现)再结合Keepalived实现LVS和Nginx的高可用

条件:

六台虚拟机:

两台LVS

两台Nginx

两台web服务器

LVS-M上面:(LVS-S也重做一遍)

优化环境(/etc/sysctl.conf)

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

sysctl -p

modprobe ip_vs

yum install -y ipvsadm

设置负载调度器模式

ipvsadm -A -t 192.168.115.180:80 -s rr

ipvsadm -a -t 192.168.115.180:80 -r 192.168.115.176:80 -g(176和177分别指向两个nginx代理服务器)

ipvsadm -a -t 192.168.115.180:80 -r 192.168.115.177:80 -g

查看:

ipvsadm -Ln

安装keepalived

yum install -y gcc*  kernel-devel openssl-devel popt-devel

tar -xvf keepalived-1.2.7.tar.gz

./configure --prefix=/  --with-kernel-dir=/usr/src/kernels/2.6.32-131.0.15.el6.i686

make && make install

chkconfig --add keepalived

chkconfig keepalived on

配置keepalived文件(LVS-M)

global_defs {

router_id LVS_R1

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.115.180

}

}

virtual_server 192.168.115.180 80 {

delay_loop 6

lb_algo rr

lb_kind DR

protocol TCP

real_server 192.168.115.176 80 {

weight 1

TCP_CHECK {

connect_port 80

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.115.177 80 {

weight 1

TCP_CHECK {

connect_port 80

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

配置keepalived文件(LVS-S)

! Configuration File for keepalived

global_defs {

router_id LVS_R2

}

vrrp_instance VI_1 {

state SLAVE

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.115.180

}

}

virtual_server 192.168.115.180 80 {

delay_loop 6

lb_algo rr

lb_kind DR

protocol TCP

real_server 192.168.115.176 80 {

weight 1

TCP_CHECK {

connect_port 80

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.115.177 80 {

weight 1

TCP_CHECK {

connect_port 80

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

启动服务:

service keepalived start

chkconfig keepalived on

配置Nginx-M(Nginx-S也重做一遍)

安装Nginx 和 keepalived

yum install -y pcre-devel zlib-devel

rpm -ivh nginx-1.8.1-1.el6.ngx.x86_64.rpm

keepalived的安装参考上面

配置Nginx反向代理

配置keepalived(Nginx-M)

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id master-node

}

vrrp_script chk_http_port {

script "/opt/chk_nginx.sh"

interval 2

weight -5

fall 2

rise 1

}

vrrp_instance VI_1 {

state MASTER

interface eth0

mcast_src_ip 192.168.115.176

virtual_router_id 51

priority 101

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.115.180

}

track_script {

chk_http_port

}

}

配置keepalived(Nginx-S)

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

[email protected]

}

notification_email_from o[email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id master-node

}

vrrp_script chk_http_port {

script "/opt/chk_nginx.sh"

interval 2

weight -5

fall 2

rise 1

}

vrrp_instance VI_2 {

state SLAVE

interface eth0

mcast_src_ip 192.168.115.177

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.115.180

}

track_script {

chk_http_port

}

}

在/opt下面编写脚本chk_nginx.sh(两台Nginx服务器都需要)

#!/bin/bash

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}" = "0" ]; then

service nginx restart

sleep 2

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}" = "0" ]; then

service keepalived stop

fi

fi

赋予权限并执行

开启keepalived服务

浏览器访问:(在LVS上面任意停掉一台服务器看访问是否正常(断开网卡)、在Nginx服务器上面任意停掉一台Nginx服务看访问是否正常(断开Nginx服务service nginx stop))

时间: 2024-12-05 14:35:37

LVS(负载均衡)+keepalived(HA)+Nginx(反向代理)+Web(动静态网站服务器)的相关文章

nginx反向代理,动静态请求分离,以及nginx缓存应用,以及使用ngx_cache_purge清除指定URL

一,nginx反向代理配置 #tomcat Java代码   upstream tomcat_server{ server 127.0.0.1:8080; } erver{ listen 80; server_name www.wolfdream.com; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X

nginx实现请求的负载均衡 + keepalived实现nginx的高可用

前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力.通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈. 摘自<大型网站技术架构_核心原理与案例分析>

LB负载均衡集群nginx(代理)

nginx负载均衡集群 实际上就是代理 环境说明: Nginx分发器:一个公网IP,一个内网IP RS1 只有一个内网ip RS2 只有内网ip #在nginx分发器上编辑文件 #nginx负载均衡有自动检测rs的机制,当rs有一台机器宕机,nginx就不会把请求发个给那台rs vim /usr/local/nginx/conf/vhosts/upstream.conf upstream aming {            # 引用upstream模块 aming别名 #      ip_ha

nginx反向代理配置两个不同服务器

1.什么是反向代理通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的(也就是正向代理). 而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现

nginx反向代理web并使用keepalive做VIP

nginx反向代理:192.168.1.1.192.168.1.2 web服务器      :192.168.1.3.192.168.1.4 这里的nginx是编译安装的,安装在/usr/loacl/下 正常启动nginx服务后进入配置文件(1.1和1.2都要配置) #vim /usr/local/nginx/conf/nginx.conf 在http模块里添加: upstream myCluster { server 192.168.1.3:80; server 192.168.1.4:80;

LVS负载均衡之二:LVS-NAT搭建web群集

实现LVS的NAT模式 其原理及特点详细介绍请看LVS负载均衡之一:LVS-NAT.LVS-DR模式的原理详细介绍 1.实验环境 IP地址规划 客户端访问服务的请求IP地址:VIP 12.0.0.1 Server IP 系统 Director Server DIP 192.168.10.1 CentOS7 NFS Server 192.168.10.50 RedHat6 Real Server1 RIP 192.168.10.51 CentOS7 Real Server2 RIP 192.168

Nginx配置负载均衡(upstream)+反向代理(httpproxy)

首先准备3台机器(当然是vm虚拟机),一台用来做负载均衡服务器,2台web服务,分别都安装上nginx,怎么安装nginx这里就不在叙述. 另外为了测试的顺利请在之前先把3台机器的防火墙都关掉. IP规划: 均衡机:10.1.1.10   |  web-1:10.1.1.11  |  web-2:10.1.1.12 以下配置均在 nginx.conf中进行 负载均衡服务器配置 upstream webservers {  //upstream实现负载均衡     server 10.1.1.11

Nginx反向代理、负载均衡, keepalived高可用

Nginx反向代理.负载均衡,  keepalived高可用 Nginx反向代理.负载均衡,  keepalived高可用 一.Nginx反向代理.负载均衡 1.什么是反向代理.负载均衡 严格的说,Nginx仅仅是作为Nginx Proxv反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡.那么,反向代理和负载均衡有什么区别呢? 普通负载均衡软件,例如大名鼎鼎的LVS,其实现的功能只是对请求数据包的转发(也可能会改写数据包).传递,其中DR模式明

LVS负载均衡群集之DR模式+keepalived群集机构(理论+实践篇)

LVS-DR数据包流向分析 为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4 Client向目标VIP发出请求, Director (负载均衡器)接收 Director根据负载均衡算法选择RealServer 1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer 1的MAC地址,然后在局域网上发送. RealServer_ _1收到这个帧,解封装后发现目标IP与本.机匹配(RealServer事先绑定 了VIP),于是处理这个报