.集群:   气象局,科研室

由多台主机构成,但对外只表现为一个整体。

类型:

负载均衡集群: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.2200.200.200.2

负载均衡集群_负载均衡集群_02

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压力小,支持更多节点。用户提交的请求直接交给路由器而不是负载调度器,

虚拟出一块集群地址,

在每台主机上声明虚拟主机是多少,在哪里。在负载调度器和节点上都要声明这个地址,去认识它

负载均衡集群_负载均衡集群_03

将它们放到一个网络里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

IP1.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

专为LVSHA设计的一款健康检查工具

支持故障自动转移Failover,

支持节点健康状态检查  接口链接状态,超时状态

keepalived 的热备状态

VRRP(虚拟路由冗余协议)

一主多备,共用同一个IP地址,但优先级不同

把所有设备都当成一个路由器,一个路由器宕了,别的顶上

负载均衡集群_负载均衡集群_04

负载均衡集群_负载均衡集群_05

 

在刚才基础上再加一台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

IP1.100

service NetworkManager stop

vi  ifup-eth 

查找arping

 负载均衡集群_负载均衡集群_06

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

负载均衡集群_负载均衡集群_07

关于邮件的都删除留下router_id  R1

再改virtuar_router_id  88       主和从都一样

advert_int 1  不停的给从的发数据包判断是否存活

负载均衡集群_负载均衡集群_08

集群地址

real-server 加密的删去

负载均衡集群_负载均衡集群_09

复制一份real_server

负载均衡集群_负载均衡集群_10

负载均衡集群_负载均衡集群_11

回到从的   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

一会来回切换  (给主的换个网段)