Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6838
  • 博文数量: 1
  • 博客积分: 34
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-19 23:47
文章分类
文章存档

2011年(1)

我的朋友
最近访客

分类: LINUX

2011-02-28 09:58:26

集群(Cluster):
按照某种方式把服务器连起来来完成一种特定的任务,提高服务器的响应能力。 scale on在单台主机上提高服务器性能 scale out 增加服务器的数量来提高,负载均衡的集群 
集群有三种:
 
1 LB(Load Balancing) 负载均衡 前端有个分发器(Director)负责接收客户端的请求分发服务到后端的realserver上(或者Dispatcher都是分发器)
2 HA(Hight Availability) 高可用集群(7x24 99.999% ;时时在线的提供服务,只有一个在线服务,另外的做备份)
3 HP(hight Performance) 高性能集群,把任务分片发给集群服务器,然后把结果收集,计算速度非常快
 
DIrector,(分发器可以通过软件或者硬件实现)
靠软件实现的分发器有二种:基于OSI模型四层和七层交换四层交换 负载均衡是通过ip+端口转发实现,实现不同的服务访问用LVS软件实现 七层交换 实现负载均衡,(squid,反向代理)负载均衡技术,需要特定的协议
LVS:Linux Virtual Server:开源的负载均衡,作者中国章文嵩,目前在阿里巴巴,首席科学家,LVS 是软件方式实现负载均衡,架构类似iptabless/netfilter   
LVS ipvsadm(工具)/ipvs(内核代码)现在的内核都内置了ipvs内核代码,从Linux内核版本2.6起,ip_vs code已经被整合进了内核中,因此,只要在编译内核的时候选择了ipvs的功能,您的Linux即能支持LVSLinux 2.4.23以后的内核版本也整合了ip_vs code,但如果是更旧的内核版本,您得自己手动将ip_vs code整合进内核原码中,并重新编译内核方可使用lvs

Virtual server:是前端分发器
 
Realserver:作为后端的主机,真正响应客户端请求
VIP: Virtual IP address 向客户端提供服务的ip地址,临时性的   
 
RIP: Real IP addresss 作为集群节点的地址
DIP: Director's IP address 用来与directory通信的ip CIP: Client computer's IP address 作为一个客户端来源来访问集群服务器
 
LVS 集群有三种类型:
LVS-NAT:LVS地址转换类型,就是目标地址转换 集群节点必须在同一个网络中,可以将端口映射到不同端口,directory可能成为系统瓶颈,一般工作在负载20台左右的服务器,不能作为大型的服务

LVS-DR:(directory routing)直接路由类型,linux集群用的最多的一种 DR要求每一个集群节点要与dirctor在同一个网络中,RIP不要求都是私有地址,VIP必须是公网ip,接受进来的请求,对出去的请求不做管理,Rserver的网关不指向Directory,Directory不能重新映射端口,大多数操作系统都可以做Reserver,但windown不能做,支持更多的主机服务器,管理员可以直接远程对服务器管理. 缺点:服务器地址直接面向客户端,不安全

lVS-TUN LVS隧道模式;和DR网络模型一样,但是Director和Reserver可以不再同一网段中,可以实现异地容灾的功能. Directory和Reserver通信是建立一个隧道,在二台主机直接建立一个管道,RIP不能使用私有地址,不能做端口映射,跟DR一样,只有支持隧道协议的操作系统才能作为Reserver
LVS调度方法,算法10种:
当客户端请求时,Directory要根据算法把请求重定向到后台服务器上响应 静态的固定算法(不考虑Realserver上实际存活的数目)
1 Round-robin RR(轮询)当一个新的连接请求到达时,director只是顺序的选择一个下realserver
2 Weighted Round-Robin WRR:加权轮询,给每一个reserver一个权重来确定下一个请求给谁,权重越大分到请求越多
3 Destination Hashing  DH(目标散列)相当于DNAT,来自同一个ip的请求都重定向到同一个Realserver上去,保证目标地址不变4 Source hashing SH(源散列)相当于SNAT,算法正好与目标地址散列调度算法相反,当来自同一个服务器的响应。还通过同一个路由器出去响应给客户端,保证源地址不变,在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口 动态调度算法(通过检查服务器当前连接的活动状态决定如何进行调度) 
5 LC(最少连接) 新的连接请求将被分配至当前连接数最少的RealServer上;最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减一
6 WLC(加权最少连接) 在原有的最少连接的基础上给realserver一个权重,是比较理想的算法
7 SED:最短期望延迟,对wlc的改进,
8 NQ :永不排队,对sed简单改进,还检查当前服务器有没有连接
9 LBLC:基于本地的最少连接,动态的DH,不仅检查是不是请求是不是同一个ip还检查当前有没有连接
10 LBLCR:带复制的最少连接,对lblc的改进,当第二个realserver上的全部请求断开,允许第一个realserver上的请求复制到第二个realserver上响应,减轻第一个realserver上的负担

ipvsadm用法:
grep -i ip_vs /boot/config-2.6.18-164.e15 查看系统内核有没有ipvs
yum install ipvsadm 若没有则安装ipvsadm工具
ipvsadm 是一个工具用于写规则
ipvsadm -Lcn 查看当前的所有连接,或者cat /proc/net/ip_vs_conn 查看虚拟服务和RealServer上当前的连接数
数据包数和字节数的统计值,则可以使用下面的命令实现:
ipvsadm -l --stats
查看包传递速率的近似精确值,可以使用下面的命令:
ipvsadm -l --rate
   
ipvsadm -Ln 查看定义的服务
ipvsadm 
-A 定义服务,
-a 加入realserver
–s指定算法
–t服务类型
–f防火墙标记
–r realserver实际服务器
–g或者–m指定lvm类型,
-m指定lvm类型为nat,
-g指定lvm类型为路由,默认的
-i表示隧道
–m指定伪装
–w指定权重
–E 更改算法类型
ipvsadm -D 删除服务
ipvsadm –d 删除某一个realserver 
ipvsadm -Z 清空计数器
ipvsadm -C 清空规则
ipvsadm -S >/root.a.ipvs 保存规则到一个位置
ipvsadm –S> /etc/sysconfig/ipvs-config =ipvsadm-save保存规则
ipvsadm –R
redhat默认在/etc/init.d/ipvsadm 有一个ipvsadm的脚本
LVS ipvsadm -A -t 192.168.0.3:80 -s rr 定义ipvs
负载均衡:LVS-NAT实现:
实验环境:
1 三台RHEL5.4虚拟机,二台作安装好web作为后端Realserver,另一台作为Director,Realserver的网关都指向Director,
2 Director上需要二个网卡,一个公网地址向外提供服务,一个内网地址可以是私有地址与Realserver通信。Director上开启路由转发功能。
3 Realserver ip 192.168.0.55/192.168.0.56,网关192.168.0.100 
  Director ip 外网卡:10.0.0.10,内网卡192.168.0.100 
配置好Realserver上的ip和网关,开启web服务,主要在Director上配置
ipvsadm -A -t 10.0.0.10:80 -s wlc
    ipvsadm -a -t 10.0.0.10:80 -r 192.168.0.55 -m -w 2   
    ipvsadm -a -t 10.0.0.10:80 -r 192.168.0.56 -m -w 5
vim /etc/sysctl
net.ipv4.ip_forward = 1 #开启路由转发
 
LVM-nat的脚本
#!/bin/bash
# case “$1”in
start)
    ipvsadm -A -t 192.168.0.83:80 -s wlc
    ipvsadm -a -t 192.168.0.83:80 -r 192.168.10.6 -m -w 2   
    ipvsadm -a -t 192.168.0.83:80 -r 192.168.10.7 -m -w 5 ;;
stop)
    ipvsadm –C ;;
status)
    ipvadm -Ln ;;
esac
ipvsadm –Ln 查看所有连接 ipvsadm –E 192.168.0.83::80 –s wrr (基于权重,权重大的连接将多)
 
负载均衡 LVS-DR server
实验环境:
1 三台RHEL5.4虚拟机,二台作安装好web作为后端Realserver,另一台作为Director
2 Director上需要一个网卡,地址都为公网地址,VIP必须是公网地址,RIP可以是私网地址但要与Director通信时要进行解析。所以这里全部使用公网地址,不需要指定网关
Director上开启路由转发功能。
3 Realserver ip 192.168.0.55/192.168.0.56,
  Director ip 192.168.0.100 VIP 192.168.0.200
当客户端发出请求时reserver都会响应,为避免realserver都响应可以:
1 通过防火墙不让arp数据包进来
2 linux内核有二个参数,配置完后避免arp请求
 
配置过程:
在两个Rserver上各配置vip
 ifconfig lo:0 192.168.0.200 broadcast 192.168.0.200 netmask 255.255.255.255 up
在二个Rserver上配置路由信息通过lo:0接口才出去
route add -host 192.168.0.200 dev lo:0
在二个web服务器上做地址隐藏 vim /etc/sysctl.conf
vim /etc/sysctl.conf 地址隐藏
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
sysctl -p 重新读取配置文件
 Directory上配置
ifconfig eth0:0 192.168.0.100 broadcast 192.168.0.100 netmask 255.255.255.255 up
ipvsadm -A -t 192.168.0.200:80 -s wlc
ipvsadm -a -t 192.0.200:80 -r 192.168.0.55 -g -w 5
ipvsadm -a -t 192.0.200:80 -r 192.168.0.56 -g -w 8
server ipvsadm save
二个Realserver可以通过一个nfs服务器共享网站资源,是二个Realserver的网站内容同步提供同样的网站内容
配置完成后直接通过:访问网站 
 
Director脚本:
#!/bin/bash
# LVS script for VS/DR
. /etc/rc.d/init.d/functions
VIP=192.168.0.200
RIP1=192.168.0.55
RIP2=192.168.0.56
PORT=80
case "$1" in
start)          
 /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
 /sbin/route add -host $VIP dev eth0:1
# Since this is the Director we must be able to forward packets
 echo 1 > /proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
 /sbin/iptables -F
# Reset iptables counters.
 /sbin/iptables -Z
# Clear all ipvsadm rules/services.
 /sbin/ipvsadm -C
# Add an IP virtual service for VIP 192.168.0.200 port 80
# In this recipe, we will use the round-robin scheduling method.
# In production, however, you should use a weighted, dynamic scheduling method.
 /sbin/ipvsadm -A -t $VIP:80 -s wlc
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1
 /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 2
 
 /bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
# Stop forwarding packets
 echo 0 > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
 /sbin/ipvsadm -C
# Bring down the VIP interface
 /sbin/ifconfig eth0:1 down
 /sbin/route del $VIP
 /bin/rm -f /var/lock/subsys/ipvsadm
 echo "ipvs is stopped..."
;;
status)
 if [ ! -e /var/lock/subsys/ipvsadm ]; then
    echo "ipvsadm is stopped ..."
 else
    echo "ipvs is running ..."
    ipvsadm -L -n
 fi
;;
*)
 echo "Usage: $0 {start|stop|status}"
;;
esac
 
 
RealServer脚本:
#!/bin/bash
# Script to start LVS DR real server.
# description: LVS DR real server
. /etc/rc.d/init.d/functions
VIP=192.168.0.200
host=`/bin/hostname`
case "$1" in
start)
       # Start LVS-DR real server on this machine.
        /sbin/ifconfig lo down
        /sbin/ifconfig lo up
        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
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        /sbin/route add -host $VIP dev lo:0
;;
stop)
        # Stop LVS-DR real server loopback device(s).
        /sbin/ifconfig lo:0 down
        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
;;
status)
        # Status of LVS-DR real server.
        islothere=`/sbin/ifconfig lo:0 | grep $VIP`
        isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
        if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the lo:0 device
            # not found.
            echo "LVS-DR real server Stopped."
        else
            echo "LVS-DR real server Running."
        fi
;;
*)
            # Invalid entry.
            echo "$0: Usage: $0 {start|status|stop}"
            exit 1
;;
esac

阅读(625) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~