简介:在互联网应用中,随着站点对硬件性能、响应速度、服务器的稳定性、数据的可靠性等要求越来越高。在访问量比较大的情况下,单台服务器已经不堪重负。除了使用昂贵的大型机和负载分流设备以外,企业还可以用另一种解决办法。那就是搭建负载均衡群集---通过整合多台廉价的普通服务器,以同一个地址对外提供相同的服务。
接下来由毛毛为大家讲解下企业中最常见的群集技术----LVS(Linux Virtual Server,Linux虚拟服务器)。
1.群集的类型
负载均衡群集:为了提高系统的响应能力,尽可能处理更多访问请求,减少延迟,为目标提供高并发,高负载的整体性能。实现方法就是将来自客户端的请求,分担给多个服务器节点,从而缓解整个系统的负载压力。如:DNS轮询、反向代理等。
高可用群集:尽可能的减少故障的中断时间,确保服务的连续运行。例如:故障切换、双机热备、多机热备等都属于高可用群集技术。
高性能高运算群集:用来提高CPU运算速度扩展硬件资源和分析能力为目的。例如:云计算。网格计算等。
2.负载均衡的分层结构
第一层:负载调度器:访问群集的唯一入口,对外使用VIP(虚拟IP),也成为群集IP。一般都有两台服务器,为防止单点故障。
第二层:服务器池:为群集提供真实的应用服务(HTTP、FTP等)。只处理敷在调度器分发过来的客户请求。当某一节点有故障时,如在调度器会将其隔离。等待错误排除后再重新纳入服务器池。
第三层:共享储存:为服务器池中的所有节点提供稳定、一致的文件存取服务。确保群集内容的统一性。也就是说让所有服务器的文件都是一样的。
3.负载均衡的调度算法。
前面我们知道了。第一层负载调度器会将客户的请求分配给第三层的服务器池里的节点服务器。但是它是根据什么分配的呢?下面我就讲解下常用的LVS的负载调度算法。
l 轮询(rr):负载调度器收到的请求按照顺序分配给给节点服务器。均等对待每一台节点服务器。
l 加权轮询(wrr):根据真实的服务器的处理能力去分配收到的访问请求。调度器会自动查询各节点的负载情况,并自动调整权重。
l 最少连接(lc):根据真实服务器已经建立的连接数进行分配,将受到请求最先给连接数较少的节点服务器,在服务器性能基本一致情况下可以选择此算法。
l 加权最少连接数(wlc):在服务器节点性能差异大的情况下,负载调度器可以自动调整服务器权重。权重较高的服务器将承担跟大的客户请求。
4.负载均衡的三种模式
? 地址转换:简称NAT模式。就是负载调度器作为所有服务器的网关。即是客户访问的入口,也是服务器回应客户访问的出口。
? IP隧道:简称TUN模式。开放式网络结构。服务器全部都是直接连接公网。
调度器作为客户访问入口。各节点服务器直接从公网上回复客户。不经过调度器。
? 直接路由:简称DR模式。跟TUN类似。但是各节点不是分散在各地。而是集中在同一网络结构中。
项目环境:
主调度器:192.168.1.129
备用调度器:192.168.1.128
节点一:192.168.1.130
节点二:192.168.1.131
第一层调度器设置
1. 安装ipvsadm管理工具
Ipvsadm是负载调度器上的lvs群集管理工具。通过ip_vs模块添加,删除服务器节点,以及查看群集的状态。
2. 安装keepalived
在安装keepalived前。先安装依赖包。除此之外,LVS集群环境中也要用到ipvsadm上面已经安装过了。
如果是编译安装(make ,make install)那么要将keepalived添加为系统服务。
3. 主调度器配置 纠错:主从调度器都是192.168.1网段。图片有误。
启动服务器
用ip a查看看到VIP绑定在网络接口上,说明配置成功。从调度器是没有的。
4. 设置从调度器
从调度器和主调度器配置基本相同。现在只需要调整router_id,state,priority参数即可。配置完成后重启keepalived。
第二层服务器池设置 :网络节点一:192.168.1.130 节点二:192.168.1.131的设置
5. 配置各个节点服务器
根据选择的群集模式不同DR/NAT,节点服务器的配置也有差异。以DR为例,除了要调整/proc系统的ARP响应参数意外,还要为虚拟接口lo:0配置VIP配置。并添加一条道VIP的本地路由。
vi /etc/rc.d/init.d/realserver #编辑,添加以下代码
#################################################
#!/bin/sh
# chkconfig: - 80 90
# description:realserver
# httpd_vip start realserver
httpd_vip=192.168.21.254 #LVS虚拟服务器(VIP)
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $httpd_vip netmask 255.255.255.255 broadcast $httpd_vip
/sbin/route add -host $httpd_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 $httpd_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 1
esac
exit 0
#################################################
chmod +x /etc/rc.d/init.d/realserver #添加脚本执行权限
chkconfig realserver on #添加开机启动
/etc/rc.d/init.d/realserver start #开启,参数stop为关闭
5.2调整节点服务器参数,使LVS虚拟服务器(VIP)忽略ARP广播包
vi /etc/sysctl.conf #编辑
net.ipv4.ip_forward= 1 #修改0为1,开启转发
net.ipv4.conf.lo.arp_ignore= 1
net.ipv4.conf.lo.arp_announce= 2
net.ipv4.conf.all.arp_ignore= 1
net.ipv4.conf.all.arp_announce= 2
:wq! #保存退出
/sbin/sysctl -p #使配置立即生效
6. 验证结果
在主从调度器上查看各节点是否加入LVS
在节点服务器的网站根目录下创建测试网页。
关闭192.168.1.130节点服务器。网站内容跳转到192.168.1.131上。说明LVS搭建成功。Keepalived稍后测试。
现在关闭192.168.1.130节点。再次访问192.168.1.222
这时在查看lvs中的节点服务器。发现192.168.1.130这个故障机器已经被隔离。这剩下正常服务器131。当130恢复正常后lvs会将它自动加入lvs服务器池中。
接下来测试keeplived是否搭建成功。
首先关闭主节点服务器192.168.1.129看是否还可以正常访问192.168.1.222那么keeplived搭建成功。如果不成功请检查以上所有步骤。
7.共享储存这个用NFS比较简单。大家查阅资料即可。这里就不说了。