fsfss21 发表于 2017-3-6 10:00:45

Keepalive + LVS

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

www.zh.linuxvirtualserver.org

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

arptables

arptables -A IN -d <virtual_ip> -j DROP
arptables -A OUT -s <virtual_ip> -j managle-ip-s <real_ip>





四种

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

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

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


(2)TUN(隧道)
   调度器通过隧道协议对数据包二次封装,VPN,到达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 keepalived@server1.example.com
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/ root@172.25.254.162:/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 keepalived@server2.example.com[修改邮件接受主机,谁是主机 就写谁]
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 策略。(同上)


页: [1]
查看完整版本: Keepalive + LVS