實驗原理圖
實驗環境
- LVS調度器作爲web服務器池的網關
- LVS服務器配置兩塊網卡分別連接內外網
- 使用輪詢(rr)調度算法
- LVS負載調度器網段規劃 內網33網關:192.168.144.1 外網36:12.0.0.1
- web1 192.168.144.151
- web2 192.168.144.170
- nfs服務器 192.168.144.145
- client測試機 12.0.0.12
實踐操作
在NFS服務器上添加兩塊硬盤,做共享存儲使用,格式化
- 在虛擬機上添加硬盤
[root@nfs ~]# fdisk /dev/sdb //分區
令(輸入 m 獲取幫助):n //創建新分區
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //主分區
分區號 (1-4,默認 1): //回車默認選項
起始 扇區 (2048-41943039,默認爲 2048): //回車默認選項
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039): //回車默認選項
將使用默認值 41943039
分區 1 已設置爲 Linux 類型,大小設爲 20 GiB
命令(輸入 m 獲取幫助):w //保存
[root@nfs ~]# mkfs.xfs /dev/sdb1 //格式化磁盤
##以上操作格式化/dev/sdc磁盤
[root@nfs ~]# mkdir /opt/kgc /opt/accp //創建掛載點
[root@nfs ~]# vim /etc/fstab //創建自動掛載
...
/dev/sdb1 /opt/kgc xfs defaults 0 0 //編輯自動掛載條目
/dev/sdc1 /opt/accp xfs defaults 0 0
[root@nfs ~]# mount -a //刷新掛載
[root@nfs ~]# df -hT //查看磁盤掛載情況
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/sdb1 xfs 20G 33M 20G 1% /opt/kgc
/dev/sdc1 xfs 20G 33M 20G 1% /opt/accp
[root@nfs ~]# systemctl stop firewalld.service //關閉防火牆
[root@nfs ~]# setenforce 0
[root@nfs ~]# rpm -q nfs-utils //查看nfs兩個包是否安裝
nfs-utils-1.3.0-0.48.el7.x86_64
[root@nfs ~]# rpm -q rpcbind
rpcbind-0.2.0-42.el7.x86_64
[root@nfs ~]# vim /etc/exports //配置共享存儲配置文件
...
/opt/kgc 192.168.144.0/24(rw,sync,no_root_squash) //支持144網段讀寫,同步,不支持降級處理
/opt/accp 192.168.144.0/24(rw,sync,no_root_squash)
把NFS服務器切換爲僅主機模式,啓動服務
[root@nfs ~]# systemctl start nfs //開啓nfs服務
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# showmount -e //查看提供共享信息
Export list for nfs:
/opt/accp 192.168.144.0/24
/opt/kgc 192.168.144.0/24
[root@nfs ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //修改網卡信息
BOOTPROTO=static //改爲靜態
IPADDR=192.168.144.145 //添加地址,子網掩碼,網關
NETMASK=255.255.255.0
GATEWAY=192.168.144.1
[root@nfs ~]# service network restart //重啓網絡
在web1,web2上安裝http服務,切換網卡爲僅主機模式
- web1服務器
[root@web1 ~]# yum install httpd -y //安裝web服務 [root@web1 ~]# systemctl stop firewalld.service //關閉防火牆 [root@web1 ~]# setenforce 0 [root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //修改網卡信息 BOOTPROTO=static //改爲靜態 ... IPADDR=192.168.144.151 //添加地址,子網掩碼,網關 NETMASK=255.255.255.0 GATEWAY=192.168.144.1 [root@web1 ~]# service network restart [root@web1 ~]# showmount -e 192.168.144.145 //查看nfs共享信息 Export list for 192.168.144.145: /opt/accp 192.168.144.0/24 /opt/kgc 192.168.144.0/24 [root@web1 ~]# vim /etc/fstab //設置自動掛載 192.168.144.145:/opt/kgc /var/www/html nfs defaults,_netdev 0 0 //掛載到站點中,模式爲nfs,默認網絡設備 [root@web1 ~]# mount -a //刷新掛載 [root@web1 ~]# df -hT //查看磁盤掛載信息 文件系統 類型 容量 已用 可用 已用% 掛載點 192.168.144.145:/opt/kgc nfs4 20G 32M 20G 1% /var/www/html [root@web1 ~]# echo "this is kgc web" > /var/www/html/index.html //創建網頁 [root@web1 ~]# systemctl start httpd.service //啓動web服務
- web2服務器
[root@web2 ~]# yum install httpd -y //安裝web服務 [root@web2 ~]# systemctl stop firewalld.service //關閉防火牆 [root@web2 ~]# setenforce 0 [root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //修改網卡信息 BOOTPROTO=static //改爲靜態 ... IPADDR=192.168.144.170 //添加地址,子網掩碼,網關 NETMASK=255.255.255.0 GATEWAY=192.168.144.1 [root@web2 ~]# service network restart [root@web2 ~]# showmount -e 192.168.144.145 //查看nfs共享信息 Export list for 192.168.144.145: /opt/accp 192.168.144.0/24 /opt/kgc 192.168.144.0/24 [root@web2 ~]# vim /etc/fstab //設置自動掛載 192.168.144.145:/opt/accp /var/www/html nfs defaults,_netdev 0 0 //掛載到站點中,模式爲nfs,默認網絡設備 [root@web2 ~]# mount -a //刷新掛載 [root@web2 ~]# df -hT //查看磁盤掛載信息 文件系統 類型 容量 已用 可用 已用% 掛載點 192.168.144.145:/opt/accp nfs4 20G 32M 20G 1% /var/www/html [root@web2 ~]# echo "this is accp web" > /var/www/html/index.html //創建網頁 [root@web2 ~]# systemctl start httpd.service //啓動web服務
在lvs負載調度器上添加兩塊網卡並設置路由轉發
[root@lvs ~]# yum install ipvsadm -y ##安裝ipvsadm調度管理工具
- 添加外網的網卡,並切換爲僅主機模式
[root@lvs ~]# cd /etc/sysconfig/network-scripts [root@lvs network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36 //複製網卡配置文件爲ens36配置文件 [root@lvs network-scripts]# vim ifcfg-ens33 BOOTPROTO=static IPADDR=192.168.144.1 //設置內網網關ip NETMASK=255.255.255.0 [root@lvs network-scripts]# vim ifcfg-ens36 BOOTPROTO=static //刪除UUID NAME=ens36 //修改爲36 DEVICE=ens36 IPADDR=12.0.0.1 //設置外網網關 NETMASK=255.255.255.0 [root@lvs network-scripts]# service network restart //重啓網卡服務 //可以在web上用ping測試能否連同網關 [root@lvs network-scripts]# vim /etc/sysctl.conf //路由轉發配置文件 net.ipv4.ip_forward=1 //開啓路由轉發 [root@lvs network-scripts]# sysctl -p //加載路由轉換功能 [root@lvs network-scripts]# iptables -F //清除轉發表 [root@lvs network-scripts]# iptables -t nat -F //清除nat地址轉換表 [root@lvs network-scripts]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.144.0/24 -j SNAT --to-source 12.0.0.1 //指定nat地址轉換表,指定數據流出接口,指定原ip地址,指定源地址轉換SNAT,指定轉換的ip地址
加載lvs內核模塊,配置管理軟件ipvsadm
[root@lvs network-scripts]# modprobe ip_vs //加載lvs內核 [root@lvs network-scripts]# cat /proc/net/ip_vs //查看ipvs信息 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@lvs network-scripts]# ipvsadm --save > /etc/sysconfig/ipvsadm //centos7必須要先保存 [root@lvs network-scripts]# systemctl start ipvsadm //啓動ipvsadm服務 [root@lvs network-scripts]# vim /opt/nat.sh //編寫ipvsadm腳本 #!/bin/bash ipvsadm -C //清空ipvs緩存 ipvsadm -A -t 12.0.0.1:80 -s rr //指定虛擬服務訪問入口,指定輪詢算法 ipvsadm -a -t 12.0.0.1:80 -r 192.168.144.151:80 -m //指定真實服務器,nat模式 ipvsadm -a -t 12.0.0.1:80 -r 192.168.144.170:80 -m ipvsadm //啓動 [root@lvs network-scripts]# chmod +x /opt/nat.sh //給執行權限 [root@lvs network-scripts]# cd /opt/ [root@lvs opt]# ./nat.sh //啓動腳本 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP lvs:http rr -> 192.168.144.151:http Masq 1 0 0 -> 192.168.144.170:http Masq 1 0 0
用client測試機(僅主機模式)訪問12.0.0.1