[TOC]
### **主机规划**
《LVS + Keepalived + DR》
LVS主机:192.168.2.100
RS主机 :192.168.2.104,192.168.2.105
VIP:192.168.2.110
### **LVS主机**
##### **1、安装ipvsadm**
```
$ yum -y install ipvsadm
```
##### **2、安装keepalived**
```
$ yum -y install keepalived
```
##### **3、配置keepalived**
编辑`/etc/keepalived/keepalived.conf`文件,内容如下
```
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #备用服务器上为 BACKUP
interface eth0 # 网卡
virtual_router_id 110 # 注意不要和其他keepalived集群冲突
priority 100 #优先级,数值越大优先级越高;备用服务器上为90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.110
}
}
virtual_server 192.168.2.110 80 {
delay_loop 6 #(每隔6秒查询realserver状态,是否存活)
lb_algo wlc #(加权轮询算法)
lb_kind DR #(DR模式)
persistence_timeout 0 #(同一IP的连接多少秒内被分配到同一台realserver,0表示不连接)
protocol TCP #(用TCP协议检查realserver状态)
real_server 192.168.2.104 80 {
weight 100 #(权重)
TCP_CHECK {
connect_timeout 10 #(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.2.105 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
virtual_server 192.168.2.110 81 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.2.104 81 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 81
}
}
real_server 192.168.2.105 81 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 81
}
}
}
```
##### **4、启动keepalived**
```
$ systemctl enable keepalived && systemctl start keepalived
```
### **RS主机**
##### **1、配置lo网卡**
编辑`/etc/sysconfig/network-scripts/ifcfg-lo`,内容更改为如下,把lo网卡的IP配置为VIP
```
DEVICE=lo
IPADDR=192.168.2.110
NETMASK=255.255.255.255
BROADCAST=192.168.2.110
ONBOOT=yes
NAME=loopback
```
然后添加路由(实践中发现该步骤不操作也没问题)
```
$ route add -host 192.168.2.110 dev lo
```
##### **2、配置ARP系统参数**
修改`/etc/sysctl.conf`,在文件尾部添加如下内容
```
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
```
然后执行以下命令生效
```
$ sysctl -p
```
### **FAQ**
**Q:是否可以不装keepalived,直接在网卡上配置vip?**
A:可以的,keepalived的作用有两个:一是在网卡上配置vip,二是通过ipvsadm命令配置ipvs的转发规则。可以参考这篇文章进行手动配置 http://www.ultramonkey.org/papers/lvs_tutorial/html/
**Q:`arp_ignore`和`arp_annouce`的作用是什么?**
A:https://www.jianshu.com/p/734640384fda
1、当client请求vip时,RS不能回应ARP
2、当DS发送给RS时,RS要接收这个包
3、当RS回复包时,源地址要使用VIP
4、当RS回复包时,包要从指定网卡出
### **Reference**
* https://www.cnblogs.com/MacoLee/p/5856858.html
* https://blog.51cto.com/cuchadanfan/1661576
- 应用层
- HTTP
- Cookie
- Session
- HTTP报文格式
- HTTP的Header字段
- HTTPS
- 简介
- 原理
- RSA加密与解密
- 证书签名与验证
- TLS双向认证
- openssl命令汇总
- DNS
- DNS的记录类型
- DNS的报文格式
- FAQ
- 传输层
- TCP
- CloseWait
- 网络层
- IPv6
- 链路层
- 链接层基础知识
- VLAN
- FAQ
- Linux网络收发包
- 网卡收包
- 网卡发包
- 收发包FAQ
- LVS
- 安装-DR模式
- 基本原理
- Ipvsadm命令
- Netfilter
- Netfilter简介
- 注册钩子函数
- Netfilter中数据包流向
- Iptables的数据结构
- 连接跟踪
- 初识连接跟踪
- 连接跟踪详解
- 连接跟踪数据结构
- 数据包与连接的状态
- NAT
- IPVS
- KubeProxy的IPVS模式
- Linux虚拟网络设备
- 虚拟网络设备简介
- Tap
- VethPair
- Vlan
- Vxlan
- Flannel的VXLAN原理
- Openstack的VXLAN原理
- VXLAN总结
- Bridge
- 给容器设置主机网段IP
- Macvlan
- Ipvlan
- IPIP
- IPIP使用介绍
- IPIP源码分析
- Limdiag网络
- 详细设计
- kubeovn
- IP命令
- Calico
- Calico常见问题
- ARP无响应
- 其他