JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Keepalived+LVS(NAT模式)整合 keepalived模式有哪些

wys521 2024-10-10 12:42:39 精选教程 21 ℃ 0 评论

拓扑图:

环境介绍

系统:

[root@localhost ~]# cat /etc/redhat-release

CentOS Linux release 7.8.2003 (Core)

docker版本 用来安装nginx

[root@localhost ~]# docker version

Client: Docker Engine - Community

Version: 19.03.12

API version: 1.40

主服务器:10.10.10.128

备服务器:10.10.10.129

虚拟VIP:10.10.10.111

一、LVS简介

LVS的模型中有两个角色;

调度器 Directory

真实主机 real server 简称RS(这里就是docker了)

LVS 全程Linux virtual server Linux虚拟化服务器,是一种主流的虚拟化服务系统,得到互联网的广泛采用

其他LVS 理论可网上查阅资料自行脑补。

1、安装LVS

yum install ipvsadm -y

二、安装keepalived

yum install keepalived -y

三、docker容器部署nginx

下载了centos7.2 容器

容器部署nginx

四、配置KEEPalived 配置文件如下所示:

主服务器配置:

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

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 10.10.10.128
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER#设置为主 其实主备还是看优先级大小 就算这里设置为BACKUP 如果优先级较高 也是主
    interface ens33#对外提供服务的网络接口
    virtual_router_id 50 #路由ID
    priority 100#优先级 优先级越大越优先 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.111#虚拟IP地址
    }
}
virtual_server 10.10.10.111  80 {
    delay_loop 6 #健康检查时间间隔
    lb_algo wrr #LVS调度算法rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind NAT#LVS负载均衡转发规则 NAT或者DR DR转发效率高但是环境要求严格
    persistence_timeout  60#会话保持时间
    protocol TCP     #使用的协议
    real_server 172.17.0.2 80 {
        weight 100  #设置权重      
        TCP_CHECK {
        connect_timeout 10#连接超时时间;
        nb_get_retry 3 #重连次数;
        delay_before_retry 3#重连间隔时间
        connect_port 80#健康检查的端口; 如果是MySQL就是3306
        }
    }
}
virtual_server 10.10.10.111  80 {
    delay_loop 6
    lb_algo wrr
    lb_kind NAT
    persistence_timeout  60
    protocol TCP     
    real_server 172.17.0.3 80 {
        weight 100        
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}

备服务器配置:

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

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 10.10.10.129
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.111
    }
}
virtual_server 10.10.10.111  80 {
    delay_loop 6
    lb_algo wrr
    lb_kind NAT
    persistence_timeout  60
    protocol TCP     
    real_server 172.17.0.2 80 {
        weight 100        
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}
virtual_server 10.10.10.111  80 {
    delay_loop 6
    lb_algo wrr
    lb_kind NAT
    persistence_timeout  60
    protocol TCP     
    real_server 172.17.0.3 80 {
        weight 100        
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}

备注LVS 说明:

LVS nat模式 需要内核开启IPV4转发功能

echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf #开启内核转发模式

sysctl -p 内核配置文件生效

echo "1" >/proc/sys/net/ipv4/ip_forward 临时生效

以nginx 为例子 当然也可以整合 mysql ,tomcat等服务

五、配置完毕后重启keepalived

六、通过 ipvsadm -L -n 查看状态

七、测试

查看数据包转发情况:

关闭一台docker 关闭172.17.0.3

通过 ipvsadm -L -n 查看只是看到一台,同时数据转发到172.17.0.2。

备注:实际物理机部署环境下 LVS服务器一般至少2块物理网卡,一块连接外网,一块连接内网

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表