LVS(二) LVS+Keepalived实现高可用负载均衡

Keepalived简介
   Keepalived可以实现服务器的高可用或热备,用来防止单点故障的问题,Keepalived的核心是VRRP(Virtual Router Redundancy Protocol)协议.VRRP协议主要实现路由器或三层交换机处的冗余。

LVS-DR-Keepalived架构配置
LVS(二) LVS+Keepalived实现高可用负载均衡_第1张图片
   1.安装LVS+Keepalived(两个LVS安装)
 
    
  1. yum -y install ipvsadm keepalived
  2. #此处ipvsadm只是用来方便查看规则
   源码包安装 
 
     
  1. yum install -y popt-static kernel-devel make gcc openssl-devel lftplibnl* popt* openssl-devel lftplibnl* popt* libnl* libpopt* gcc*
  2. #安装ipvsadm
  3. wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
  4. tar -zxvf ipvsadm-1.26.tar.gz
  5. cd ipvsadm-1.26
  6. make && make install
  7. ipvsadm #查看是否安装成功
  8. #安装keepalived
  9. wget http://www.keepalived.org/software/keepalived-1.2.16.tar.gz
  10. tar -zxvf keepalived-1.2.16.tar.gz
  11. cd keepalived-1.2.16
  12. ./configure
  13. make && make install
  14. cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
  15. cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
  16. mkdir /etc/keepalived/
  17. cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
  18. cp /usr/local/sbin/keepalived /usr/sbin/
  19. service keepalived restart
   2.主LVS配置Keepalived
 
     
  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email { #设置报警通知邮件地址,可以设置多个
  4. root@localhost
  5. }
  6. notification_email_from admin@msun.com #设置邮件的发送地址
  7. smtp_server 127.0.0.1 #设置smtp server的地址,该地址必须是存在的
  8. smtp_connect_timeout 30 #设置连接smtp server的超时时间
  9. router_id LVS_msun #运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息
  10. }
  11. vrrp_instance lvs_msun { #定义VRRP实例,实例名自定义
  12. state MASTER #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器
  13. interface eno16777736 #指定HA监测的接口
  14. virtual_router_id 68 #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样
  15. priority 100 #优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器
  16. advert_int 1 #设置主备之间同步检查的时间间隔单位秒
  17. authentication { #设置验证类型和密码
  18. auth_type PASS #验证类型有两种{PASS|HA}
  19. auth_pass 1689 #设置验证密码,在一个实例中主备密码保持一样
  20. }
  21. virtual_ipaddress { #定义虚拟IP地址,可以有多个,每行一个
  22. 192.168.1.160
  23. }
  24. }
  25. virtual_server 192.168.1.160 80 { #设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔
  26. delay_loop 6 #设置健康状态检查时间,单位为秒
  27. lb_algo rr #设置负载高度算法,rr为轮询
  28. lb_kind DR #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种
  29. nat_mask 255.255.255.0 #设置掩码
  30. persistence_timeout 50 #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决>方案
  31. protocol TCP #指定转发协议类型可以设置{TCP|UDP}两种
  32. real_server 192.168.1.186 80 { #服务服务节点,需要指定Real_server的IP与端口,用空格分隔
  33. weight 1 #配置服务节点的权重,数字越大,权重越高
  34. HTTP_GET { #设置检测Realserver的方式为Http协议
  35. url {
  36. path /
  37. status_code 200 #设定返回状态码为200表示Realserver是存活的
  38. }
  39. connect_timeout 3 #设置响应超时时间
  40. nb_get_retry 3 #设置超时重试次数
  41. delay_before_retry 3 #设置超时后重试间隔
  42. }
  43. }
  44. real_server 192.168.1.188 80 {
  45. weight 1
  46. HTTP_GET {
  47. url {
  48. path /
  49. status_code 200
  50. }
  51. connect_timeout 3
  52. nb_get_retry 3
  53. delay_before_retry 3
  54. }
  55. }
  56. }
   3.备LVS配置Keepalived
 
     
  1. scp 192.168.1.166:/etc/keepalived/keepalived.conf /etc/keepalived/
  2. #更改以下参数即可
  3. state BACKUP
  4. priority 98
   4.Keepalived 开启路由转发并开启防火墙
 
     
  1. echo net.ipv4.ip_forward = 1 >>/etc/sysctl.conf
  2. sysctl -p
  3. #VRPP组播地址允许
  4. firewall-cmd --permanent --add-rich='rule family="ipv4" destination address="224.0.0.18" protocol value="vrrp" accept'
  5. firewall-cmd --permanent --add-port=80/tcp #开启防火墙80端口
  6. firewall-cmd --reload
   5.Web安装
       操作IP 192.168.1.186 192.168.1.188
 
    
  1. yum install httpd -y #安装httpd
  2. echo 192.168.1.186 >/var/www/html/index.html #输入网站显示各自IP
  3. systemctl restart httpd
  4. firewall-cmd --permanent --add-port=80/tcp #开启防火墙80端口
  5. firewall-cmd --reload
  6. #测试,浏览器登录IP查看,是否正常启动。
   6.配置Web11和Web2设置VIP
 
    
  1. vim vip.sh
  2. #!/bin/bash
  3. SNS_VIP=192.168.1.160
  4. . /etc/rc.d/init.d/functions
  5. case "$1" in
  6. start)
  7. ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
  8. /sbin/route add -host $SNS_VIP dev lo:0
  9. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  10. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  11. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  12. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  13. sysctl -p >/dev/null 2>&1
  14. echo "RealServer Start OK"
  15. ;;
  16. stop)
  17. ifconfig lo:0 down
  18. route del $SNS_VIP >/dev/null 2>&1
  19. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  20. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  21. echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  22. echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  23. echo "RealServer Stoped"
  24. ;;
  25. *)
  26. echo "Usage: $0 {start|stop}"
  27. exit 1
  28. esac
  29. exit 0
  30. chmod 755 vip.sh
  31. ./vip.sh start
  32. ifconfig
    6.开启防火墙80端口允许并启动Keepalived
 
   
  1. systemctl restart keepalived

LVS的一些重要参数(/proc/sys/net/ipv4/vs/下)
LVS转发行为影响参数:
expire_nodest_conn: 0 禁用(默认) 非0启用。
   负载均衡器发现目标后端服务器不可用时会丢弃包。禁用,后端服务器出现删除重添回服务器池会继续连接。启用,会立即使连接过期,通知客户端连接关闭。
expire_quiescent_template: 0 禁用(默认) 非0启用。
   启用时,当负载均衡器发现后端服务器处于静止(权重0)会使持续连接过期,并被发送到新的服务器。
LVS同步参数
sync_threshold:
    默认值为3.表示一个连接上收到多少个包后,才开始同步连接。
       一个连接状态在以下情况会被同步:它收到的包数量除于50等于设定值。(设定值范围:0~49)

LVS-DR注意
   后端服务器的虚拟IP必须绑定在lo:0上,同时子网掩码是255.255.255.255,禁用虚拟IParp。
   负载均衡器之间对VRRP支持,(防火墙正确开启),防止脑裂。
   lvs集群的负载均衡器推荐使用16GB内存,同时采用多队列网卡提高网卡吞吐量。《数据链路层的负载均衡》(多网卡绑定)
   LVS服务器后端,根据IO密集型和CPU密集型,可以分别使用RAID10、SSD及高频多核CPU优化。
参考博客: http://tshare365.com/archives/711.html

你可能感兴趣的:(负载均衡与高可用,架构)