学习

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 查看系统模块
sudo lsmod |grep ip
find /lib/modules/$(uname -r)/ -iname "**.ko*" | cut -d/ -f5- |grep ip
sudo ipvsadm --list -n --persistent-conn  --exact --sort
sudo ipvsadm --list -n --thresholds  --exact --sort
sudo ipvsadm --list -n --rate  --exact --sort
sudo ipvsadm --list -n --stats  --exact --sort
sudo ipvsadm --list -n -c
sudo ipvsadm --list -n 
sudo ipvsadm --list -n --tcp-service 127.0.0.1:30001
sudo ipvsadm --list -n --udp-service 10.254.0.2:53
sudo ipvsadm -Ln -t 10.254.0.1:443
sudo ipvsadm -Ln -u 10.254.0.2:53
sudo ipvsadm -Ln --stats -t 10.254.0.1:443
sudo ipvsadm -Ln --stats -u 10.254.0.2:53
mtr -r -n -c5 10.254.0.1
# sudo ipvsadm --list -n --fwmark-service
########
# ipvsadm -A -t <vip>:<vport> -s <schedule: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq>
sudo ipvsadm -A -t 1.2.3.4:80 -s rr
sudo ipvsadm -a -t 1.2.3.4:80 -r 172.17.0.3 -m
sudo ipvsadm -a -t 1.2.3.4:80 -r 172.17.0.4 -m
sudo ipvsadm -E -t 1.2.3.4:80 -s wrr
sudo ipvsadm -e -t 1.2.3.4:80 -r 172.17.0.3 -m -w 3
##########
# -A, --add-service
# -a, --add-server
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-O] [-M netmask]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
###############
# [packet-forwarding-method]
# -g 设置LVS工作模式为DR直连路由模式
# -i 设置LVS工作模式为TUN隧道模式
# -m 设置LVS的工作模式为NAT模式
# -g, --gatewaying Use gatewaying (direct routing). This is the default.
# -i, --ipip Use ipip encapsulation (tunneling).
# -m, --masquerading Use masquerading (network access translation, or NAT).
###############
# -s 使用LVS所采用的调度算法
# 轮询调度:RR 按依次循环的方式请求调度到不同的服务器,特点是简单,平均分配给每台服务器
# 加权轮询调度:WRR,对RR的一种补充和优化,给每台服务器一个权重,假如A为1,B为2,则优先调度A,权重值越高处理的请求越多
# 最小连接调度:LC,把请求调度到连接数最小的服务器上
# 加权最小连接调度 WLC,给每个服务器一个权值,调度尽可能保证每台服务器的均衡
# 基于局部性最少的连接:lblc,请求数据包的目标IP地址的一种调度算法,先根据目标IP地址寻找最近的该目标地址的所使用的服务器,如果服务器可用并且有能力处理请求,则调度算法会尽可能的选择相同的服务器,否则选择其他
# 带复制的基于局部性的最少连接:lblcr,它记录的不是一个目标IP与另外一台服务器直接的连接记录,它维护的是一个目标IP到一组服务器直接的映射关系,防止单点负载过高
# 目标地址散列调度:DH,根据目标地址通过散列函数将目标IP与服务器建立映射关系,出现服务器不可用或负载高,发往该服务器的请求会会固定发往该服务器。
# 源地址散列调度:SH,与上面的类似,但是它是根据源地址散列算法进行静态分配固定的服务器资源。
###############
# -p session 保持
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
##################################
# 打标记方法(在Director主机):
iptables -t mangle -A PREROUTING -d $vip -p $proto --dport $port -j MARK --set-mark NUMBER 
# 示例:将目的ip是192.168.253.192,目的端口是80和443的数据包都打上80443的标记
iptables -t mangle -A PREROUTING -d 192.168.253.192   -p tcp -m multiport --dport 80,443  -j MARK --set-mark 80443
# 基于标记定义集群服务:
ipvsadm -A -f NUMBER [options]
# 示例:新增一个集群服务,基于防火墙标记进行划分,调度方法为轮询
ipvsadm -A -f 80443 -s rr
##################################
# 0端口
ipvsadm -A -t 192.168.253.192:0 -s rr  -p 10
ipvsadm -a -t 192.168.253.192:0 -r 192.168.253.129
ipvsadm -a -t 192.168.253.192:0 -r 192.168.253.140
##################################
# 查看默认的值使用如下命令
sudo ipvsadm --list --timeout
# 修改 LVS 表中的 fin_timeout 使用指令如下  
sudo ipvsadm --set  900 60 300 中间的 60 就是 tcp 的 fin_timeout 时间
#####################
# 打印IPVS表
sudo ipvsadm-save -n > /tmp/ipvs.txt
######################
# 二层(MAC寻址)
# 三层(IP路由)
# 四层(IP+端口)
# 七层(http协议+端口)
# cat /proc/meminfo | grep Vmalloc
# systemd 111端口
# rpcbind 713端口
# coredns(DNS) 53
# dhcp 68
# nginx(HTTP) 80
# pop3 110
# bird(BGP) 179
# chronyd 323
# sshd 22
# smtp 25
# mysqld 3306

参考