三种负载均衡技术的优缺点
1、安装ipvsadm
此次安装ipvsadm时与以前的安装相对来讲稍有不同,要稍微修改yum源
[root@server1 ~]# yum install ipvsadm -y
2、本次实验主要是针对DR模型进行实验,设置ipvsadm策略,将该台主机设置为一个调度器,将两台开启着apache服务的两台主机进行rr轮循,使用了vip,要将一台vitual sevrer与两台real server均添加vip,但为了达到轮循的效果,要将real sevrer的arptables进行设置,不设置的话,调度器就没有存在的意义。
(1),设置调度器的ipvsadm,设置调度器的vip
[root@server1 ~]# ipvsadm -A -t 172.25.71.100:80 -s rr -t是表示指定虚拟服务为tcp服务,形式为host[:port]
[root@server1 ~]# ipvsadm -a -t 172.25.71.100:80 -r 172.25.71.2:80 -a是添加一个real server
[root@server1 ~]# ipvsadm -a -t 172.25.71.100:80 -r 172.25.71.3:80
显示为
(2)开启real server的apache服务:注意端口一定要为80,设置real sevrer的vip
(3)设置测试主机本地解析,因为/etc/hosts文件在读取时有一个先后顺序,所以在测试时,建议将vip的解析放在前面。
测试:
但是,此时会有问题,因为vitual server与real server,均有vip,vs与rs在同一个局域网中,一定会有冲突,而且在客户端访问时,不一定会访问的是调度器的vip,而有可能直接访问的是rs上的,所以这样的话,调度器就没有了意义。
(4)此时,要在rs上设置策略,将客户端直接访问真实主机的请求直接DROP掉,
现在rs上下载arptables_jf
设置:
[root@server2 ~]# arptables -A IN -d 172.25.71.100 -j DROP #目的地为172.25.71.100的请求DROP掉
[root@server2 ~]# arptables -A OUT -s 172.25.71.100 -j mangle --mangle-ip-s 172.25.71.2
#在广播时,改变自己拥有的172.25.71.100的源地址,伪装成172.25.71.2的ip广播出去
两台rs进行同样的设置
清除所作的操作:arp -d 172.25.71.100 重新进行测试:并且查看所到达的MAC地址,是否与调度器的匹配
测试:
检查MAC地址:
3、实现ipvsadm的高可用:ldirectord,keepalived
ldirectord是不能实现安全检查的:
(1)安装
[root@server1 ~]# yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
(2)将ldirectord的配置文件复制过去,并进行一定的修改;
[root@server1 ha.d]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[root@server1 ha.d]# ls
ldirectord.cf resource.d shellfuncs
ldirectord.cf即为ldirectord的配置文件,
测试:
两台rs正常工作时:
关闭一台rs的apache
两台rs的服务均关闭:
此时,在实际情况中,后台的rs均宕机后,就会有这样的界面出现:
keepalied 的使用
在进行keepalived的实验时,一定一定要将ldirectord关闭,因为两个服务是有冲突的,而且要注意,ldirectord服务是开机自启的,一定要将开即自启关闭
(1)安装
keepalived-1.3.6.tar.gz是一个源码包,需要将此进行编译连接:三部曲
阅读INSTALL中的文件,下载其需要的依赖性:
[root@server1 ~]# yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm openssl-devel libn-devle iptables-devel -y
编译三部曲:
[root@server1 keepalived-1.3.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
[root@server1 keepalived-1.3.6]# make
[root@server1 keepalived-1.3.6]# make install
进行一些必要的连接
[root@server1 keepalived]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
给相应的权限
将vs与rs 的相关信息,写入keepalived的配置文件中
virtual_server 172.25.71.100 80 { ##虚拟主机
delay_loop 6
lb_algo rr
lb_kind DR ##是使用的DR模型
#persistence_timeout 50 ##先将此注释掉,可以更加直观的感受到两台rs使用的DR进行的轮转
protocol TCP
real_server 172.25.71.2 80 { ##两台rs均是使用的80端口
weight 1 ##权重是可以自己进行修改的,在实际使用中,权重使用的不一样是因为,权重较重一方的服务器性能更加好
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.71.3 80 {
weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
测试:
在设置一台调度器,成为一个主从调度器,在配置文件中设置state与优先级即可,优先级不要一样,因为若一台主机挂掉以后,若优先级是一致的,等原来的主机恢复后,会因为优先级是一致的而导致争抢,同时操作电脑上的同一台文件,而导致脑裂。
在keepalived的配置文件中,还有一个比较重要的参数:vrrp_strict
,尽量将此参数注释掉,因为若开启此参数,在调度器的iptables会自动加一条丢弃掉目的地是172.25.71.100的策略,此时客户端是无法再次进行访问的。