服务器群集分三种类型
负载均衡  处理多并发连接
高可用性  处理断点事故
高性能   支持扩展,提高处理能力
本文讲解的是linux服务器提供群集的负载均衡
负载均衡(LB  load balancing),在linux系统内,已经内置了由我国专家章文嵩编写的软件lvs。
可以通过grep  - i  ip_vs   /boot/config*  //- I   不区分大小写
linux服务器群集的负载均衡(札记)_第1张图片
对负载均衡集群有10种调度算法
4种固定调度算法
Rr   轮回调度   Wrr  //权重轮回   Dh  Sh
6种动态调度算法 
Lc  //最小连接   wlc   lblc  lblcr  nq
配置群集需要ipvsadm服务
ipvsadm的rpm软件包不再通常的server目录下,而是在cluster目录下.
cd  /mnt/cdrom/Cluster
rpm -ivh ipvsadm-1.24-8.1.i386.rpm
安装完后并不能正常启动
需要先写ipvsadm条目,然后执行
service  ipvsadm  save,当ipvsadm 有条目后,就可以启动服务了。
ipvsadm的用法:
两步
1. 添加虚拟服务
ipvsadm   -A  -t|u|f   vip:端口号码    -s  调度算法 
          -E   //替换
          -D   //删除
2. 指定realserver
ipvsadm   -a  -t|u|f    vip:端口号码   -r  rip:端口号   -m|-g|-i
          -e
          -d
查看连接
ipvsadm  -L -n  -c
lvs   负载均衡   三类    nat(-m )  dr(-g  默认)   tun(-i)
NAT模型
linux服务器群集的负载均衡(札记)_第2张图片
在director流量分发上的配置:
配置ip地址eth1:192.168.101.11  eth2:192.168.2.10
[root@station38 ~]# ipvsadm -A -t 192.168.101.11:80 -s wrr
[root@station38 ~]# ipvsadm -a -t 192.168.101.11:80 -r 192.168.2.20 -w 10 -m
[root@station38 ~]# ipvsadm -a -t 192.168.101.11:80 -r 192.168.2.30 -w 5 –m
service ipvsadm save  service ipvsadm start  chkconfig ipvsadm on
保存后的策略在/etc/sysconfig/ipvsadm
作为nat模型需要开启路由转发功能
vim  /etc/sysctrl.conf
net.ipv4.ip_forward = 1
sysctl –p  //重置内核参数
在realserver web1上的配置:
配置ip地址192.168.2.20和网关192.168.2.10
安装http服务器,编辑web服务器的主页面。
我们知道访问某一公司的网站是相同的,所以下边的两个web服务器需要做nfs存储共享同步。
先编辑其中一个web服务器的共享清单
Vim  /etc/exports 共享清单
/var/www/html   192.168.2.0/24(rw,sync)
exportfs –rv  察看共享清单
service nfs start
修改/var/www/html目录下的文件的权限,chmod o+w *,这样本地权限和网络权限都可读可写,在另一台web上就可以修改web页面。
在另一台web服务器上挂载这个目录
先showmount –e 192.168.2.20   察看远程计算机的共享清单
mount 192.168.2.20:/var/www/html  /var/www/html
也可以把它设置为永久挂载
vim  /etc/fstab
 
测试:
访问 http://192.168.101.11
linux服务器群集的负载均衡(札记)_第3张图片
通过在director上ipvsadm  -Ln查询流量的分发
linux服务器群集的负载均衡(札记)_第4张图片
可以看出权重高的是权重底的2倍。
DR模型:
linux服务器群集的负载均衡(札记)_第5张图片
dr模型的工作原理是访问director上的vip,然后访问后端的web服务器,web服务器回应消息时,是通过自己的vip发给客户。当然director上的vip和后端web服务器的vip是同一个地址,这样读者就有一个问题:既然ip相同,那访问vip时,是访问那个vip,消息到底发给谁?
解决一:
Linux内置有过滤arp请求,直接响应
arp_announce 
三个级别:0,default默认级别,用任何地址,能回答就回答
1, 尽量不用在不同子网和子接口的地址
2, 用最好的本地地址回答
arp_ignore   直接忽略
8个级别:0:default  默认
          1:仅仅和请求的本地地址接口的地址一样才响应,否则ignore。
          2.3…4…5..6..7..8
用sysctl –a |grep announce 可以查看arp_announce系统配置情况
同样sysctl  -a|grep ignore  查看arp_ignore的系统配置情况
默认都为0
所以在director上的配置:
一块网卡:eth0 192.168.2.10  
 vip是拿eth0的子接口来充当eth0:0  
Ifconfig  eth0:0  192.168.2.100 netmask  255.255.255.255
#ipvsadm -A -t 192.168.2.100:80 -s  rr
# ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.20 -g
# ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.30 -g
在所有的real server上边配置:
vip都是拿lo口的子接口来充当lo:0
Ifconfig lo:0  192.168.2.100  netmask 255.255.255.255
route  add  -host 192.168.2.100  dev lo:0  //配置一条路由强制返回时通过lo:0
vim   /etc/sysctl.conf
添加下边的两行,其实只需要all就可以了。all包含所有接口
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
sysctl  -p
测试:
访问 http://192.168.2.100
linux服务器群集的负载均衡(札记)_第6张图片
通过在director上ipvsadm  -Ln查询流量的分发
linux服务器群集的负载均衡(札记)_第7张图片
因为权重没写,默认为1,所以采用轮回调度算法后,访问比例为1:1
解决二:
用iptables过滤arp。貌似有点困难。。。。
这个我还没认真做过,大家有想法的可以去尝试,嘿嘿。。。