CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

LB集群是locd balance集群的简称、翻译成中文是:负载均衡集群的意思;集群是一组相互独立的、通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理。LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统。

负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案。负载均衡集群把用户的请求尽可能的平均分发到集群的各台计算机上处理,这样每个节点都可以承担一定的访问请求,这些请求访问在各个节点之间是动态分配,以实现负载均衡。负载均衡集群可以:1)、分担访问的流量(负载均衡);2)、保持业务的连续性(高可用)常见的负载均衡软件有:nginx、haproxy、LVS。

高可用集群:指在集群的计算机中,任意一个节点出现故障的情况下,节点上的所有任务自动转移到其他正常的节点上,并且在此过程中不影响整个集群的运行,保持业务的连续性。当一个机器宕机另一台进行接管。比较常用的高可用集群开源软件有:keepalive,heartbeat。

LVS有三种工作模式,三种工作模式如下:

工作模式          VS/NAT           VS/TUN          VS/DR

Real server        Config dr gw       Tunneling        Non-arp device/tie vip

(节点服务器)

Server Network      Private          LAN/WAN          LAN

Server number       Low 10-20         High 100         High 100

(节点数量)

Real server gateway   Load balance       Own router        Own router

优点            地址和端口转换     Wan环境加密数据     性能最高

缺点            效率低          需要隧道支持     不能跨域LAN

常用的调度算法:

固定调度算法:rr,wrr,dh,sh

rr:轮询算法,它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS节点处理性能差不多的情况

wrr:加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得需要的RS

sh:源地址哈希调度(sourcehashing)以源地址为关键字查找一个静态hash表来获得需要的RS

动态调度算法:wlc,lc,lblc,lblcr

wlc:加权最小连接数调度,假设各台RS的全职依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS

lc:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS.

lblc:基于地址的最小连接数调度(locality-basedleast-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LVS+Kkeepalived的VS-DR模式实现web服务的负载均衡高可用

安装的配置:

操作系统:CentOS release 6.7 (Final)

内核版本:2.6.32-573.el6.x86_64

LVS版本:ipvsadm v1.26

keepalived版本:Keepalived v1.2.13

服务器配置:

LVS主服务器:hostname:DR1;eth0:192.168.171.10,VIP:eth0:0192.168.171.100

LVS备服务器:hostname:DR2;eth0:192.168.171.20,VIP:eth0:0192.168.171.100

WEB服务器:

hostname:RS1;eth0:192.168.171.30,VIP:lo:0192.168.171.100

hostname:RS2;eth0:192.168.171.40,VIP:lo:0192.168.171.100

1、分别在两台web服务器(真实服务器)上操作

1)、关闭SELinux

vim /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

setenforce 0 #使配置立即生效

2)、配置防火墙,开启80端口

vim /etc/sysconfig/iptables  #编辑

-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT  #允许80端口通过防火墙

:wq! #保存退出

/etc/init.d/iptables restart #重启防火墙使配置生效

3)、绑定LVS虚拟服务器的虚拟IP地址(192.168.171.100)到lo:0,编写的脚本如下:

vim /usr/local/sbin/lvs_rs_dr.sh

#!/bin/bash

#description lvs rs shell

. /etc/rc.d/init.d/functions

vip=192.168.171.100

#打开vip

case "$1" in

start)

echo "Start LVS of Real Server."

/sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $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

;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVS of Real Server."

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 "Usage:$0 {start|stop}"

exit 1

esac

exit 0

chmod +x /usr/local/sbin/lvs_rs_dr.sh      #增加脚本的执行权限

echo "/usr/local/sbin/ lvs_rs_dr.shstart" >> /etc/rc.local #添加开机启动(如果需要)

2、分别在两LVS服务器(调度器)上操作

1)、关闭SELinux

vim /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

setenforce 0 #使配置立即生效

2)、配置防火墙规则

-A RH-Firewall-1-INPUT -d 224.0.0.18 -jACCEPT  #允许VRRP(虚拟路由器冗余协议)组播地址通信

-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT  #允许80端口通过防火

:wq! #保存退出

/etc/init.d/iptables restart #重启防火墙使配置生效

3)、安装lvs软件(其实是管理LVS的一个工具),和安装高可用软件keepalived

yum install ipvsadm  #Linux 2.6内核已经集成了lvs软件,此处ipvsadm为lvs管理工具

modprobe ip_vs  #加载ip_vs

yum install keepalived      #yum安装可以解决软件依赖问题,建议源码安装

4)、配置keepalived

keepalived安装的默认配置文件在/etc/keepalived/keepalived.conf

在主服务器上修改keepalived.conf的配置,如下:

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

#全局定义部分

global_defs {

notification_email {

[email protected]     #设置报警邮件地址,可以设置多个,

#每行一个,需要有sendmail的服务支持

}

notification_email_from [email protected]  #设置邮件发送地址

smtp_server 127.0.0.1            #SMTP服务地址

smtp_connect_timeout 30          #设置SMTP服务超时时间

router_id LVS_DEVEL            #运行keepalived服务器的一个标识

}

#vrrp实例定义部分

vrrp_instance VI_1 {

state MASTER         #主服务器是MASTER,备用服务器是BACKUP

interface eth0        #指定HA监控的网络接口

virtual_router_id 51      #虚拟路由表示,同一个vrrp实例要相同,且唯一

priority 100          #定义优先级,数字越大,优先级越高

advert_int 1        #MASTER和BACKUP负载均衡器之间的检查时间间隔

authentication {        #验证类型和密码

auth_type PASS    #验证类型:PASS和AH

auth_pass 1111     #密码,同一VRRP实例需要相同

}

virtual_ipaddress {

192.168.171.100     #设置虚拟IP地址,可以多个,一行一个

}

}

#虚拟服务器定义部分

virtual_server 192.168.171.100 80 {     #虚拟服务的IP和端口

delay_loop 3                #运行情况检查时间

lb_algo rr                 #负载调度算法

lb_kind DR                #LVS负载均衡模式,NAT/TUN/DR

persistence_timeout50       #会话保持时间,在做测试的时候建议注释。

protocol TCP              #指定转发协议类型,TCP/UDP

real_server 192.168.171.30 80 {      #真实服务器,节点1

weight 1                   #服务节点的权值

TCP_CHECK{

connect_timeout 3        #3秒无响应超时

nb_get_retry 3           #重试次数

delay_before_retry 3     #重试间隔

connect_port=80

}

}

real_server 192.168.171.40 80 {       #真实服务器,节点2

weight 1

TCP_CHECK{

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port=80

}

}

}

从服务器keepalived.conf的配置和主服务器上基本相同,只需要修改两个地方:

state MASTER  -> state BACKUP

priority 100 -> priority 90

3、开启服务,验证测试

1)、在后端的两台WEB服务器(RS)上执行 /usr/local/sbin/lvs_rs_dr.sh start ,开启lo:0虚拟ip

2)、在两台LVS服务器(DR)开启端口转发和开启keepalived服务器(先主后从),启动keepalived服务会自动生成vip和ipvsadm规则

echo 1 > /proc/sys/net/ipv4/ip_forward #也可以执行修改: vim /etc/sysctl.conf       文件里面的参数,使用/sbin/sysctl–p 使之生效

/etc/init.d/keepalived start              #开启keepalived服务(先主后从)

3)、验证测试

在主lvs服务器上开启了keepalived服务,可以使用ip addr 查看虚拟的ip地址,使用ipvsadm –ln查看lvs的配置信息。

测试负载效果,使用浏览器访问:http://vip (192.168.171.100),为了更改的显示测试效果,我们修改后端WEB服务器是首页的默认主页内容:

RS1修改为:1111111111111111111RS1;

RS2修改为:1111111111111111111RS2;

在浏览器上可能因为缓存的缘故,会总是访问一台机器,可以使用Curl做测试(Windows下也可以安装)。

按照当前的配置会把访问的请求均衡分发给后端的机器。

4、模拟故障:

1)、主LVS上的keep服务出现故障(如keepalived服务被关闭了),查看备lvs是否接管服务。

2)、后端的RS(web服务器)其中的一台发生了故障,LVS服务器上的keepalived是否监测到,并将其故障的服务器剔除,不造成访问受限。

3)、主LVS服务器出现故障重新恢复工作后,查看其是否能重新接管服务。

4)、后端的RS(web服务器)发发生故障重新恢复工作后,检查其是否可以重新加入集群正常工作。

时间: 2024-10-13 00:06:16

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置的相关文章

CentOS Linux 负载均衡高可用WEB集群之Nginx+Keepalived配置

Nginx+Keepalived实现负载均衡高可用的WEB服务集群,nginx作为负载均衡器,keepalived作为高可用,当其中的一台负载均衡器(nginx)发生故障时可以迅速切换到备用的负载均衡器(nginx),保持业务的连续性. 1.服务器的环境配置及IP分配 操作系统:CentOS release 6.7 (Final) nginx版本:nginx/1.8.0 keepalived版本:Keepalived v1.2.13 Nginx + keepalived服务器的IP分配表 服务器

HAproxy+Keepalived负载均衡-高可用web站

haproxy+keepalived负载均衡高可用web站   OS IP 子网掩码 路由网关 Centos6.6 HAproxy Keepalived Eth0:192.168.26.210 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6 HAporxy Keepalived Eth0:192.168.26.211 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6(WE

Keepalived+Nginx+Tomcat 实现高可用Web集群(转)

Keepalived+Nginx+Tomcat 实现高可用Web集群 溯水心生 关注 2018.01.08 20:28* 字数 1382 阅读 965评论 1喜欢 9 集群规划图片 一.Nginx的安装过程 1.下载Nginx安装包,安装依赖环境包 (1)安装 C++编译环境 yum -y install gcc #C++ (2)安装pcre yum -y install pcre-devel (3)安装zlib yum -y install zlib-devel (4)安装Nginx 定位到n

heartbeat httpd nfs 实现高可用web集群

一 环境准备 二 拓扑结构 三 前提条件 四 安装相关软件 五 配置heartbeat 六 测试web集群 七 问题汇总 八 共享存储 一 环境准备 操作系统 centos 6.4 x86_64 最小化安装 如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X YUM 安装 Vim man ntp "development tools" "server platform development" "des

corosycn&pacemaker的高可用web集群

基本拓扑: 两台高可用节点: node1:192.168.191.112 node2:192.168.191.113 NFS服务器:192.168.191.111 web服务的流动IP:192.168.191.199 一.准备工作: 1).node1---node2 基于主机名通信 1.编辑/etc/hosts文件添加如下内容 192.168.191.112 node1.liaobin.com node1 192.168.191.113 node2.liaobin.com node2 2.编辑/

Nginx+Tomcat+Keepalived实现高可用web集群

Nginx+Tomcat+Keepalived实现高可用web集群: 环境:CenOS 6.5Nginx-Master:10.10.10.128Nginx-Backup:10.10.10.129Tomcat1:10.10.10.130Tomcat2:10.10.10.131VIP:10.10.10.100 一.环境基础配置1.更换国内yum源2.关闭防火墙.SELinux3.时间同步 二.Web端安装Web服务 1.查看是否安装JDK [[email protected] ~]# java -v

搭建高可用mongodb集群(一)——配置mongodb

搭建高可用mongodb集群(一)--配置mongodb 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制. 高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病. 高性能,Nosql通过简单的key-value方式获取数据,非常快速.还有N

Linux HA Cluster高可用服务器集群,所谓的高可用不是主机的高可用,而是服务的高可用。

什么叫高可用:一个服务器down掉的可能性多种多样,任何一个可能坏了都有可能带来风险,而服务器离线通常带来的代价是很大的,尤其是web站点,所以当某一台提供服务的的服务器down掉不至于服务终止的就叫高可用. 什么叫心跳:就是将多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息很简短很小的通告给同一个网络中的备用服务器的主机,告诉其实主机自己依然在线,其它服务器收到这个心跳信息就认为本机是在线的,尤其是主服务器. 心跳信息怎么发送,由谁来收,其实就是进程中的通信两台主机是没法

heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群

安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2 提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样. #   IP                         HOSTNAME             ALIAS 10.204.80.79     node1.mylinux.com     node1 10.204.80.80