*********************

    *********LVS*********

    *********************

 

www.zh.linuxvirtualserver.org

 

ipvs(内核),ipvsadm(工作指令)

 

arptables

 

arptables -A IN -d -j DROP

arptables -A OUT -s -j managle-ip-s

 

 

 

 

 

四种

 

VS/NAT ;VS/TUN(隧道) ; VS/DR ; VS/fullNAT  (只有这个模式可以跨VLAN

 

redhat6 中带其10种内核连接调度算法

 

1)NAT

   NAT算法调度,指到server,但调度器输入内网的数据包会源路返回到外网,这样调度器的压力会大,大约几十台的承受压力即为极限。

 

 

2)TUN(隧道)

   调度器通过隧道协议对数据包二次封装,×××,到达Real Server 会解包,并拿到

clinet 的IP,并进行业务,支持广域网。

 

3)DR

  只能在直连网络,同一个交换机上进行操作。

 

 

 

 

 

*******测试DR********

 

   Client ——> VS ——> RS ——> Client

 

核心是MAC 的指定

 

首先

  在调度机上使用ipvsadm命令添加调度算法和调度地址:

  ipvsadm -A -t 172.25.254.168 -s rr    [采用rr轮询]

  ipvasdm -a -t 172.25.254.168:80 -r 172.25.254.163 -g  [设置虚拟IP 168 的对应真实路由选择IP 163]

  ipvasdm -a -t 172.25.254.168:80 -r 172.25.254.164 -g  [设置虚拟IP 168 的对应真实路由选择IP 164]

  ipvsadm -l            [查看循环次数] 有时出错时,它并不能正却检测,仍然会显示次数。所以还需要用curl检测。

 

 Real Server1 和 ~2 上 需要用 arptables 做策略更改,以防访问到R Server 而不经过调度机,

 

方法一:更改内核文件

        RealServer 设置

   vi /etc/sysctl.conf

          net.ipv4.conf.all.arp_ignore = 1

          net.ipv4.conf.all.arp_announce = 2

   sysctl -p

 

(优)方法二:下载 arptables_jf.x86_64

        arptables -A IN -d 172.25.254.168 -j DROP   [丢掉进入到168的信息]

        arptables -A OUT -s 172.25.254.168 -j mangle --mangle-ip-s 172.25.254.163   [作为本机168输出的信息,转换为163输出]

        /etc/init.d/arptables_jf save[切记保存,不然服务打不开]

 

 

*********NAT********

 

    Client ——> VS ——> RS

         .  <——   . <——

RS的网关一定为VS。 NAT对VS(管理机)是不做任何操作的,只将它当作网关做地址转发。

  cip ——> vip

      DNAT

      vip ——> rip

          rip ——> vip

              vip ——> cip

 

*******TUN**********(隧道)

 

要求,设备支持IP隧道协议。可用于广义网,配置较为复杂

 

   Clinet ——> VS ——> RS ——> Client

  cip ——> vip

         ip封装

         vip ——> rip

                 vip ——> cip

 

******fullNAT********

 

必须更新内核,抗***能力强。支持多VLAN

 

 

 

 

 

 

带有检测功能的轮询,ldirectord 服务。

在此之前 lpvsadm -C 清除以前写入lvs的信息。

 

rpm -qd ldirectord 查看模板配置文件 /usr/share/doc/ldirectord-3.9.5/ldirectord.cf,并将配置文件移动到/etc/ha.d/ldirectord.cf

 

配置文件内容如下:

 

 24 # Sample for an http virtual service

 25 virtual=172.25.254.168:80

 26         real=172.25.254.163 gate            [真实所用服务机的地址]

 27         real=172.25.254.164 gate            [真实所用服务机的地址]

 28         fallback=127.0.0.1:80 gate          [所有服务机停止所跳到的最后的处理机上]

 29         service=http

 30         scheduler=rr

 31         #persistent=600                     [与存储或数据库等长久需要保持连接的设置有关]

 32         #netmask=255.255.255.255

 33         protocol=tcp

 34         checktype=negotiate                 [检测类型为:谈判]

 35         checkport=80

 36         request="index.html"

 37 #       receive="Test Page"                 [必须确保两个及其的服务页面保持相同数据]

 38 #       virtualhost=www.x.y.z

 

 

 

使用已经配置好的heartbeat,给集群服务中添加lvs

 

(1)修改heartbeat策略在集群节点上,并发送给其它节点机。

vim /etc/ha.d/haresources

 

server1.example.com IPaddr::172.25.254.168/24/eth0 ldirectord httpd

 

(2)发送修改好的/etc/ha.d/ldirectord.cf 模板,给发送给其它节点机

 

(3)开启Real Server机上的http 服务

 

(4)开启heartbeat 在节点机上。

 

(5)测试,对hearbeat进行操作,ldirectord服务会由于heartbeat服务,开启在某节点机上,并运行lvs机制,从而保证Real Server的服务访问正常运行。

 

 

                           ***********************************

                    ********使用 keepalived + lvs*******

                           **********************************

. keepalive 工作原理

     使用VRP协议

     Layer 3,4 &7 工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理如下

     Layer 3: Keepalived 使用Layer3 的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,如果发现某台服务的IP地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。layer3的方式是  【以服务器的IP地址有效作为服务器工作正常与否的标准】

Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer7:Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

 

 

 

 

.下载,并使用 keepalived-1.2.24.tar.gz 配置 (网址 www.keepalive.org)

    1)首先解开rpm 包,并进入 keepalived-1.2.24 目录。

开始安装文件,并指定安装目录.防止配置文件分散

        安装时根据所提示的信息一步步安装(gcc,openssl*),直到创建出 make等类型文件,可以使用 make && make install 命令

./configure --prefix=/usr/local/keepalived

        

        make && make install 操作之后,在/ust/local/keepalived 下会出向 keepalived 服务所有的信息.

        下载 mailx(类邮件软件),方便服务自动发送信息

    2)开始制作文件连接,启动服务

        ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

        ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

        ln -s /usr/local/keepalived/etc/keepalived /etc/

   

        chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

        ln -s /usr/local/keepalived/sbin/keepalived /sbin/

        

        /etc/init.d/keepalived start

    

    (3)vim /etc/keepalived/keepalived.conf


[行标]

 3      global_defs {

 4    notification_email {

 5      root@localhost

 6    }

 7    notification_email_from [email protected]

 8    smtp_server 172.0.0.1

 9    smtp_connect_timeout 30

 10    router_id LVS_DEVEL

 11    vrrp_skip_check_adv_addr

 12    vrrp_strict

 13    vrrp_garp_interval 0

 14    vrrp_gna_interval 0

 15 }

 16

 17 vrrp_instance VI_1 {

 18     state MASTER

 19     interface eth0

 20     virtual_router_id 166[主、备机的 virtual_router_id 必须相同,取值 0-255]

 21     priority 100

 22     advert_int 1

 23     authentication {

 24         auth_type PASS

 25         auth_pass 1111

 26     }

 27     virtual_ipaddress {

 28         172.25.254.168

 29     }

 30 }

 31

 32 virtual_server 172.25.254.166 80 {

 33     delay_loop 6

 34     lb_algo wrr[使用加权轮询]

 35     lb_kind DR

 36    # persistence_timeout 50

 37     protocol TCP

 38

 39     real_server 172.25.254.163 80 {

 40         weight 2[权重]

 41         TCP_CHECK {

 42             connect_timeout 3

 43             nb_get_retry 3

 44             delay_before_retry 3

 45         }

 46     }

 47     real_server 172.25.254.164 80 {

 48         weight 1

 49         TCP_CHECK {

 50             connect_timeout 3

 51             nb_get_retry 3

 52             delay_before_retry 3

 53         }

 54     }

 55 }

 

     (4)配置完成server1.的信息后,

1.把 /usr/local/keepalived/ 目录和目录下的所有文件发送给 172.25.254.162 的 /usr/local中。


scp -r keepalived/ [email protected]:/usr/local

 

        2.在server2中 进行(2)步骤,把相应的文件连接到相应的文件。

  

        3.更改配置文件

  vim /etc/keepalived/keepalived.conf

[行标]

 18     state BACKUP[辅机该为 BACKUP,此状态由 priority决定,高为MASTER ,低为BACKUP]

         21     priority 50[辅机这个优先级要低于主机]

     

    (5)在Rules Server 机上添加 arptables 保证服务机上的数据 达到正常效果

(优)方法二:下载 arptables_jf.x86_64

        arptables -A IN -d 172.25.254.168 -j DROP   [丢掉进入到168的信息]

        arptables -A OUT -s 172.25.254.168 -j mangle --mangle-ip-s 172.25.254.163   [作为本机168输出的信息,转换为163输出]

   

 

   6)再次添加一个 vsftpd 服务

       1.vim /etc/keepalived/keepalived.conf


   [行标]   

   3 global_defs {

  4    notification_email {

  5      root@localhost

  6    }

  7    notification_email_from [email protected][修改邮件接受主机,谁是主机 就写谁]

  8    smtp_server 172.0.0.1

  9    smtp_connect_timeout 30

  10    router_id LVS_DEVEL

  11    vrrp_skip_check_adv_addr

  12    vrrp_strict

  13    vrrp_garp_interval 0

  14    vrrp_gna_interval 0

  15 }

  16 vrrp_instance VI_1 {

  17     state MASTER

  18     interface eth0

  19     virtual_router_id 166 

  20     priority 100

 21     advert_int 1

 22     authentication {

 23         auth_type PASS

 24         auth_pass 1111

 25     }

 26     virtual_ipaddress {

 27         172.25.254.168

28   172.25.254.166[再次添加一个虚拟IP]

 29     }

 30 }

 31

32 virtual_server 172.25.254.166 21 {[开启21端口]

 33     delay_loop 6

 34     lb_algo rr

 35     lb_kind DR

 36     persistence_timeout 50[会话保持时间,单为是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,即断开连接后,超出50秒,则会被分发到另外节点]

 37     protocol TCP

 38

 39     real_server 172.25.254.163 21 {

 40         weight 1

 41         TCP_CHECK {

 42             connect_timeout 3

 43             nb_get_retry 3

 44             delay_before_retry 3

45         }

 46     }

 47     real_server 172.25.254.164 21 {

 48         weight 1

 49         TCP_CHECK {

 50             connect_timeout 3

 51             nb_get_retry 3

 52             delay_before_retry 3

 53         }

 54     }

 55 }

 

      2.在 Rules Server 服务机上添加vsftpd 服务,并且添加 arptables 策略。(同上)