群集包括3种类型:
1:负载均衡群集
2:高可用性群集
3:高性能群集
其中负载均衡群集包括3个模型:
1:nat模型
2:dr模型
3:tun模型
负载均衡群集
基于nat模型的案例
首先以nat模型为例
1:首先安装ipvsadm包ipvsadm.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
-g(dr模型)
-i(tun模型)
写过之后如果想保存可以用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:80(vip地址) –s rr
Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.20(server1地址) –g
Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.30(server2的地址) -g
2:打开director的数据包转发功能
Vim /etc/sysctl.conf
把net.ipv4.ip_forward=0改称=1即可
3:在server1上配置vip和rip地址
配置vip在lo的子接口lo:0上
Ifconfig lo:0 192.168.2.100 netmask 255.255.255.255
配置rip在eth0上为192.168.2.20
然后强制数据返回的时候用vip地址192.168.2.100
Route add –host 192.168.2.100 dev lo:0
4:在server2上配置vip和rip地址
配置vip在lo的子接口lo:0上
Ifconfig lo:0 192.168.2.100 netmask 255.255.255.255
配置rip在eth0上为192.168.2.30
然后强制数据返回的时候用vip地址192.168.2.100
Route add –host 192.168.2.100 dev lo:0
5:在dirctor上面配置vip和dip
Vip配置在eth0:0接口上
Ifconfig eth:0 192.168.2.100
Dip配置在eth0上
Ifconfig eth0 192.168.2.10
6:当用户访问的时候,只让dirctor上面的vip回应,所以不让server1和server2上面的vip回应,分别在Server1和server2上执行
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:然后在server1和server2上配置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
2:cd /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.com(dirctor1的主机名字)
node node2.a.com (dirctor2的主机名字)
vim haresources
45行左右的node-name resource1 resource2 ... resourceN复制改动
node1.a.com(主服务器名字) 192.168.2.100(vip) 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:80(vip地址) –s rr
Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.20(server1地址) –g
Ipvsadm –a –t 192.168.2.100:80 –r 192.168.2.30(server2的地址) -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:server1和server2的配置和上面dr负载均衡群集里面的配置一样
9:注意测试的时候要把ipvsadm 停掉,让heartbeat启动的时候会自动开启ipvsadm
注意也不用配置
Ifconfig lo:0 192.168.2.100 netmask 255.255.255.255
因为在哈resources文件中已经声明了主dirctor和vip地址
10:可以模拟主dirctor失效
Cd /usr/lib/heartbeat
然后执行脚本
./hb_standby
恢复征程
./hb_takeover