设为首页 收藏本站
查看: 703|回复: 0

[经验分享] Keepalive + LVS

[复制链接]

尚未签到

发表于 2019-1-2 13:40:42 | 显示全部楼层 |阅读模式
       *********************
      *********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
           .   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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658694-1-1.html 上篇帖子: 实验:基于lvs 下篇帖子: LVS介绍、LVS调度算法、LVS NAT模式搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表