LVS群集

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内核中的一部分 

[root@localhost ~]# modprobe ip_vs   //加载模块

[root@localhost ~]# 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)配置负载调度器 

[root@localhost ~]# vi /etc/sysctl.conf                     //开启路由转发功能

……

net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl -p                        //让修改生效

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j SNAT --to-source 172.16.16.172                                           //让内网两台服务器能访问公网

[root@localhost ~]# service ipvsadm stop                     //先停止掉ipvsadm

[root@localhost ~]# ipvsadm -A -t 172.16.16.172:80 -s rr                //添加一台调度器

[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m       //添加节点

[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m        // - - -

[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.23:80 -m

[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.24:80 -m

[root@localhost ~]# ipvsadm-save  >  /etc/sysconfig/ipvsadm    //保存上面添加的

[root@localhost ~]# 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地址) 以便响应群集访问

[root@xingye CentOS]# cd /etc/sysconfig/network-scripts/ 
[
root@xingye network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 
[
root@xingye network-scripts]# vim eth0:0 
[
root@xingye network-scripts]# vim ifcfg-eth0:0 
[
root@xingye network-scripts]#  


注意第一行 DEVICE eth0后面要有":0" 这样配置才生效。

VIP地址和物理地址在同一网段但不同IP 

spacer.gifwKioL1RcyvrAcwlkAAB08zNsM3I316.jpg

2.调整/PROC参数

关闭Linux内核重定向参数 为了防止ARP解析出现异常

root@localhost ~]# 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

[root@localhost ~]# sysctl -p


3、装ipvsadm包 并且添加节点和调度器

[root@xingye 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%] 
[
root@xingye CentOS]#  


service ipvsadm stop              //清除原有策略

[root@xingye CentOS]# ipvsadm -A -t 192.168.1.2:80 -s rr        //这个IP是VIP 不是物理IP
[
root@xingye CentOS]# ipvsadm -a -t 192.168.1.2:80 -r 192.168.1.3 -g    //添加节点一
[
root@xingye CentOS]# ipvsadm -a -t 192.168.1.2:80 -r 192.168.1.4 -g    //添加节点二
[
root@xingye CentOS]#  service ipvsadm  save    //保存策略

root@xingye 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)查看自己是否洗过脸


你可能感兴趣的:(linux,集群,服务器)