一.集群: 气象局,科研室
由多台主机构成,但对外只表现为一个整体。
类型:
负载均衡集群:load balance(LBC) 电影后期渲染等
高可用集群:high available(HA) 宕机了有fail over 机制帮助处理
高性能运算集群:high performance computer(HPC)
二.负载均衡集群
1.结构
负载调度器:分配用户请求,分配服务器池内主机健康状态检查
服务器池:真正处理用户请求的多台主机组成的集群
共享存储:通过网络提供数据给服务器池中的节点主机
2.工作模式
NAT模式 网络不是很大,几十台服务器
TUN模式(隧道) 所有主机必须是Linux,支持IPturning协议
DR模式 放在内网
用户将请求通过网段分配给负载调度器,负载调度器将这次请求分配给服务器池中的节点主机,分配完自行进行处理,处理完再通过负载调度器转交给用户。负载调度器充当网关
负载调度器和节点不在一个网段内,中间隔着一个公网,用户将请求通过网段分配给负载调度器,负载调度器通过公网分配给公网中的节点主机,处理完通过公网直接交给用户,不给负载调度器。要求所有主机都有公共IP。
用户将请求通过网段分配给负载调度器,通过路由器做一个端口映射给负载调度器,再转交给内网的节点,
3.负载调度算法
轮询: 一台一台
加权轮询:那些当前比较空闲的工作进程有更多机会获取到监听套接口,从而客户端的请求到达后也就相应地被它捕获并处理
最少连接:看哪台机器当前连接请求最少,再多分配点。根据性能
加权连接:
4.lvs
modprobe ip_vs
cat /proc
ipvsadm -A 使用负载调度器 -t 制定集群地址是谁(负载调度器外网口地址)
-s 当前使用的算法 rr 轮询
-a 添加节点 -t 添加地址 -r 在我的环境中真实地址是什么 -m 当前采用的工作模式是NAT模式
保存规则
设置开机自启
gateway 改网关时临时加时 route add default gw 192.168.1.2 把配置文件里的先删去
三. NAT模式实验
准备:两台外网的,一台测试用,一台当网关(网关处两块网卡)三台内网的。
一个共享存储192.168.1.1,两个网络节点1.100,1.101. 外网的200.200.200.1 网关192.168.1.2和200.200.200.2
1.将内网三台机器指网关
route add default gw 192.168.1.2
route -n
接着两台网络节点的机器装httpd
yum -y install httpd
service httpd start
再配共享存储的机器
mkdir /share
vi /etc/exports nfs共享目录配置文件
/share 192.168.1.0/24(rw,sync) 在/share目录下运行1.0网段以读写方式来访问,并且实时同步
service nfs restart
cd /share
vi index.html
www.share.com
showmount -e 看到当前共享出来的目录列表
再其他两台机器
1.100那台
showmount -e 192.168.1.1 查看1.1上共享的目录
mount 192.168.1.1:/share /var/www/html 挂载到
cd /var/www/html
ls
刷新页面
1.101那台
showmount -e 192.168.1.1 查看1.1上共享的目录
vi /var/www/html/index.html
www.web1.com
刷新页面
网关处那台
modprobe_vs 加载IPVS
cat /proc/net/ip_vs 查看版本信息
rpm -ivh /mnt/cdrom/Packages/ipvsadm-1.25-10
ipvadm -v 查看版本信息
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 开启路由转发功能
sysctl -p 刷新
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 200.200.200.2 NAT策略:让内外网地址转换策略(开启路由转发功能)
eth1 : 外网网卡名字,后面200.2 IP所在网卡
service ipvsadm stop
ipvsadm -A -t 200.200.200.2:80 -s rr
ipvsadm -a -t 200.200.200.2:80 -r 192.168.1.100:80 -m
ipvsadm -a -t 200.200.200.2:80 -r 192.168.1.101:80 -m
-A 使用负载调度器 -t 制定集群地址是谁(负载调度器外网口地址)
-s 当前使用的算法 rr 轮询
-a 添加节点 -t 添加地址 -r 在我的环境中真实地址是什么 -m 当前采用的工作模式是NAT模式
service ipvsadm save
ipvsadm -Ln
Masq 代表的是NAT模式
拿外网测试机做测试
输入200.200.200.2
四.DR模式实验
五台主机放一个网络里测试,也可接第六台外网的测试
需要(修改内核参数文件,起开一个NAT策略)负载调度器在这里比NAT压力小,支持更多节点。用户提交的请求直接交给路由器而不是负载调度器,
虚拟出一块集群地址,
在每台主机上声明虚拟主机是多少,在哪里。在负载调度器和节点上都要声明这个地址,去认识它
将它们放到一个网络里192.168.1.1 1.2 1.3 1.4 1.5 一个网段里
先搭存储 1.3
mkdir /share
vi /etc/exports
/share 192.168.1.0/24(rw,sync)
service nsf restart
vi /share/index.html
www.share.com
showmount -e 查看当前共享出的目录列表
1.4
showmount -e 192.168.1.3
vi /var/www/html/index.html
www.web1.com
service httpd start
1.5
showmount -e 192.168.1.3
mount 192.168.1.3:/share /var/www/html
service httpd start
负载调度器 1.2
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0 VIP
vi ifcfg-eth0:0
改IP为1.100
service NetworkManager stop
service network restart
vi /etc/sysctl.conf 把广播重定向功能关闭,减轻这块网卡负载,因为是虚拟网卡
在最后一行写
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p
modprobe ip_vs
cat /proc/net/ip_vs
rpm -ivh /mnt/cdrom/Packages/ipvsadm-1.25
service ipvsadm stop 清规则
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.4:80 -g 采用DR模式
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.5:80 -g
service ipvsadm save
chkconfig ipvsadm on
ipvsadm -Ln
1.4
cd /etc/sysconfig/network-scripts
cp ifcfg-lo ifcfg-lo:0 拷贝回环地址
vi ifcfg-lo:0
改名字 lo:0
改IP 192.168.1.100
改子网掩码 255.255.255.255
service NetworkManager stop
service network restart
vi /etc/sysctl.conf 防止广播对其影响
到最后一行
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
route add -host 192.168.1.100 dev lo:0 当访问1.100地址时把请求交给lo:0来做
route -n
1.5机器
cd /etc/sysconfig/network-scripts
cp ifcfg-lo ifcfg-lo:0
vi ifcfg-lo:0
改名字 lo:0
改IP 192.168.1.100
改子网掩码 255.255.255.255
service NetworkManager stop
service network restart
vi /etc/sysctl.conf
到最后一行
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p
route add -host 192.168.1.100 dev lo:0
route -n
1.2
ipvsadm -Ln
测试
用测试机
网站输入192.168.1.100 不断刷新
五.keepalived
专为LVS和HA设计的一款健康检查工具
支持故障自动转移Failover,
支持节点健康状态检查 接口链接状态,超时状态
keepalived 的热备状态
VRRP(虚拟路由冗余协议)
一主多备,共用同一个IP地址,但优先级不同
把所有设备都当成一个路由器,一个路由器宕了,别的顶上
在刚才基础上再加一台192.168.1.6 从负载均衡器
先在主负载均衡器上
yum -y install gcc* kernel-devel openssl-devel popt-devel
换光盘拷贝
tar zxf keepalived-1.2.7 -C /usr/src
cd /usr/src
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.3-1310
make && make install
chkconfig --add keepalived
chkconfig keepalived on
从负载调度器 1.6
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vi ifcfg-eth0:0
改IP为1.100
service NetworkManager stop
vi ifup-eth
查找arping
service network restart
vi /etc/sysctl.conf把广播重定向关闭
在最后一行写
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p
modprobe ip_vs
cat /proc/net/ip_vs
rpm -ivh /mnt/cdrom/Packages/ipvsadm-1.25
service ipvsadm stop 清规则
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.4:80 -g
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.5:80 -g
service ipvsadm save
chkconfig ipvsadm on
ipvsadm -Ln
yum -y install gcc* kernel-devel openssl-devel popt-devel
换光盘拷贝
tar zxf keepalived-1.2.7 -C /usr/src
cd /usr/src
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.3-1310
make && make install
回到主的 1.2
vi /etc/keepalived/keepalived.conf
关于邮件的都删除留下router_id R1
再改virtuar_router_id 88 主和从都一样
advert_int 1 不停的给从的发数据包判断是否存活
集群地址
把real-server 加密的删去
复制一份real_server
回到从的 1.6
先从主的传过来一份
scp /etc/keepalived/keepalived.conf 192.168.1.6:/etc/keepalived
vi /etc/keepalived/keepalived.conf
router_id R2
再改virtuar_router_id 88
state SLAVE;
priority 90
chkconfig --add keepalived
chkconfig keepalived on
回到测试机
宕掉主的 刷新测试机192.168.100
一会来回切换 (给主的换个网段)