keepalived 常用选项

Posted on Posted in linux
Tips: 本文创建于2015年11月16日,已超过 2 年,内容或图片可能已经失效!

keepalived的常用配置
[官网][1]

安装

  1. yum -y install openssl openssl-devel  
  2. tar zxvf keepalived-1.2.19.tar.gz  
  3. cd keepalived-1.2.19  
  4. ./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-573.7.1.el6.x86_64  
  5. #--with-kernel-dir 指定使用内核源码中的头文件,只有在lvs时才需要,其他时候不需要  
  6. Keepalived configuration  
  7. ------------------------  
  8. Keepalived version       : 1.2.19  
  9. Compiler                 : gcc  
  10. Compiler flags           : -g -O2  
  11. Extra Lib                : -lssl -lcrypto -lcrypt   
  12. Use IPVS Framework       : Yes  #表示使用IPVS框架,也就是负载均衡框架,如果关闭,--disable-lvs  
  13. IPVS sync daemon support : Yes  #表示启用IPVS的同步功能。如果关闭,--disable-lvs-syncd  
  14. IPVS use libnl           : No   #表示使用新版的libnl  
  15. fwmark socket support    : Yes  
  16. Use VRRP Framework       : Yes  #表示使用VRRP框架,这是实现高可用的必须框架  
  17. Use VRRP VMAC            : Yes  #表示使用基础VMAC接口的xmit VRRP包  
  18. SNMP support             : No  
  19. SHA1 support             : No  
  20. Use Debug flags          : No  
  21.   
  22. make && make install  
  23.   
  24. ln -s /usr/local/sbin/keepalived /sbin/  
  25. chkconfig --add keepalived  
  26. chkconfig --level 35 keepalived on  

默认keepalived会查找 /etc/keepalived/keepalived.conf,如果配置文件在其他路径下,keepalived -f 指定其他路径

keepalived在启动时不检查配置的正确性,所以要保证配置的正确

1、keepalived的全局配置

keepalived配置分为全局配置(global_defs),VRRPD配置和LVS配置

  1. #和! 开头的都是注释  
  2.   
  3. cat keepalived.conf   
  4.   
  5. ! Configuration File for keepalived  
  6.   
  7. global_defs {   #全局配置  
  8.    notification_email {     #设置邮件报警邮件地址,每行一个  
  9.      acassen@firewall.loc  
  10.      failover@firewall.loc  
  11.      sysadmin@firewall.loc  
  12.    }  
  13.    notification_email_from Alexandre.Cassen@firewall.loc    #设置邮件的发送地址  
  14.    smtp_server 192.168.200.1    #设置邮件的smtp server地址  
  15.    smtp_connect_timeout 30      #设置smtp server的超时时间  
  16.    router_id LVS_DEVEL      #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题中的信息  
  17. }  

2、keepalived的VRRPD配置

VRRPD是所有配置的核心,主要来实现高可用,分为同步组设置和实例配置

  1. #同步组配置    
  2. vrrp_sync_group G1 {    
  3.     group {    
  4.         VI_1    
  5.         VI_2    
  6.         VI_3    
  7.     }    
  8.     notify_backup "/usr/local/bin/vrrp.back arg1 arg2"  #进入backup时执行的脚本    
  9.     notify_master "/usr/local/bin/vrrp.mast arg1 arg2"  #指定keepalived进入master状态时要执行的脚本    
  10.     notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"  #故障时,需要执行的脚本    
  11.     notify_stop "/usr/local/bin/vrrp.stop arg1 arg2"    #程序终止时需要执行的脚本    
  12. }    
  13. vrrp_sync_group G2 {    
  14.     group {    
  15.         VI_3    
  16.         VI_4    
  17.     }    
  18. }    
  19.     
  20.     
  21. #实例配置    
  22. vrrp_instance VI_1 {    #实例开始的标识,后跟VRRP实例名称    
  23.     state MASTER    #指定keepalived的教师,MASTER表示主机是主服务器,BACKUP表示此主机是备用服务器    
  24.     interface eth0  #用于指定HA检测网络的接口    
  25.     virtual_router_id 51    #虚拟路由标识,是唯一的,在同一个vrrp_instance下,MASTER和BACKUP必须是一致的    
  26.     priority 100    #定义节点的优先级,数字越大表示节点的优先级就越高,MASTER必须大于BACKUP的    
  27.     advert_int 1    #MASTER和BACKUP的时间间隔,单位是秒    
  28.     mcast_src_ip <IPADDR>   #设置发送多播包的地址,如果不设置,将使用绑定网卡所对应的IP地址    
  29.     garp_master_delay   10  #设置在切换到MASTER状态后延时进行Gratuitous arp请求的时间    
  30.         
  31.     track_interface {   #设置一些额外的网络监控接口,其中任何一个网络接口出现故障,keepalived都会进入FAULT状态    
  32.         eth0    
  33.         eth1    
  34.     }    
  35.         
  36.     authentication {    #设置节点通信的密码,在一个vrrp_instance下,MASTER和BACKUP必须使用相同的密码    
  37.         auth_type PASS    
  38.         auth_pass abcd    
  39.     }    
  40.     virtual_ipaddress { #设置虚拟IP地址,也叫漂移地址。每行一个。    
  41.         192.168.200.16    
  42.         192.168.200.17 dev eth1    
  43.         192.168.200.18/24 dev eth2    
  44.     }    
  45.     virtual_routes {    #在切换时,添加或删除路由信息    
  46.         src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1    
  47.         192.168.110.0/24 via 192.168.200.254 dev eth1    
  48.         192.168.111.0/24 dev eth2    
  49.         192.168.112.0/24 via 192.168.100.254    
  50.         192.168.113.0/24 via 192.168.100.252 or 192.168.100.253    
  51.     }    
  52.     nopreempt   #设置高可用集群中的不枪换功能,即故障恢复后不切换到master。在使用不枪占时,只能在state状态为BACKUP的节点上设置,而这个节点的优先级必须高于其他节点    
  53.     preemtp_delay   300 #设置枪占时间,单位是秒。在此时间内的故障将不会进行切换,如果超过指定的时间,并且网络状态异常,才开始进行主备切换。    
  54. }    

3、keepalived的LVS配置

  1. virtual_server 192.168.200.100 443 {    #设置虚拟服务器开始的标识,后面跟虚拟IP地址和服务端口,IP与端口用空格隔开  
  2.     delay_loop 6    #设置健康检查时间间隔,单位是秒  
  3.     lb_algo rr      #设置负载调度算法,可用的调度算法有rr/wrr/lc/wlc/lblc/sh/dh。常用的rr/wlc  
  4.     lb_kind NAT     #设置LVS实现负载均衡的机制,有NAT/TUN/DR三个模式  
  5.     nat_mask 255.255.255.0  
  6.     persistence_timeout 50  #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,解决session共享。如果50s内没有执行任何操作,那么接下来的操作被分发到另外的节点,如果用户一直在操作动态网页,则不受50s时间限制。  
  7.     persistence_granularity <NETMASK>   #此选项是配合persistence_timeout的,后面跟的是子网掩码,表示持久连接的粒度。模式是255.255.255.255,也就是单独的客户端IP  
  8.     protocol TCP    #指定转发协议类型,有TCP和UDP两种选项  
  9.     ha_suspend      #节点状态从MASTER到BACKUP切换时,暂不启用real server节点的健康检查。  
  10.     virtualhost <string>    #在通过HTTP_GET/SSL_GET做健康检查时,指定的web服务器的虚拟主机地址  
  11.     sorry_server <IPADDR> <PORT>    #相当于一个备用节点,当所有real server失效后,这个备用节点会启用  
  12.   
  13.     real_server 192.168.201.100 443 {   #后面跟的是real server真实的IP地址  
  14.         weight 1    #权值,数字越大,权值越高。  
  15.         inhibit_on_failure  #表示在检测到real server节点失效后,把weight值设置为0,而不是从IPVS中删除  
  16.         nitify_up <STRING> | <QUOTED-STRING>    #表示检测到real server节点服务处于UP状态后执行的脚本  
  17.         nitify_down <STRING> | <QUOTED-STRING>  #表示检测到real server节点服务处于DOWN状态后执行的脚本  
  18.         #检查方式 HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK  
  19.         TCP_CHECK {  
  20.             connect_port 80     #健康检查的端口,如果不指定,默认是real_server指定的端口  
  21.             connect_timeout 3   #表示无响应超时时间,单位是秒  
  22.             nb_get_retry 3  #表示重试次数  
  23.             delay_before_retry 3    #表示重试间隔  
  24.         }  
  25.         SSL_GET {  
  26.             url {   #用来指定http/ssl检查的url信息,可以指定多个  
  27.               path /    #详细的url路径  
  28.               digest ff20ad2481f97b1754ef3e12ecd3a9cc   #检查后的摘要信息,可以通过genhash工具获得。eg:genhash -s 192.168.12.80 -p 80 -u /index.html  
  29.               status_code   200 #检查返回的正常状态码  
  30.             }  
  31.             url {  
  32.               path /mrtg/  
  33.               digest 9b3a0c85a887a256d6939da88aabd8cd  
  34.             }  
  35.             connect_timeout 3  
  36.             nb_get_retry 3  
  37.             delay_before_retry 3  
  38.             bindto 192.168.12.80    #表示通过此地址来发送请求对服务器进行健康检查  
  39.         }  
  40.         MISC_CHECK {    #可以通过一个外部程序来判断real server节点的服务状态。  
  41.             misc_path   /usr/local/bin/script.sh    #指定外部脚本的路径  
  42.             misc_timetou 5  #指定执行脚本超时时间  
  43.             !misc_dynamic   #是否启用动态调整real server节点的weight值。本例为不启用。  
  44.         }  
  45.     }  
  46. }  
  47.   
  48. virtual_server 10.10.10.2 1358 {  
  49.     delay_loop 6  
  50.     lb_algo rr   
  51.     lb_kind NAT  
  52.     persistence_timeout 50  
  53.     protocol TCP  
  54.   
  55.     sorry_server 192.168.200.200 1358  
  56.   
  57.     real_server 192.168.200.2 1358 {  
  58.         weight 1  
  59.         HTTP_GET {  
  60.             url {   
  61.               path /testurl/test.jsp  
  62.               digest 640205b7b0fc66c1ea91c463fac6334d  
  63.             }  
  64.             url {   
  65.               path /testurl2/test.jsp  
  66.               digest 640205b7b0fc66c1ea91c463fac6334d  
  67.             }  
  68.             url {   
  69.               path /testurl3/test.jsp  
  70.               digest 640205b7b0fc66c1ea91c463fac6334d  
  71.             }  
  72.             connect_timeout 3  
  73.             nb_get_retry 3  
  74.             delay_before_retry 3  
  75.         }  
  76.     }  
  77.   
  78.     real_server 192.168.200.3 1358 {  
  79.         weight 1  
  80.         HTTP_GET {  
  81.             url {   
  82.               path /testurl/test.jsp  
  83.               digest 640205b7b0fc66c1ea91c463fac6334c  
  84.             }  
  85.             url {   
  86.               path /testurl2/test.jsp  
  87.               digest 640205b7b0fc66c1ea91c463fac6334c  
  88.             }  
  89.             connect_timeout 3  
  90.             nb_get_retry 3  
  91.             delay_before_retry 3  
  92.         }  
  93.     }  
  94. }  
  95.   
  96. virtual_server 10.10.10.3 1358 {  
  97.     delay_loop 3  
  98.     lb_algo rr   
  99.     lb_kind NAT  
  100.     nat_mask 255.255.255.0  
  101.     persistence_timeout 50  
  102.     protocol TCP  
  103.   
  104.     real_server 192.168.200.4 1358 {  
  105.         weight 1  
  106.         HTTP_GET {  
  107.             url {   
  108.            &n
    bsp;  path /testurl/test.jsp  
  109.               digest 640205b7b0fc66c1ea91c463fac6334d  
  110.             }  
  111.             url {   
  112.               path /testurl2/test.jsp  
  113.               digest 640205b7b0fc66c1ea91c463fac6334d  
  114.             }  
  115.             url {   
  116.               path /testurl3/test.jsp  
  117.               digest 640205b7b0fc66c1ea91c463fac6334d  
  118.             }  
  119.             connect_timeout 3  
  120.             nb_get_retry 3  
  121.             delay_before_retry 3  
  122.         }  
  123.     }  
  124.   
  125.     real_server 192.168.200.5 1358 {  
  126.         weight 1  
  127.         HTTP_GET {  
  128.             url {   
  129.               path /testurl/test.jsp  
  130.               digest 640205b7b0fc66c1ea91c463fac6334d  
  131.             }  
  132.             url {   
  133.               path /testurl2/test.jsp  
  134.               digest 640205b7b0fc66c1ea91c463fac6334d  
  135.             }  
  136.             url {   
  137.               path /testurl3/test.jsp  
  138.               digest 640205b7b0fc66c1ea91c463fac6334d  
  139.             }  
  140.             connect_timeout 3  
  141.             nb_get_retry 3  
  142.             delay_before_retry 3  
  143.         }  
  144.     }  
  145. }  

[1]: http://www.keepalived.org/download.html

» 转载请注明来源:若我若鱼 » keepalived 常用选项

Leave a Reply

Your email address will not be published. Required fields are marked *

14 − 10 =