ipvsadm命令選項
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一台新的虛擬服務器(VIP)。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的所有記錄。
-R --restore 恢復虛擬服務器規則
-S --save 保存虛擬服務器規則,備份輸出為-R 選項可讀的格式
-a --add-server 在內核虛擬服務器表的一條記錄里添加一條新的真實服務器記錄(RIP)。也就是在一個虛擬服務器中增加一台新的真實服務器
-e --edit-server 編輯一條虛擬服務器記錄中的某條真實服務器記錄
-d --delete-server 刪除一條虛擬服務器記錄中的某條真實服務器記錄
-L|-l --list 顯示內核虛擬服務器表
-Z --zero 虛擬服務表計數器清零(清空當前的連接數量等)
--set tcp tcpfin udp 設置連接超時值
--start-daemon 啟動同步守護進程。他后面可以是master 或backup,用來說明LVS Router 是master 或是backup。在這個功能上也可以采用keepalived 的VRRP 功能。
--stop-daemon 停止同步守護進程
-h --help 顯示幫助信息
-p --persistent [timeout] 持久穩固的服務(持久性連接)。這個選項的意思是來自同一個客戶的多次請求,將被同一台真實的服務器處理。timeout 的默認值為360 秒。
-t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark 說明是經過iptables 標記過的服務類型。
-u --udp-service service-address 說明虛擬服務器提供的是udp 的服務[vip:port] or [real-server-ip:port]
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是: wlc.
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真實的服務器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式為DR直接路由模式(也是LVS 默認的模式)
-i --ipip 指定LVS 的工作模式為隧道模式
-m --masquerading 指定LVS 的工作模式為NAT 模式
-w --weight weight 真實服務器的權值
--mcast-interface interface 指定組播的同步接口
-c --connection 顯示LVS 目前的連接 如:ipvsadm -L -c
--timeout 顯示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 顯示同步守護進程狀態
--stats 顯示統計信息
--rate 顯示速率信息
--sort 對虛擬服務器和真實服務器排序輸出
-n --numeric 輸出IP地址和端口的數字形式
案例1:跟虛擬服務器相關的參數:
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一台新的虛擬服務器(VIP)。
-E --edit-service 編輯內核虛擬服務器表中的一條虛擬服務器記錄。
-D --delete-service 刪除內核虛擬服務器表中的一條虛擬服務器記錄。
-C --clear 清除內核虛擬服務器表中的所有記錄。
-R --restore 恢復虛擬服務器規則
-S --save 保存虛擬服務器規則,備份輸出為-R 選項可讀的格式
添加一條虛擬服務器記錄:ipvsadm -A -t vip:端口 [-s rr] #-s后跟調度算法,若不跟-s則默認為wlc,其他算法還有wrr、dh、sh、lblc、lblcr、lc等
[root@lvs-server ~]# ipvsadm -A -t 192.168.0.200:80
[root@lvs-server ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.200:80 wlc
轉發方式:
格式:
ipvsadm -a -t VIP:端口 -r RIP:端口 -m [-w 1] #-m-->LVS-NAT,-w 為加權
ipvsadm -a -t VIP:端口 -r RIP:端口 -g [-w 1] # -g-->LVS-DR,-g可省略,默認為DR模式
ipvsadm -a -t VIP:端口 -r RIP:端口 -i [-w 1] # -i-->LVS-TUN
[root@lvs-server ~]# ipvsadm -a -t 192.168.0.200:80 -r 10.4.7.11:80 -m #將vip192.168.0.200的80端口的數據轉發到RS服務器10.4.7.11的80端口
[root@lvs-server ~]# ipvsadm -a -t 192.168.0.200:80 -r 10.4.7.10:8080 -m #將vip192.168.0.200的80端口的數據轉發到RS服務器10.4.7.10的8080端口
值得注意的是:該方式添加的規則重啟服務器后規則就消失了,因此應該將該規則保存在文件中,待重啟后可以直接從文件中恢復規則
保存規則:
[root@lvs-server ~]# ipvsadm -Sn #查看保存的內容,該方式是沒有做保存,只是顯示出來保存規則內容
-A -t 192.168.0.200:80 -s wlc -a -t 192.168.0.200:80 -r 10.4.7.10:8080 -m -w 1 -a -t 192.168.0.200:80 -r 10.4.7.11:80 -m -w 1
[root@lvs-server ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm #將規則保存到/etc/sysconfig/ipvsadm文件中
清空規則:
[root@lvs-server ~]# ipvsadm -C
[root@lvs-server ~]# ipvsadm -Ln #此時規則顯示為空
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
通過文件還原規則:
[root@lvs-server ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
[root@lvs-server ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.200:80 wlc -> 10.4.7.10:8080 Masq 1 0 0 -> 10.4.7.11:80 Masq 1 0 0
[root@lvs-server ~]# cat /usr/lib/systemd/system/ipvsadm.service
[Unit]
Description=Initialise the Linux Virtual Server
After=syslog.target network.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm" #重啟服務器后,默認從/etc/sysconfig/ipvsadm該文件中讀取規則,將ipvsadm服務設置開機自啟動后開機將自動加載規則
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm" #停止ipvsadm服務時(執行systemctl stop ipvsadm時),自動將規則寫入/etc/sysconfig/ipvsadm中
ExecStop=/sbin/ipvsadm -C
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
查詢命令
[root@lvs-server ~]# ipvsadm -L # 查看lvs負載均衡信息
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.200:http wlc -> 10.4.7.10:webcache Masq 1 0 0 #此處顯示的不一定正確 -> 10.4.7.11:http Masq 1 0 0
[root@lvs-server ~]# ipvsadm -Ln #-Ln:輸出IP地址和端口的數字形式
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.200:80 wlc -> 10.4.7.10:8080 Masq 1 0 0 -> 10.4.7.11:80 Masq 1 0 0
[root@lvs-server ~]# ipvsadm -Lcn
IPVS connection entries pro expire state source virtual destination TCP 14:50 ESTABLISHED 192.168.0.100:63369 192.168.0.200:80 10.4.7.11:80 TCP 14:50 ESTABLISHED 192.168.0.100:63368 192.168.0.200:80 10.4.7.10:8080
#協議 連接時間 連接狀態 CIP VIP RIP
[root@lvs-server ~]# ipvsadm -L --rate # 顯示速率信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 192.168.0.200:80 0 1 1 213 92
-> 10.4.7.10:8080 0 0 0 6 4
-> 10.4.7.11:80 0 1 0 207 88
[root@lvs-server ~]# ipvsadm -L --sort # 對虛擬服務器和真是服務器排序輸出
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.200:80 wlc
-> 10.4.7.10:8080 Masq 1 0 0
-> 10.4.7.11:80 Masq 1 0 1
[root@lvs-server ~]# ipvsadm -L --stats # 顯示統計信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.0.200:80 10 70 43 10759 4658
-> 10.4.7.10:8080 5 50 33 9899 4198
-> 10.4.7.11:80 5 20 10 860 460
[root@lvs-server ~]# ipvsadm -L --timeout # 顯示tcp tcpfin udp 的timeout值
Timeout (tcp tcpfin udp): 900 120 300