什么是集群
一组通过高速网络互联的计算机组,并以单一系统模式加以管理
将很多服务器集中起来提供同一种服务,客户端看来像只有一个服务器
在较低成本情况下获得较高 的性能 可靠性 灵活性

任务调度 是集群系统的 核心技术

集群目的
提高性能 降低成本 提高可扩展性 增强可靠性(多节点)

集群分类
HPC 高性能计算集群(航天,航空,勘探) 专业领域
LB 负载均衡集群(平衡负载) LVS HAproxy
HA 高可用集群(热备份) keepalived RHCS(银行)


LVS 集群
组成
前端 负载均衡(一或多调度器)
中间 服务器群组(一组服务器)
底端 数据共享储存层

LVS术语
Director Server 调度服务器
Real Server 真实服务器
VIP 公布给用户访问的虚拟IP
RIP 集群节点上的IP地址
DIP 调度器连接节点IP地址

LVS负载均衡模式
NAT 网络地址转换模式 -m
通过地址转换实现,数据流量都通过调度器有瓶颈
DR 直连路由模式 -g (默认)
使用路由技术实现 节点服务器需要配置VIP 注意MAC地址广播
TUN 隧道模式 -i (用的少略过)
通过隧道实现

LVS负载均衡调度算法 (10种)
#man ipvsadm
常用的4种 :
RR 轮询 Round Robin 平均分法
WRR 加权轮询 Weighted Round Robin 权重值轮询
LC 最少链接 Least Connections 选连接数最少的
WLC 加权最小链接 Weighted Least Connections 权重选则最少连接


LVS的IP负载均衡通过IPVS模块实现

使用LVS配置负载均衡集群
配置LVS/NAT模式负载均衡集群
配置LVS/DR模式负载均衡集群

rhel6基本操作
#chkconfig iptables off #取消开机自起
#service iptables stop #关闭防火墙
#setenforce 0 #关闭selinux

环境准备
配置192.168.4.50(调度器):
开启内核路由转发功能,使其能够收发来自不同网段的ip包
#vim /etc/sysctl.conf 开启内核路由
net.ipv4.ip_forward = 1
#sysctl -p

168.4.51/52(真实服务器):
运行网站服务并编写网页文件
设置网关地址 ( DIP)
#route add default gw 192.168.4.50
#文件中写 GATEWAY=192.168.4.50 永久保存
#ifdown eth1
#ifup eth1

168.2.253(客户机):
设置网关地址 ( 调度器和公网相连的地址)

一、配置LVS/NAT模式负载均衡集群 (50)
安装软件包 ipvsadm
#rpm -ivh ipvsadm-1.26-4.el6.x86_64.rpm
#ipvsadmin -v

添加虚拟服务
#ipvsadm -A -t 192.168.2.50:80 -s rr
-A 添加虚拟服务器
-t 设置集群地址(Virtual IP)
-s 指定负载调度算法 rr wrr lc wlc

添加realserver
#ipvsadm -a -t 192.168.2.50:80 -r 192.168.4.51:80 -m
#ipvsadm -a -t 192.168.2.50:80 -r 192.168.4.52:80 -m
-a 添加真实服务器
-d 删除真实服务器
-r 指定真实服务器 Real Server
-w 为节点服务器设置权重 默认为1
-m NAT模式
-g DR模式
-i TUN模式

查看服务
#ipvsadm -Ln
-n以数字(端口号)显示服务
--stats 详细信息

保存策略
#ipvsadm-save > /etc/sysconfig/ipvsadm 或者
#service ipvsadm save

客户端测试 192.168.2.253
#yum -y install elinks
#elinks --dump http://192.168.2.50/test.html


#ipvsadm  -d   -t  192.168.2.50:80  -r  192.168.4.52:80 
#ipvsadm  -a   -t  192.168.2.50:80  -r  192.168.4.52:80  -m

#ipvsadm  -E   -t  192.168.2.50:80  -s  wrr
#ipvsadm  -e   -t  192.168.2.50:80  -r  192.168.4.52:80 -w 3 -m
-E  调度算法
-e  修改权重值
#service  ipvsadm  save
#ipvsadm  -Ln
50
*/5   *   *   *   *   /root/check_web.sh

删除虚拟服务里的realserver
ipvsadm -d -t x.x.2.253:80 -r x.x.4.44:80 -m
修改调度算法(加权轮询)

#ipvsadm -E -t x.x.x.x:80 -s wrr
修改realserver的权重值
#ipvsadm -e -t x.x.2.253:80 -r x.x.4.55 -w 3 -m
修改realserver的权重值
#ipvsadm -e -t x.x.2.253:80 -r x.x.4.55 -w 3 -m
删除虚拟服务(集群)
#ipvsadm -D -t x.x.2.253:80
添加虚拟服务
#ipvsadm -A -t x.x.2.253:80 -s wrr
添加realserver 端口 指权重值
#ipvsadm -A -t x.x.2.253:80 -r x.x.4.44 -w 2 -m
查看虚拟服务
#ipvsadm -Ln
保存
#/etc/init.d/ipvsadm save
查看状态
#/etc/init.d/ipvsadm status
清除虚拟服务
#ipvsadm -C 清除还要保存一下
#service ipvsadm save
-C 清空设置(内存中)


二、配置LVS/DR模式负载均衡集群
删除LVS/NAT模式集群的配置

#ipvsadm -C
#service ipvsadm save
#sed  -i  '$d'  /etc/sysctl.conf

52:
#route del default gw 192.168.4.50

#route del default gw 192.168.4.50

52/253:
#ifdown eth0
#eth0 192.168.4.50/51/253

LVS/DR模式工作分析:
realserver主机的IP地址必须和vip地址在同一网段
一台主机发送的广播包能够被所在网络的所有主机接收到。
主机只接收目标主机给自己回的Ip包。

配置LVS/DR模式集群环境
1 给realserver(51/52) 绑定vip地址,并设置网络接口帮兄弟接口收发ip包,且忽略arp广播包。
#ifconfig lo:1 192.168.4.252/32
#ifconfig lo:1
#ls /proc/sys/net/ipv4/conf/
lo:
#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore #忽略ARP请求包
0默认 回应所有本地地址ARP广播,本地地址可以配置在任意网络接口
1 值回应配置在入站网卡接口上的任意IP地址的ARP广播
#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
0默认 使用配置在任意网卡接口上的本地IP地址
2 看文档补充
eth0:
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

2 给分发器绑定vip地址 50:
#ifconfig eth0:1 192.168.4.252/32
#ifconfig eth0:1
#ifconfig eth0

添加虚拟服务50:
#rpm -q ipvsadm
#ipvsadm -Ln
#ipvsadm -A -t 192.168.4.252:80 -s rr

添加realserver 51/52
#ipvsadm -a -t 192.168.4.60:80 -r 192.168.4.51:80 -g
#ipvsadm -a -t 192.168.4.60:80 -r 192.168.4.52:80

保存策略
#ipvsadm -Ln
#service ipvsadm save

客户端测试 192.168.4.253
#arping 192.168.4.252 #
#ping 192.168.4.252
#elinks --dump http://192.168.4.252/test.html

测试结果:分发器上只有进来的ip包 没有从分发器上出去的包
#ipvsadm -Ln --stats