Keepalived 之 Keepalived + LVS 实现负载均衡

发表于:2023-11-17 09:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:51CTO博客

  一、KeepalivedLVS 简单工作原理了解
  1、Keepalived 管理LVS负载均衡软件,Keepalived 可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能,这使用LVS的应用更加简单方便了。
  2、Keepalived 实现对LVS集群节点健康检查功能,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived 服务会自动将失效的节点服务器从LVS 的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响,并且故障恢复时,又可以加到正常转发队列中。
  3、Keepalived 作为系统网络服务的高可用功能,可以实现任意两台主机之间的故障转移和自动切换。
  4、LVS 负责数据转发,基于第层网络传输层,使用ARP协议,修改目的地MAC地址,实现数据的高速转发,相对于NGINX的第七层转发,有一定的优势。
  二、实现拓扑图
  三、实验步骤
  1、分别设置好各台主机的IP地址,如:
  主机-负载均衡:10.3.150.196
  备机-负载均衡:10.3.150.197
  web01:10.3.150.198
  web02:10.3.150.199
  2、在两台web主机里,分别设置绑定 Local Loopback IP地址(VIP:10.3.150.200)
  [root@web01 ~]# vi /etc/init.d/realserver
  #!/bin/bash
  #
  # realserver
  #
  # chkconfig: 2345 24 76
  # description: realserver ip
  SNS_VIP=10.3.150.200
  /etc/rc.d/init.d/functions
  case "$1" in
  start)
         ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
         /sbin/route add -host $SNS_VIP dev lo:0
         echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
         echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
         echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
         sysctl -p >/dev/null 2>&1
         echo "RealServer Start OK"
         ;;
  stop)
         ifconfig lo:0 down
         route del $SNS_VIP >/dev/null 2>&1
         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
         echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
         echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
         echo "RealServer Stoped"
         ;;
  *)
         echo "Usage: $0 {start|stop}"
         exit 1
  esac
  exit 0
  [root@web01 ~]# chmod +x /etc/init.d/realserver
  [root@web01 ~]# chkconfig --add /etc/init.d/realserver
  [root@web01 ~]# chkconfig realserver on
  [root@web01 ~]# /etc/init.d/realserver start
  3、检查web服务器绑定local loopback ip 是否正常。
  [root@web01 ~]# ifconfig
  eth1      Link encap:Ethernet  HWaddr 00:50:56:AA:51:29  
  inet addr:10.3.150.198  Bcast:10.3.150.255  Mask:255.255.255.0
  inet6 addr: fe80::250:56ff:feaa:5129/64 Scope:Link
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:52847 errors:0 dropped:0 overruns:0 frame:0
  TX packets:3322 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000 
  RX bytes:4160205 (3.9 MiB)  TX bytes:272504 (266.1 KiB)
  lo        Link encap:Local Loopback  
  inet addr:127.0.0.1  Mask:255.0.0.0
  inet6 addr: ::1/128 Scope:Host
  UP LOOPBACK RUNNING  MTU:65536  Metric:1
  RX packets:80 errors:0 dropped:0 overruns:0 frame:0
  TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0 
  RX bytes:5200 (5.0 KiB)  TX bytes:5200 (5.0 KiB)
  lo:0      Link encap:Local Loopback  
  inet addr:10.3.150.200  Mask:255.255.255.255
  UP LOOPBACK RUNNING  MTU:65536  Metric:1
  4、配置主机-负载均衡的keepalived.conf配置文件
  ! Configuration File for keepalived
  global_defs {
     notification_email {
     345619885@qq.com
  }
     notification_email_from Alexandre.Cassen@firewall.loc
     smtp_server 192.168.200.1
     smtp_connect_timeout 30
     router_id lb01
  }
  vrrp_instance VI_1 {
      state MASTER       #指定Keepalived角色,MASTER为主
      interface eth1         #Keepalived 绑定的网络
      virtual_router_id 53    #虚拟路由编号,主备必须要一致
      priority 150      #定义优先级,数字越大,优先级越高
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 3333
      }
      virtual_ipaddress {
          10.3.150.200/24 dev eth1 label eth1:1     #定义虚拟IP(VIP)为10.3.150.200   
      }
  }
  # 定义对外提供服务的LVS的VIP以及port
  virtual_server 10.3.150.200 80 {  
      delay_loop 6 # 设置健康检查时间,单位是秒                    
      lb_algo wrr # 设置负载调度的算法为wlc                   
      lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
      nat_mask 255.255.255.0                
      persistence_timeout 0          
      protocol TCP                  
      real_server 10.3.150.198 80 {  # 指定real server1的IP地址
          weight 3   # 配置节点权值,数字越大权重越高              
          TCP_CHECK {  
          connect_timeout 10         
          nb_get_retry 3  
          delay_before_retry 3  
          connect_port 80  
          }  
      }  
      real_server 10.3.150.199 80 {  # 指定real server2的IP地址
          weight 3  # 配置节点权值,数字越大权重越高  
          TCP_CHECK {  
          connect_timeout 10  
          nb_get_retry 3  
          delay_before_retry 3  
          connect_port 80  
          }  
       }  
  } 
  5、配置备机-负载均衡的keepalived.conf配置文件
  与主机-负载均衡一致,只需修改以下两处:
  1、state MASTER   改为 state BACKUP
  2、priority 150    改为  priority 100
  6、启动两台负载均衡的keepalived服务
  [root@lb01 keepalived]# service keepalived start
  在主机-负载均衡器上,查看是否获取了VIP(10.3.150.200)
  [root@lb01 keepalived]# ifconfig
  eth1      Link encap:Ethernet  HWaddr 00:50:56:AA:B1:25  
  inet addr:10.3.150.196  Bcast:10.3.150.255  Mask:255.255.255.0
  inet6 addr: fe80::250:56ff:feaa:b125/64 Scope:Link
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  RX packets:89077 errors:0 dropped:0 overruns:0 frame:0
  TX packets:14028 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000 
  RX bytes:7242746 (6.9 MiB)  TX bytes:982746 (959.7 KiB)
  eth1:1    Link encap:Ethernet  HWaddr 00:50:56:AA:B1:25  
  inet addr:10.3.150.200  Bcast:0.0.0.0  Mask:255.255.255.0
  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  lo        Link encap:Local Loopback  
  inet addr:127.0.0.1  Mask:255.0.0.0
  inet6 addr: ::1/128 Scope:Host
  UP LOOPBACK RUNNING  MTU:65536  Metric:1
  RX packets:80 errors:0 dropped:0 overruns:0 frame:0
  TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0 
  RX bytes:5120 (5.0 KiB)  TX bytes:5120 (5.0 KiB)
  四、验证故障切换是否成功
  1、访问VIP,是否能正常访问得到web01和web02的内容(web01和web02为不一致的静态文件内容,以方便区别,检查是否生效)。
  2、停止web01服务,访问VIP,看是否还能正常访问web02的内容,同时又不会提示web01无法访问的错误信息,因LVS能做端口健康检查。
  3、启动web01,访问VIP,是否可以同时访问web01和web02的内容。
  4、停止lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到备机-负载负载器的主机上,同时访问VIP,是否正常访问web01与web02的内容。
  5、启动lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到主机-负载均衡器,同时访问VIP,是否能正常访问web01与web02的内容。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号