LVS和Keepalived的高可用负载均衡(RR+DR)
本文最后更新于 1039 天前,其中的信息可能已经有所发展或是发生改变。

术语

LB (Load Balancer 负载均衡)
HA (High Available 高可用)
Failover (失败切换)
Cluster (集群)
LVS (Linux Virtual Server Linux 虚拟服务器)
DS (Director Server),指的是前端负载均衡器节点
RS (Real Server),后端真实的工作服务器
VIP (Virtual IP),虚拟的 IP 地址,向外部直接面向用户请求,作为用户请求的目标的 IP 地址
DIP (Director IP),主要用于和内部主机通讯的 IP 地址
RIP (Real Server IP),后端服务器的 IP 地址
CIP (Client IP),访问客户端的 IP 地址

测试环境

软件环境:CentOS7、Keepalived、ipvsadm

DS1(MASTER):192.168.80.161

DS1(BACKUP):192.168.80.162

RS1:192.168.80.163:80 Nginx

RS1:192.168.80.164:80 Nginx

VIP:192.168.80.160

                               |
              +----------------+-----------------+
              |                                  |
192.168.80.161|----     VIP:192.168.80.160   ----|192.168.80.162
     +-------+--------+                +--------+-------+
     |      DS1       |                |       DS2      |
     | LVS+Keepalived |                | LVS+Keepalived |
     +-------+--------+                +--------+-------+
             |                          |
             +-----------------+-----------------+
                               |
  +------------+               |               +------------+
  |     RS1    |192.168.80.163 |192.168.80.164 |     RS2    |
  | Web Server +--------------+--------------- + Web Server |
  +------------+                               +------------+

DS1、DS2

yum install ipvsadm keepalived -y

DS1

[root@node1 keepalived]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
    router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 60
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.80.160
    }
}

virtual_server 192.168.80.160 80 {
    delay_loop 3
    lb_algo lc
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.80.163 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.80.164 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

DS2

[root@node2 keepalived]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
    router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state backup
    interface ens33
    virtual_router_id 60
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.80.160
    }
}

virtual_server 192.168.80.160 80 {
    delay_loop 3
    lb_algo lc
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.80.163 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.80.164 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

DS1、DS2

重启 systemctl restart keepalived

[root@localhost ~]# systemctl restart keepalived

Nginx服务器的启动脚本

sysctl 开启IPV4转发 所有都操作一次

echo "net.ipv4.ip_forward =1" >> /etc/sysctl.conf && sysctl -p
#!/bin/bash 
SNS_VIP=192.168.80.160
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev 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
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0
bash vip.sh start

查看IP以及集群

watch ipvsadm -Ln --stats 查看负载均衡的信息

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.80.160:80                   4  183        0    36878        0
  -> 192.168.80.163:80                   1    77        0    15726        0
  -> 192.168.80.164:80                   3   106        0    21152        0

访问VIP

while true ; do curl 172.17.13.252; sleep 1;done
[root@node2 keepalived]# while true ; do curl 192.168.80.160; sleep 1;done
192.168.80.164
192.168.80.163
192.168.80.164
192.168.80.163
192.168.80.164
192.168.80.163
192.168.80.164
192.168.80.163
对此文章 《LVS和Keepalived的高可用负载均衡(RR+DR)》 如有异议、侵犯您的版权,及时联系我处理或者在本站留言。谢谢!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇