群集包括3种类型:

1:负载均衡群集

2:高可用性群集

3:高性能群集

其中负载均衡群集包括3个模型:

1:nat模型

2:dr模型

3:tun模型

负载均衡群集

基于nat模型的案例

首先以nat模型为例

1:首先安装ipvsadmipvsadm.i386

2:dircetor上配置ipvsadm的参数(-A表示增加-E表示修改)

Ipvsadm –A(-E) –t(端口类型tcp 192.168.101.200:80 –s rr(轮转算法)

              -p(端口类型udp                    wrr(权重轮转算法)

              -f(端口类型firewall

Ipvsadm –a –t 192.168.101.200:80 –r(指名真实的server地址) 192.168.2.10 –w 10  –m(表示nat模型)

Ipvsadm –a –t 192.168.101.200:80 –r 192.168.2.20 –w 5  –m

                                               -gdr模型)

                                               -itun模型)

写过之后如果想保存可以用service ipvsadm save 保存

3:打开director的数据包转发功能

Vim /etc/sysctl.conf

net.ipv4.ip_forward=0改称=1即可

4:然后再server1上配置rip地址192.168.2.10

然后做个简单的web网页,打开httpd服务

5:在server2上配置rip地址192.168.2.20

然后做个简单的web网页,打开httpd服务

6:在dirctor上配置vip地址192.168.101.200

dr模型为例

1: dircetor上配置ipvsadm的参数

Ipvsadm –A –t 192.168.2.100:80vip地址) –s rr

Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.20server1地址) –g

Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.30server2的地址) -g

2:打开director的数据包转发功能

Vim /etc/sysctl.conf

net.ipv4.ip_forward=0改称=1即可

 

3:server1上配置viprip地址

配置viplo的子接口lo:0

Ifconfig lo:0 192.168.2.100 netmask 255.255.255.255

配置ripeth0上为192.168.2.20

然后强制数据返回的时候用vip地址192.168.2.100

Route add –host 192.168.2.100 dev lo:0

4:在server2上配置viprip地址

配置viplo的子接口lo:0

Ifconfig lo:0 192.168.2.100 netmask 255.255.255.255

配置ripeth0上为192.168.2.30

然后强制数据返回的时候用vip地址192.168.2.100

Route add –host 192.168.2.100 dev lo:0

5:在dirctor上面配置vipdip

Vip配置在eth00接口上

Ifconfig eth:0 192.168.2.100

Dip配置在eth0

Ifconfig eth0 192.168.2.10

6:当用户访问的时候,只让dirctor上面的vip回应,所以不让server1server2上面的vip回应,分别在Server1server2上执行

Sysctl –a |grep announce >>/etc/sysctl.conf

Vim /etc/sysctl.conf导入进来的其它行删除只保留

net.ipv4.conf.lo.arp_announce = 0

net.ipv4.conf.all.arp_announce = 0

然后把0改称2

接着sysctl -a |grep ignore >>/etc/sysctl.conf

Vim /etc/sysctl.conf导入进来的其它行删除只保留

net.ipv4.conf.lo.arp_ignore = 0

net.ipv4.conf.all.arp_ignore = 0

然后把0改称1

7:修改配置后让他生效

Sysctl –p

8:然后在server1server2上配置wed服务器或者其它的服务器测试

高可用性群集

Dirctor之间的备份,结合负载均衡群集(dr)利用heartbeat实现ipvs服务的高可

用群集

1:在主dirctor和备用dirctor上都安装heartbeat

heartbeat-2.1.4-9.el5.i386.rpm

heartbeat-pils-2.1.4-10.el5.i386.rpm

heartbeat-stonith-2.1.4-10.el5.i386.rpm

libnet-1.1.4-3.el5.i386.rpm

由于这些包不在本地的yum仓库中所以要借助本地yum仓库装

Yum localinstall heartbeat-2.1.4-9.el5.i386.rpm  heartbeat-pils-2.1.4-10.el5.i386.rpm  heartbeat-stonith-2.1.4-10.el5.i386.rpm  libnet-1.1.4-3.el5.i386.rpm  --nogpgcheck

 

2cd /etc/ha.d/

Cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./

Cp /usr/share/doc/heartbeat-2.1.4/haresources ./

Cp /usr/share/doc/heartbeat-2.1.4/authkeys ./

Cp /etc/init.d/ipvsadm  /etc/ha.d/resource.d/

Vim ha.cf

90行左右的bcast  eth0改称bcast  eth1(连接两个dirctor服务器之间的heart线端口)

212行左右node   ken3复制改动

node    node1.a.comdirctor1的主机名字)

node    node2.a.com dirctor2的主机名字)

vim haresources

45行左右的node-name resource1 resource2 ... resourceN复制改动

node1.a.com(主服务器名字) 192.168.2.100vip ipvsadm

vim authkeys

编辑之前先产生一个秘钥

dd =/dev/urandom bs=512 count=1 |openssl md5 >>authkeys

vim authkeys

最后一行插入

auth 1

1 md5 d41d8cd98f00b204e9800998ecf8427e(产生的钥匙)

最后chmod 600 authkeys

3在每个dircetor上配置ipvsadm的参数

Ipvsadm –A –t 192.168.2.100:80vip地址) –s rr

Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.20server1地址) –g

Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.30server2的地址) -g

4打开director的数据包转发功能

Vim /etc/sysctl.conf

net.ipv4.ip_forward=0改称=1即可

5:修改主机名称

Vim /etc/sysconfig/network

HOSTNAME=node1.a.com

Vim /etc/hosts里面插入

192.168.2.10 node1.a.com

192.168.2.15 node2.a.com

6:修改后重启

7:在每个dirctor上启用heartbeat服务

Service heartbeat start

8:server1server2的配置和上面dr负载均衡群集里面的配置一样

9:注意测试的时候要把ipvsadm 停掉,让heartbeat启动的时候会自动开启ipvsadm

注意也不用配置

Ifconfig lo:0 192.168.2.100 netmask 255.255.255.255

因为在哈resources文件中已经声明了主dirctorvip地址

10:可以模拟主dirctor失效

Cd /usr/lib/heartbeat

然后执行脚本

./hb_standby

恢复征程

./hb_takeover