WARNING:实验用的IP地址有些是拷贝PPT的(比如NAT模式的实验报告) 有些是自己做实验用的(比如DR模式的实验报告) 实际还需要看自己的IP
一、群集的介绍
群集的类型: |
负载均衡群集 |
高可用群集 |
高性能运算群集 |
LINUX中叫: |
负载均衡群集(LB) |
高可用群集(HA) |
高性能运算群集(HPC) |
WINDOWS中叫: |
网络负载均衡群集(NLB)(最多32个节点) |
故障转移群集 最多8个节点 |
高性能运算群集(HPC) |
二、负载均衡群集分层结构
1)负载调度器
访问群集的唯一入口
2)服务器池
群集所提供的应用服务
3)共享存储
为服务器池中的所有节点提供稳定一致的文件存取服务 确保群集同意性
三、负载均衡群集的工作方式
1)地址转换 简称NAT模式 安全性能高
2)IP隧道 简称TUN
3)直接路由 简称DR模式
LVS虚拟服务器
中国 张文嵩博士 1998年5月创建 现在已经成文Linux内核中的一部分
[[email protected] ~]# modprobe ip_vs //加载模块 [[email protected] ~]# cat /proc/net/ip_vs //查看版本信息 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn |
LVS负载调度算法
轮询:收到的访问请求轮流发给各个节点 |
加权轮询:根据真实服务器的处理能力来给服务器分配不同的访问 |
最少连接:看哪台服务器连接数量最少,就连哪台 |
加权最少连接:根据服务器真实处理能力来分配不同访问 如:这台服务器性能很好,可以连接很多,但我已经连接了很多,另一台服务器性能不好,但是才连接了几个,这时候就要分配权重了。 |
NAT负载均衡 ↓
网络环境:
3台服务器 一台客户机
调度器(整个群集的一个入口 BOSS的身份 下分支节点服务器 再下面就是共享存储)两块网卡 一块用于模拟外网一块用于内网服务器
我用的虚拟机分别把调度器两块网卡桥接到了 VM2 VM8 其他两台服务器是VM2 VM2
客户机是VM8
也就是说 VM2都是内网 第一个VM8是调度器的外网网卡 第二个就输客户机的IP地址了
1)配置负载调度器
[[email protected] ~]# vi /etc/sysctl.conf //开启路由转发功能 …… net.ipv4.ip_forward = 1 [[email protected] ~]# sysctl -p //让修改生效 [[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j SNAT --to-source 172.16.16.172 //让内网两台服务器能访问公网 [[email protected] ~]# service ipvsadm stop //先停止掉ipvsadm [[email protected] ~]# ipvsadm -A -t 172.16.16.172:80 -s rr //添加一台调度器 [[email protected] ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m //添加节点 [[email protected] ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m // - - - [[email protected] ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.23:80 -m [[email protected] ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.24:80 -m [[email protected] ~]# ipvsadm-save > /etc/sysconfig/ipvsadm //保存上面添加的 [[email protected] ~]# chkconfig ipvsadm on //添加为系统开机启动项 |
2)客户端配置
这里用WEB1 和 WEB2做两个WEB服务器 在WEB1里添加一个测试用的网页
WEB2和WEB1添加不同的网页(实验中是为了看出你的负载均衡成功了 现实中当然两个WEB站点必须是一样的)
现实生活中:
NFS共享:
使用NFS共享 比如公司网站在/var/www/html/ 那就共享这个目录 到另一台节点服务器去访问它的共享 这样就可以把网站复制一份了 具体是这样的:安装nfs-utils 和 rpcbind (在Centos 5.8中安portmap代替rpcbind) NFS依赖于RPC(Remote Process Call 远端过程调用) 然后打开/etc/exprots /var/www/html/ 192.168.1.0/24(rw,sync,no_root_squash) 以上是格式 rw:读写权限 注意:ro 为只读 (read only) sync:同步写入 no_root_squash: 客户机用ROOT访问时 给与root权限 然后启动服务 service XX ... 服务名称就是包名 nfs 和 rpcbind showmount -e 查看本机的共享 然后客户机可以直接挂载 mount 192.168.1.1(远端IP): /var/www/html/ /var/www/html/ 上面就是把远端的html挂到本地html |
配置完了客户端要检查IPTABLES规则是否写对了
WEB1 2的网关都要指向 调度器
写完规则ping一下 调度器外网IP ping通说明规则写对了
3)最后就是客户机访问了
用可以和调度器外网通信的客户机访问调度器外网,这时候群集会生效 刷新网页 发现一下是网页WEB1网页 一下是WEB2网页
说明成功了。
DR模式
直接路由模式
1、先配置虚拟接口为调度器eth0网卡VIP地址 (虚拟iP地址) 以便响应群集访问
[[email protected] CentOS]# cd /etc/sysconfig/network-scripts/ [[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 [[email protected] network-scripts]# vim eth0:0 [[email protected] network-scripts]# vim ifcfg-eth0:0 [[email protected] network-scripts]# |
注意第一行 DEVICE eth0后面要有":0" 这样配置才生效。
VIP地址和物理地址在同一网段但不同IP
2.调整/PROC参数
关闭Linux内核重定向参数 为了防止ARP解析出现异常
[email protected] ~]# 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 [[email protected] ~]# sysctl -p |
3、装ipvsadm包 并且添加节点和调度器
[[email protected] CentOS]# rpm -Uvh ipvsadm-1.24-13.el5.i386.rpm warning: ipvsadm-1.24-13.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897 Preparing... (100%########################################### [100%] 1:ipvsadm ( 10%########################################### [100%] [[email protected] CentOS]# |
service ipvsadm stop //清除原有策略 [[email protected] CentOS]# ipvsadm -A -t 192.168.1.2:80 -s rr //这个IP是VIP 不是物理IP [email protected] CentOS]# chkconfig ipvsadm on //开机启动 |
4.节点服务器配置
物理地址和调度器物理地址在同一个网段
虚IP和调度器IP地址一样
节点服务器不监听来自客户机的访问请求 所以用lo接口来承载虚IP
配置lo虚IP方法和调度器大致相同 cp ifcfg-lo ifcfg-lo:0 vim ifcfg-lo:0 注意的是:第一行后面也要加:0 和上面一样 然后子网掩码必须都是255.255.255.255 |
然后新建站点 和上面一样
重启httpd服务
关闭防火墙(注意是关闭 不是清空规则保存 我做的时候不关就不行)
如果不成功:
1)网络参数的配置是否正确 如果你用客户机访问 比如都桥接到8网卡 但你真实机8网卡开了吗? 开了的话IP是多少? 2)前面需要注意的地方 比如虚拟IP的配置 配置文件第一行默认都是eth0或者lo 后面要加上“:0” 务必ifconfig下 看看配置是否正确 3)就是最后一点是关闭防火墙并不是把防火墙规则清空然后保存 4)httpd服务是否开启? 如果不行把三台服务器的httpd服务器全部开启试试 有人说必须把调度器httpd服务开启的(有同学说过 我没有测试过 我没管过我的调度器httpd 也许是开着的 ) 5)ipvsadm添加调度器IP是VIP 不是物理IP 物理IP和VIP在同一网段 节点一节点二的物理地址都是和调度器在同一网段 VIP和调度器一样 实际上 三个VIP是一样的 必须一样 物理IP 在同一网段 6)查看自己是否洗过脸 |