【博客678】keepalived+ipvs fullnat模式实现tcp + udp负载均衡器

这篇具有很好参考价值的文章主要介绍了【博客678】keepalived+ipvs fullnat模式实现tcp + udp负载均衡器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

keepalived+ipvs实现udp负载均衡器

场景

我们使用keepalived实现vip此时能够初步实现服务高可用,暂时其他备节点处于backup状态,并没有参与流量的负载均衡。我们希望流量通过vip进来后能够负载均衡到每个后端server

实现:keepalied + lvs

1、前置条件:打开net.ipv4.ip_forward和net.ipv4.vs.conntrack

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 | tee /proc/sys/net/ipv4/vs/conntrack

2、使用keepavlied实现一个vip,此处参考之前的博文:【博客565】nginx + keepalived实现高可用反向代理

3、使用lvscare来配置虚拟网卡和iptables规则,实现tcp流量负载均衡

lvscare项目:lvscare

注意:这里实现的是tcp流量负载均衡

lvscare care --vs keepalived-vip:port --rs real-server-ip:port --rs real-server-ip:port --mode link --run-once

lvscare实际做了哪些事:

ip link add lvscare type dummy
ip addr add 169.254.0.1/32 dev lvscare

# enable conntrack for ipvs
echo 1 | tee /proc/sys/net/ipv4/vs/conntrack

iptables -t nat -N VIRTUAL-SERVICES
iptables -t nat -A PREROUTING -m comment --comment "virtual service portals" -j VIRTUAL-SERVICES

iptables -t nat -N VIRTUAL-MARK-MASQ
# create ipset
ipset create VIRTUAL-IP hash:ip,port -exist
iptables -t nat -A VIRTUAL-SERVICES -m comment --comment "virtual service ip + port for masquerade purpose" -m set --match-set VIRTUAL-IP dst,dst -j VIRTUAL-MARK-MASQ
# do mark
iptables -t nat -A VIRTUAL-MARK-MASQ -j MARK --set-xmark 0x2/0x2
# do snat at POSTROUTING
iptables -t nat -N VIRTUAL-POSTROUTING
iptables -t nat -A POSTROUTING -m comment --comment "virtual service postrouting rules" -j VIRTUAL-POSTROUTING
iptables -t nat -A VIRTUAL-POSTROUTING -m mark ! --mark 0x2/0x2 -j RETURN
iptables -t nat -A VIRTUAL-POSTROUTING -m comment --comment "virtual service traffic requiring SNAT" -m mark --mark 0x2 -j MASQUERADE

iptables -t nat -A OUTPUT -m comment --comment "virtual service portals" -j VIRTUAL-SERVICES

lvscare规则剖析:

1、创建dummy网卡处理vip流量
2、对外部以及自己发出的访问vip的流量进行打mark,然后对于打mark的流量进行masq,
   这里匹配的方法是使用了ipset,lvscare会在ipset中加入vip,然后下面用ipset去匹配访问
   vip的流量,进行打mark,对打mark的流量进行masq

4、配置udp流量负载均衡

安装ipvsadm:

yum install ipvsadm -y

配置udp server

ipvsadm -A -u vip:port -s rr
ipvsadm -a -u vip:port -r real-server-1-ip:port -m
ipvsadm -a -u vip:port -r real-server-2-ip:port -m
...

规则持久化:将规则写入ipvsadm的启动加载路径,实现开机自动加载

systemctl enable ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm

验证

对vip发起访问,可以看到流量从vip进入后会负载均衡到每个udp real server:文章来源地址https://www.toymoban.com/news/detail-520809.html

nc -u vip udp-port

到了这里,关于【博客678】keepalived+ipvs fullnat模式实现tcp + udp负载均衡器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议

    在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的传输层协议。它们都用于在网络上传输数据,但是它们之间有很多不同之处。本文将介绍TCP和UDP的基本概念,以及在Java中如何实现TCP和UDP协议。 TCP和UDP都是传输层协议,用于在网络上传输数据。

    2024年02月16日
    浏览(101)
  • lvs+keepalived+nginx双主模式双主热备实现负载均衡

    目录 一、原理 二、真实服务器nginx配置 三、lvs的keepalived配置 3.1 配置文件 3.2 开启keepalived服务 四、测试 4.1 测试访问VIP 4.2 模拟lvs01宕机 主机名 IP nginx01 11.0.1.31 nginx01 11.0.1.31 lvs01 11.0.1.33 lvs02 11.0.1.34 VIP1 11.0.1.29 VIP2 11.0.1.30 lvs+keepalived+nginx主备模式下,lvs永远只有一台在工作,

    2024年01月25日
    浏览(39)
  • java实现UDP及TCP通信

    简介 UDP (User Datagram Protocol)用户数据报协议, TCP (Transmission Control Protocol) 传输控制协议,是传输层的两个重要协议。 UDP是一种 无连接、不可靠 传输的协议。其将数据源IP、目的地IP和端口封装成数据包,不需要建立连接,每个数据包的大小限制在64KB内;发送不管对方是否准

    2024年02月03日
    浏览(45)
  • 【QT】TCP/UDP详解及实现

    TCP模型是一个常见的网络协议参考模型,也称为TCP/IP模型或互联网模型。它是指TCP/IP协议族中的一组协议,用于在计算机网络中进行数据通信。TCP模型由四个层次组成,分别是: 应用层(Application Layer): 应用层是最靠近用户的层次,为用户提供各种网络应用服务。 包括常

    2024年02月10日
    浏览(37)
  • 【使用W5500实现UDP、TCP通信】

    一、W5500介绍 W5500是一个集成的以太网模块,这个模块上携带TCP/IP协议,控制器只需要通过SPI协议读写其寄存器便可以以网络的方式进行数据交互。 W5500模块自带10个引脚,但由于使用其官方库,只需使用六个引脚便可以进行数据交互,这六个引脚分别为:VCC、GND、MISO、MOSI、

    2023年04月08日
    浏览(43)
  • 简单应用UDP模拟TCP的项目实现

    1. 引言 在网络协议中,传输控制协议 (TCP) 和用户数据报协议 (UDP)是两种代表性的设计。UDP是一种简洁、无连接的协议,提供了一种更快速、轻量的通信方式。而TCP是一种可靠、面向连接的协议,确保了数据传输的稳定性,TCP适用于网页浏览、文件传输和电子邮件等,UDP简单

    2024年04月13日
    浏览(42)
  • 基于UDP/TCP的网络通信编程实现

    红色是心中永不褪色的赤诚 操作系统为网络编程提供了 Socket api , Socket是基于TCP/IP协议的网络通信的基本单元, 基于Socket的网络程序开发就是 网络编程. 由于直接与应用层联系的是传输层, 所以针对应用层协议(TCP, UDP), Shocket提供了三种套接字, 分别是 流套接字(使用TCP) , 数据报

    2024年02月08日
    浏览(54)
  • 基于python socket实现TCP/UDP通信

    两个应用程序如果需要进行通讯最基本的一个前提就是能够唯一的标示一个进程,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。能够唯一标示网络中的进程后

    2024年02月16日
    浏览(52)
  • LVS-DR模式+keepalived+nginx+tomcat实现动静分离、负载均衡、高可用实验

    实验条件: test2——20.0.0.20——主服务器——ipvsadm、keepalived服务 test3——20.0.0.30——备服务器——ipvsadm、keepalived服务 nginx5——20.0.0.51——后端真实服务器1(tomcat的代理服务器)——nginx服务 nginx6——20.0.0.61——后端真实服务器2(tomcat的代理服务器)——nginx服务 tomcat——

    2024年02月08日
    浏览(67)
  • TCP首部、和UDP的区别、怎么实现可靠链接

    TCP(传输控制协议)首部是TCP报文段的头部部分,包含了多个字段,用于控制和管理TCP连接的通信。以下是TCP首部的字段及其作用: 源端口号(Source Port):  16位字段,用于标识发送方的应用程序端口号。这个字段指示了发送方数据来自哪个应用程序。 目标端口号(Desti

    2024年02月22日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包