class Naminori::Lb::Lvs
Public Class Methods
add_member(rip, service)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 6 def add_member(rip, service) transaction("add", rip, service) if service.healty?(rip) && exist_ip?(service.config.vip, service) && !exist_ip?(rip, service) end
command_option(type, rip, service)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 33 def command_option(type, rip, service) case when type == "add" "--#{type}-server --#{service.config.protocol}-service #{service.config.vip}:#{service.config.port} -r #{rip}:#{service.config.port} #{method_option(service.config.method)}" when type == "delete" "--#{type}-server --#{service.config.protocol}-service #{service.config.vip}:#{service.config.port} -r #{rip}:#{service.config.port}" end end
delete_member(rip, service)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 10 def delete_member(rip, service) transaction("delete", rip, service) if exist_ip?(rip, service) end
exist_ip?(ip, service)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 20 def exist_ip?(ip, service) fetch_service(service).find do |line| line.match(/#{ip}/) end end
fetch_service(service)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 26 def fetch_service(service) unless result = `ipvsadm -Ln --#{service.config.protocol}-service #{service.config.vip}:#{service.config.port}`.split("\n") raise "fetch errror!" end result end
method_option(method)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 42 def method_option(method) case when method == "gateway" "-g" when method == "nat" "-m" when method == "ip" "-i" end end
transaction(type, rip, service)
click to toggle source
# File lib/naminori/lb/lvs.rb, line 14 def transaction(type, rip, service) if system("ipvsadm #{command_option(type, rip, service)}") notify(type, rip, service) end end