Lvs+Keepalived

2019-09-25  本文已影响0人  LoWang

https://www.linuxidc.com/Linux/2016-03/129232.htm
https://www.linuxidc.com/Linux/2016-03/129233.htm

sudo iptables -L -t nat
sudo iptables -nL -t nat --line-number
sudo iptables -t nat -D PREROUTING -p tcp -d 192.168.1.199 --dport 80 -j REDIRECT
sudo iptables -t nat -A PREROUTING -p all -d 192.168.1.199 -j REDIRECT

LVS+Keepalived

3台LVS+Keepalived

ipvsadm -A -t 192.168.1.100:80 -s rr 
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -m

解释:

-A, --add-service:     为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式。
-D, --delete-service: 删除一个虚拟服务。
-C, --clear:               清除所有虚拟服务。

-a, --add-server:      为虚拟服务添加一个real server(RS)
-d, --delete-server:  删除
-s, --scheduler scheduling-method:指定调度算法。调度算法可以指定以下8种:
    rr(轮询),
    wrr(权重),
    lc(最后连接),
    wlc(权重),
    lblc(本地最后连接),
    lblcr(带复制的本地最后连接),
    dh(目的地址哈希),
    sh(源地址哈希),
    sed(最小期望延迟),
    nq(永不排队)

-r, --real-server server-address:  
为虚拟服务指定数据可以转发到的真实服务器的地址。可以添加端口号。如果没有指定端口号,则等效于使用虚拟地址的端口号。

[packet-forwarding-method]:
此选项指定某个真实服务器所使用的数据转发模式。需要对每个真实服务器分别指定模式。
    -g, --gatewaying: 使用网关(即直接路由),此模式是默认模式。
    -i, --ipip: 使用ipip隧道模式。
    -m, --masquerading: 使用NAT模式。

3台Keepalived配置

global_defs {
    router_id LVS_Server
}
vrrp_instance VI_1 {
    state BACKUP #主节点: MASTER
    interface ens8
    virtual_router_id 51 #保持一致
    priority 120 #保持一致
    nopreempt
    advert_int 1 #检测间隔
    authentication {
        auth_type PASS #保持一致
        auth_pass password #保持一致
    }
    virtual_ipaddress {
        192.168.1.100 dev ens8 
    }
}

virtual_server 192.168.1.100 80 {
    delay_loop 3
    lvs_sched rr
    lvs_method DR
    protocol TCP
    real_server 192.168.1.10 80 {
        weight 1
        TCP_CHECK {
        connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 10
        }
    }
    real_server 192.168.1.10 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 10
        }
    }
    real_server 192.168.1.10 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 10
        }
    }
}

RealServer配置

  1. 使用lo接口配置VIP
EXPORT vip=192.168.1.100
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
/sbin/route add -host $vip 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
  1. 使用iptables进行REDIRECT
sudo iptables -t nat -A PREROUTING -p tcp -d 192.168.1.199 --dport 80 -j REDIRECT

#删除
#sudo iptables -t nat -D PREROUTING -p tcp -d 192.168.1.199 --dport 80 -j REDIRECT

#本地也可以访问
sudo iptables -t nat -A OUTPUT -p tcp -d 192.168.1.199 -j REDIRECT
上一篇下一篇

猜你喜欢

热点阅读