lvs+keepalived

mac2022-06-30  76

具体解释参考:http://www.linuxvirtualserver.org/zh/lvs4.html  

   基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。IPVS实现负载均衡机制有三种: VS/TUN :即(Virtual Server via IP Tunneling) 也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下, 网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为 RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端 看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

VS/DR: 即(Virtual Server via Direct Routing) 也就是用直接路由技术实现虚拟服务器。它的连接调度 和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

lvs支持8种不同的调度算法:

轮叫调度(Round-Robin Scheduling)加权轮叫调度(Weighted Round-Robin Scheduling)最小连接调度(Least-Connection Scheduling)加权最小连接调度(Weighted Least-Connection Scheduling)基于局部性的最少链接(Locality-Based Least Connections Scheduling)带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)目标地址散列调度(Destination Hashing Scheduling)源地址散列调度(Source Hashing Scheduling)

通过LVS+Keepalived构建的LVS集群,LVS负载均衡用户请求到后端RS服务器,Keepalived的作用是检测web服务器的状态,如果有一台RS 服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。keepalived可以实现服务的高可用或热备,用来防止单点故障的问题;而Keepalived的核心VRRP协议,VRRP协议主要实现了在路由器或三层交换机处的冗余;Keepalived就是使用VRRP协议来实现高可用的;Keepalived启动后会有三个进程:    父进程:内存管理,子进程管理    子进程:VRRP子进程    子进程:healthchecker子进程高可用集群构建前提:1.proxy和proxy2节点时间必须同步;192.168.12.92   lvs-slave192.168.12.38    lvs-master192.168.12.22   lvs-web2 b192.168.12.25   lvs-web1 a192.168.12.230  vip(1)本次基于VMware Workstation搭建一个四台Linux(CentOS 6.6)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器(2)本次实验基于DR负载均衡模式,设置了一个VIP(Virtual IP)为192.168.12.230,用户只需要访问这个IP地址即可获得网页服务。其中,负载均衡主机为192.168.12.38,备机为192.168.12.92。Web服务器A为192.168.12.25,Web服务器B为192.168.80.22一、1)将机器绑定ip地址vi /etc/sysconfig/network-scripts/ifcfg-eth0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.12.22NETMASK=255.255.255.0GATEWAY=192.168.12.1DNS1=114.114.114.114DNS2=202.106.0.20或者用setup命令更改2)设定主机名hostname XXXvi /etc/sysconfig/network3)IP地址与主机名绑定 vi /etc/hosts192.168.12.92 lvs-slave192.168.12.6 lvs-master192.168.12.22 lvs-web2192.168.12.25 lvs-web1#在Master与Backup服务器上分别安装Ipvsadm、Keepalivedyum install -y ipvsadm kernel-devel perl  perl-DBI  perl-DBD-MySQL  make gcc openssl-devel libnl*yum install -y keepalived ipvsadm#这里安装Ipvsadm工具主要是为了查看lvs规则使用chkconfig --add keepalivedchkconfig keepalived onchkconfig --list keepalived内核优化 主要是开启内核转发vi /etc/sysctl.conf#———————————————————————————————————————————-net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1200net.ipv4.ip_local_port_range = 1024 65000net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_max_tw_buckets = 5000net.core.somaxconn = 32768net.ipv4.tcp_keepalive_probes = 5net.ipv4.tcp_keepalive_intvl = 20net.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.ipv4.tcp_rmem = 4096 87380 16777216net.ipv4.tcp_wmem = 4096 65536 16777216net.core.netdev_max_backlog = 32768net.ipv4.tcp_timestamps = 0net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2net.ipv4.tcp_retries2 = 5net.ipv4.tcp_mem = 41943040 73400320 94371840net.ipv4.tcp_max_orphans = 3276800fs.file-max = 1300000#LVS虚拟服务器(VIP)忽略ARP广播包net.ipv4.ip_forward= 1net.ipv4.conf.lo.arp_ignore= 1net.ipv4.conf.lo.arp_announce= 2net.ipv4.conf.all.arp_ignore= 1net.ipv4.conf.all.arp_announce= 2配置备负载服务器 192.168.12.38cat /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {   notification_email {   zclzhao@admin.com    发生故障时发送的邮箱   }   notification_email_from admin@admin.com    使用哪个邮箱发送   smtp_server 192.168.12.1    发件服务器   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_instance VI_1 {    state BACKUP        指定keepalived的角色,MASTER为主,BACKUP为备    interface eth1        指定网络接口    virtual_router_id 5 虚拟路由编号,主备要一致    priority 99            定义优先级,数字越大,优先级越高,主DR必须大于备用DR    advert_int 1        检查间隔,默认为1S    authentication {    定义认证        auth_type PASS    认证方式为口令认证        auth_pass 1111    认证口令    }    virtual_ipaddress {    定义vip        192.168.12.230    多个vip可以换行添加    }}virtual_server 192.168.12.230 80 {    delay_loop 6        每隔6秒查看realserver状态    lb_algo wrr            调度算法为加权最小连接数    lb_kind DR            lvs工作模式为DR(直接路由)模式    nat_mask 255.255.255.0    persistence_timeout 0 同一IP的连接0秒内分配到同一台realserver (这个0根据实际环境更改)    protocol TCP        用TCp检测realserver的状态    real_server 192.168.12.22 80{    定义realserver        weight 3                    定义权重        TCP_CHECK {                    注意TCP_CHECK和{之间的空格,如果没有的话只会添加第一个realserver}            connect_port 80            connect_timeout 10        10秒无反应超时            nb_get_retry 3            delay_before_retry 3        }}    real_server 192.168.12.25 80 {        weight 3        TCP_CHECK {            connect_port 80            connect_timeout 10            nb_get_retry 3            delay_before_retry 3        }    }}配置主lvs的keepalived,只需要将state BACKUP 改为state MASTER,将priority 99 的值改成100配置两台web    192.168.12.22操作cat /etc/init.d/realserverSNS_VIP=192.168.12.230            定义虚拟ip. /etc/rc.d/init.d/functions    调用init.d脚本的标准库case "$1" instart)       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP       /sbin/route add -host $SNS_VIP dev lo:0       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce       sysctl -p >/dev/null 2>&1       echo "RealServer Start OK"       ;;stop)       ifconfig lo:0 down       route del $SNS_VIP >/dev/null 2>&1       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce       echo "RealServer Stoped"       ;;*)       echo "Usage: $0 {start|stop}"       exit 1esacexit 0chmod 755 /etc/init.d/realserverservice realserver start将realserver启动脚本考到192.168.12.25/etc/init.d/下scp /etc/init.d/realserver root@192.168.12.22:/etc/init.d/realserver验证测试指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器;

转载于:https://www.cnblogs.com/zclzhao/p/4938488.html

最新回复(0)