Linux集群:搭建负载均衡集群(一)

一、负载均衡介绍

  • 主流开源软件LVS、keepalived、haproxy、Nginx等;
  • 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,可以当做7层使用;
  • keepalived的负载均衡功能其实就是lvs;
  • lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而Nginx仅仅支持HTTP,HTTPS,mail,haproxy也支持MySQL这种;
  • 相比较来说,LVS这种4层的更稳定,能承受更多的请求,而Nginx这种7层的更加灵活,能实现更多的个性化需求;

二、LVS实现负载均衡

1、LVS介绍与模式

  • LVS是由国人章文嵩开发
  • 流行度不亚于Apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高
  • LVS最新版本基于Linux内核2.6,有好多年不更新了
  • LVS有三种常见的模式:NAT、DR、IP、Tunnel
  • LVS架构中有一个核心角色叫做分发器(Load Runner),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs)

a)NAT模式

  • 这种模式借助iptables的nat表来实现
  • 用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
  • rs需要设定网关为分发器的内网ip
  • 用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
  • 在nat模式中,是需要分发器有公网ip即可,所以比较节省公网ip资源

b) IP Tunnel模式

  • 这种模式,需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip
  • 客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为rs的IP,这样数据包就到了rs上
  • rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己

c)DR模式

  • 这种模式,也需要有一个公共的IP配置在分发器和所有rs上,也就是vip
  • 和IP Tunnel不同的是,他会把数据包的Mac地址修改为rs的Mac地址
  • rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己

2、LVS调度算法

  • 轮询 Round-Robin rr
  • 加权轮询 Weight Round-Robin wrr
  • 最小连接 Least-Connection lc
  • 加权最小连接 Weight Least-Connection wlc
  • 基于局部性的最小连接 Locality-Based Least Connections lblc
  • 带复制的基于局部性最小连接 Locality-Based Least Connections with Replication lblcr
  • 目标地址散列调度 Destination Hashing dh
  • 源地址散列调度 Source Hashing sh

3、NAT模式搭建LVS

a)准备工作

  • 准备三台服务器;
  • NAT模式下,调度器需要两个IP,一个公网IP一个内网IP;
  • 真实服务器只需要内网IP;
  • 调度器dir:192.168.242.128(内网IP),192.168.248.88(公网IP:vm虚拟机增加一块网卡,选择仅主机网络模式,设好IP作为外网IP),参考:http://blog.51cto.com/3069201/2065077
  • 真实服务器rs1:192.168.242.129(内网IP),网关要设为调度器的内网IP(编辑网卡配置文件即可)
  • 真实服务器rs2:192.168.242.130(内网IP),网关要设为调度器的内网IP(编辑网卡配置文件即可)

b)关闭防火墙(三台都需要)

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# iptables -F; iptables -t nat -F; service iptables save              //没有iptables,使用yum install -y iptables-services安装
# 目的是为了调用一个空的规则

c)dir上安装ipvsadm和添加脚本

[[email protected] ~]# yum install -y ipvsadm
[[email protected] ~]# vim /usr/local/sbin/lvs_nat.sh   //添加以下内容

#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.242.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM=‘/usr/sbin/ipvsadm‘
$IPVSADM -C
$IPVSADM -A -t 192.168.248.88:80 -s wlc -p 3
$IPVSADM -a -t 192.168.248.88:80 -r 192.168.242.128:80 -m -w 1
$IPVSADM -a -t 192.168.248.88:80 -r 192.168.242.129:80 -m -w 1

[[email protected] ~]# sh /usr/local/sbin/lvs_nat.sh             //没内容输出,说明没问题

d)测试

#在dir分别访问两个rs
[[email protected] ~]# curl 192.168.242.129
LVS-zlinux02
[[email protected] ~]# curl 192.168.242.130
LVS-zlinux03
#在dir上访问dir的外网IP
[[email protected] ~]# curl 192.168.248.88          //一直访问同一个,是因为设置了-p 300选项,300秒内一直不会变更请求
LVS-zlinux02
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02
[[email protected] ~]# vim /usr/local/sbin/lvs_nat.sh            //去掉-p选项
[[email protected] ~]# sh /usr/local/sbin/lvs_nat.sh    //再次测试,就会轮换了
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux03
[[email protected] ~]# curl 192.168.248.88
LVS-zlinux02

原文地址:http://blog.51cto.com/3069201/2096605

时间: 2024-11-07 00:48:38

Linux集群:搭建负载均衡集群(一)的相关文章

linux下lvs搭建负载均衡集群

常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat 常用商业集群硬件有:F5,Netscaler,Radware,A10等 一.LVS介绍 LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能.该项目在1998年5月由章文嵩博士组织成立. LVS的三种工作模式:1.VS/NAT模式(Network address translatio

LVS搭建负载均衡集群

1.集群的概念: 服务器集群就是将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器 2.集群的分类: 高可用集群(HA) 主要用于高可用解决方案的实现,节点间以主备形式,实现容灾:在大型故障的情况下实现快速恢复,快速提供服务 工作方式: 主从方式:主机工作,备机监控 互为主从:两服务器同时在线,一台服务器故障可切换到另一台上.有效的利用服务器资源,但当服务器故障时候,将可能导致服务器负载过大 多台服务器主从:大部分服务器在线使用,小部分监控:若有部分服务器故障,可切换到指定

使用lvs搭建负载均衡集群

有时候,单台服务器的性能可能无法应付大规模的服务请求,且其一旦出现故障,就会造成用户在一段时间内无法访问.通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益. 集群是一组相互独立的.通过网络互联的计算机组,并以单一系统的模式加以管理,或用于分摊负载,或用于增强可靠性,或用于高速计算. 一.集群类型 LB:Load Balancing,负载均衡集群,用于消除单点故障,当一个节点出现故障而无法正常提供服务时,自动.快速地切换到另外的节点上去:常见软件或实现方式有l

高可用集群和负载均衡集群理解

高可用集群 HA(hight avaliable)即高可用,又被叫双机热备 防止服务器中断,影响对外提供服务 协议:Heartbeat使用心跳进行通信和选举 含义:一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供. 负载均衡集群 LB(load balance)负载均衡集群 防止服务器发生瓶颈 协议:Keepalived使用VRRP协议进行通信和选举 用于用户请求量过大,服务器发生瓶颈,通过负载均衡,让用户可

集群主要分成三大类 (高可用集群, 负载均衡集群,科学计算集群)

转自:http://blog.csdn.net/nick_php/article/details/52187905 高可用集群( High Availability Cluster) 负载均衡集群(Load Balance Cluster) 科学计算集群(High Performance Computing Cluster) 1.高可用集群(High Availability Cluster) 常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "

Linux集群:LVS搭建负载均衡集群(二)

一.DR模式LVS搭建 1.准备工作 调度器dir:192.168.242.128 真实服务器rs1:192.168.242.129,网关恢复为之前的原始网关 真实服务器rs2:192.168.242.130,网关恢复为之前的原始网关 VIP:192.168.242.110 2.dir上编写脚本 [[email protected] ~]# vim /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forw

LVS/DR + keepalived搭建负载均衡集群

前面的lvs虽然已经配置成功也实现了负载均衡,但是我们测试的时候发现,当某台real server把nginx进程停掉,那么director照样会把请求转发过去,这样就造成了某些请求不正常.所以需要有一种机制用来检测real server的状态,这就是keepalived.它的作用除了可以检测rs状态外,还可以检测备用director的状态,也就是说keepalived可以实现ha集群的功能,当然了也需要一台备用director. 备用director也需要安装一下keepalived软件.ip

Apache+varnish(高性能开源HTTP加速器)搭建负载均衡集群

实验环境:RHEL6.5 实验环境4台 真机进行访问测试     willis.example.com         172.25.254.6 虚拟机1(缓存端)   varnish.example.com       172.25.254.8 虚拟机2(服务器端1) web1.example.com     172.25.254.10 虚拟机3(服务器端2) web2.example.com     172.25.254.20 两台服务器主要用于负载均衡实验. 实验内容:1.服务器端安装Ap

使用Haproxy+nginx 搭建负载均衡集群

案例环境 本案例使用三台服务器模拟搭建一套Web集群,如下所示: 实验步骤如下: 编辑安装nginx服务器安装依赖包下载nginx-01服务器[[email protected] ~]# yum -y install gcc pcre-devel zlib-devel[[email protected] ~]# wget https://nginx.org/download/nginx-1.6.3.tar.gz[[email protected] ~]# tar zxvf nginx-1.6.3