目錄
題目
IP規劃
配置IP
RS1
RS2
RS3
LVS
client
配置RS
配置LVS
安裝lvs軟件
啟動ipvsadm服務
lvs規則匹配
ipvsadm部分選項
客戶端測試?
總結
題目
使用LVS的 NAT 模式實現 3 臺RS的輪詢訪問,IP地址和主機自己規劃。
IP規劃
| 主機 | IP地址 |
|---|---|
| RS1-nat模式 | 192.168.239.11/24 |
| RS2-nat模式 | 192.168.239.12/24 |
| RS3-nat模式 | 192.168.239.13/24 |
| LVS-僅主機模式 | 192.168.10.100/24 |
| LVS-nat模式 | 192.168.239.8/24 |
| client-僅主機模式 | 192.168.10.200/24 |
LVS服務器需要有兩塊網卡,一塊用于虛擬IP,便于用戶訪問;另一塊作為后端真實主機的網關。
配置IP
RS1
[root@localhost ~]# hostnamectl hostname RS1[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.11/24 ipv4.gateway 192.168.239.8 connection.autoconnect yes[root@localhost ~]# nmcli connection up ens160
RS2
[root@localhost ~]# hostnamectl hostname RS2[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.12/24 ipv4.gateway 192.168.239.8 connection.autoconnect yes[root@localhost ~]# nmcli connection up ens160
RS3
[root@localhost ~]# hostnamectl hostname RS3[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.13/24 ipv4.gateway 192.168.239.8 connection.autoconnect yes[root@localhost ~]# nmcli connection up ens160
LVS
[root@localhost ~]# hostnamectl hostname LVS[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.239.8/24 ipv4.gateway 192.168.239.2 connection.autoconnect yes[root@localhost ~]# nmcli connection up ens160//修改網卡名稱
[root@localhost ~]# nmcli connection modify 'Wired connection 1' connection.id ens224
[root@LVS ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens224 389e5c71-ccd0-3095-8fcc-9fbdf9afd8b9 ethernet ens224
ens160 19f573ea-ea7b-3615-841c-ddab4be8eced ethernet ens160
lo e51ecc39-bd6f-4ffd-8918-61dc2c967574 loopback lo [root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.10.100/24 ipv4.gateway 192.168.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes[root@localhost ~]# nmcli connection up ens224
client
[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.10.200/24 ipv4.gateway 192.168.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes[root@localhost ~]# nmcli connection up ens160[root@localhost ~]# hostnamectl hostname client
配置RS
安裝并配置nginx服務(每臺RS配置均一致)
//掛載
[root@RS1 ~]# mount /dev/sr0 /mnt[root@RS1 ~]# dnf install -y nginx[root@RS1 ~]# echo $(hostname;hostname -I) > /usr/share/nginx/html/index.html [root@RS1 ~]# systemctl start nginx[root@RS1 ~]# systemctl stop firewalld
在LVS上測試nginx服務

配置LVS
安裝lvs軟件
[root@LVS ~]# mount /dev/sr0 /mnt[root@LVS ~]# dnf install -y ipvsadm
啟動ipvsadm服務
[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm[root@LVS ~]# systemctl start ipvsadm
lvs規則匹配
[root@LVS ~]# ipvsadm -A -t 192.168.10.100:80 -s rr[root@LVS ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.239.11:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.239.12:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.239.13:80 -m -w 1[root@LVS ~]# 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.10.100:80 rr-> 192.168.239.11:80 Masq 1 0 3 -> 192.168.239.12:80 Masq 1 0 2 -> 192.168.239.13:80 Masq 1 0 2 [root@LVS ~]# systemctl stop firewalld
[root@LVS ~]# systemctl restart ipvsadm
ipvsadm部分選項
| 選項 | 含義 |
|---|---|
| -A | 添加虛擬服務 |
| -E | 修改已有虛擬服務 |
| -D | 刪除虛擬服務 |
| -a | 向虛擬服務添加真實服務器(Real Server) |
| -e | 修改真實服務器配置 |
| -d | 從虛擬服務中刪除真實服務器 |
| -L | 查看當前規則列表(-Ln :數字格式顯示) |
| -t/-u/-f | 指定協議類型 |
| -t:TCP服務(例如:-t 192.168.10.100:80) | |
| -u: UDP服務 | |
| -f: 防火墻標記(FWM) | |
| -s | 指定標度算法(rr輪詢、wrr加權輪詢、lc最好連接) |
| -r | 指定真實服務器地址 |
| -m/-g/-i | 指定轉發方式 |
| -m: NAT模式 | |
| -g: DR模式(直接路由) | |
| -i: TUN模式 | |
| -w | 設置權重 |
| -p | 啟用持久化連接 |
| -C | 清空所有規則 |
配置完成后重啟,此時客戶端測試發現,不報錯了,但卻沒有響應
[root@client ~]# curl 192.168.10.100
^C
?原因是還需要配置內核轉發參數?net.ipv4.ip_forward=1
root@LVS ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf//使修改生效
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1
客戶端測試?

總結
1.防火墻firewalld和selinux最好都關了,不然實驗會比較麻煩
2.在配置規則時,通過-m參數指定lvs為nat模式
3.需要在LVS服務器上配置內核轉發參數