负载均衡lvs

三种负载均衡技术的优缺点

负载均衡lvs_第1张图片

1、安装ipvsadm

此次安装ipvsadm时与以前的安装相对来讲稍有不同,要稍微修改yum源

负载均衡lvs_第2张图片

[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
显示为
负载均衡lvs_第3张图片

(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进行同样的设置

负载均衡lvs_第4张图片

清除所作的操作:arp -d 172.25.71.100 重新进行测试:并且查看所到达的MAC地址,是否与调度器的匹配

测试:

负载均衡lvs_第5张图片

检查MAC地址:

负载均衡lvs_第6张图片

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的配置文件,

负载均衡lvs_第7张图片

测试:

两台rs正常工作时:

关闭一台rs的apache

负载均衡lvs_第8张图片负载均衡lvs_第9张图片

两台rs的服务均关闭:

负载均衡lvs_第10张图片

此时,在实际情况中,后台的rs均宕机后,就会有这样的界面出现:

负载均衡lvs_第11张图片

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

进行一些必要的连接

负载均衡lvs_第12张图片

[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
        }
        }

}
测试:

负载均衡lvs_第13张图片

在设置一台调度器,成为一个主从调度器,在配置文件中设置state与优先级即可,优先级不要一样,因为若一台主机挂掉以后,若优先级是一致的,等原来的主机恢复后,会因为优先级是一致的而导致争抢,同时操作电脑上的同一台文件,而导致脑裂。

在keepalived的配置文件中,还有一个比较重要的参数:vrrp_strict

,尽量将此参数注释掉,因为若开启此参数,在调度器的iptables会自动加一条丢弃掉目的地是172.25.71.100的策略,此时客户端是无法再次进行访问的。


你可能感兴趣的:(负载均衡lvs)