1. lvs 建立在 tcp 之上, 先通过某个 port 建立了连接, 然后通过 seesion 转发给 realServer.
tcp本身连接建立了,维护链接的定时器是keepalive,这个不设置,就不会断,中间lvs根据session转发,idle就是把session删除,数据进入到lvs,没session就丢弃. lvs 断开连接其实断的不彻底. 只是删除了 session,但是没有删除对应的定时器keepalive. lvs 没有发送 rst ,而是只是删除了session. keepalive 是tcp 底层控制的.
几种模式的区别是 client 和 realServer 的可见性.
2. TCP保活(TCP keepalive) lvs 识别不了 tcp 头,不认识 sync 结构.
![tcp 连接,黑洞,超时 tcp 连接,黑洞,超时](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0RvdkwybHRaeTVpYkc5bkxtTnpaRzR1Ym1WMEx6SXdNVGd3TVRFNE1qRTBNVFU0T0RNeVAzZGhkR1Z5YldGeWF5OHlMM1JsZUhRdllVaFNNR05FYjNaTU1rcHpZakpqZFZrelRtdGlhVFYxV2xoUmRscHRWbkJOZWswd1RXcE5QUzltYjI1MEx6VmhOa3cxVERKVUwyWnZiblJ6YVhwbEx6UXdNQzltYVd4c0wwa3dTa0pSYTBaRFRVRTlQUzlrYVhOemIyeDJaUzgzTUM5bmNtRjJhWFI1TDFOdmRYUm9SV0Z6ZEE9PQ%3D%3D.jpg?w=700&webp=1)
[1] Web基础架构:负载均衡和LVS 写的非常清楚. 点到了 1.代替建立连接 2.有 session 3.
客户端与服务端的通信,一次请求可能包含多个TCP包,LVS必须保证同一连接的TCP包,必须被转发到同一台RS,否则就乱套了。为了确保这一点,LVS内部维护着一个Session的Hash表,通过客户端的某些信息可以找到应该转发到哪一台RS上。