check_stats.py
#!/usr/bin/env python #check lvs port # import socket,sys host = sys.argv[1] port = sys.argv[2] def conn (host,port): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((str(host),int(port))) s.settimeout(2) print 'Server port %s OK!' % port sys.exit(0) except Exception: print 'Server %s port %s not connect!' % (host,port) sys.exit(1) s.close() conn(host,port)
配置keepalived.conf
virtual_server 192.168.7.6 80 { delay_loop 60 lb_algo wlc lb_kind DR protocol TCP real_server 192.168.7.15 80 { weight 1 MISC_CHECK { misc_path "/shell/check_stats.py 192.168.7.15 80" misc_timeout 7 } } real_server 192.168.7.16 80 { weight 1 MISC_CHECK { misc_path "/shell/check_stats.py 192.168.7.16 80" misc_timeout 7 } } }