文中實驗需要使用以下軟件:
- CentOS的鏡像
- Virtual Box
- GNS3
0、實驗前的準備工作
0.1、修改yum源
爲了方便安裝軟件,我們設置yum源爲公司yum源
- 1、直接複製公司機器上的yum源文件到自己機器上
[root@lvs ~]# vim /etc/yum.repos.d/XXX.repo
- 2、更新cache
[root@lvs ~]# yum makecache
1、創建4臺實驗用的虛機
分別爲
- Client: 客戶機器
- LVS: LVS 機器
- RS1: real server 1
- RS2: real server 2
以上系統均爲CentOS7
,所用虛擬軟件爲Virtual Box
。
可以通過先創建一臺虛機後,逐個複製的方法來快速創建虛機。
記得勾選“重新初始化所有網卡的MAC地址(R)”
所有虛機均啓用兩個網卡,如下圖所示,連接方式
選擇未指定
。
之所以選擇
未指定
方式是爲了後面在GSN中方便連線
爲了方便管理,我們後面會將eth0
,即第一個網卡用於內部;相對的,eth1
,即第二個網卡用於外部。
2、在GSN3中設置網絡拓撲
按照下圖所示的方式連接各臺虛機,圖中所示的IP
及網卡連接方式
均可先忽略,後面會講述。
3、設置RS1虛機
3.1、設置網卡連接方式
在GSN中的RS1
圖標上右擊,選擇Configure
然後,在network
選項卡中,設置Adapters
爲1
其實對於RS1而言,上面的操作不做也可以...但是當需要啓用外部網卡
eth1
的時候,就需要設置Adapters
爲2了。
網卡1
的連接方式
選擇僅主機(Host Only)網絡
。
3.2、設置網卡1信息
我們先來看下網卡信息,輸入ip addr
指令可以看到
當然,我這裏是已經設置後的情形,設置前稍有不同,不過我們可以看到網卡1
的名稱應該爲enp0s3
,
所以我們可以這樣來修改網卡1
的配置
[root@rs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet"
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.30.17
PREFIX=24
GATEWAY=192.168.30.200
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="enp0s3"
DEVICE="enp0s3"
ONBOOT="yes"
這裏需要注意將其網關設置爲192.168.30.200
,即LVS
的內部地址。
修改後通過service network restart
指令來使新配置生效。
[root@rs1 ~]# service network restart
Restarting network (via systemctl): [ 確定 ]
3.3、安裝apache服務
爲了方便後面訪問lvs時候知道訪問到了哪臺機器,我們在每臺RS上都安裝apache服務,以開放80端口服務。
# 安裝apache服務
[root@rs1 ~]# yum install -y httpd
# 啓動apache服務
[root@rs1 ~]# httpd
修改默認主頁內容爲RS1
[root@localhost rs1]# echo RS1 > /var/www/html/index.html
爲了方便區分,在兩臺不同的RS上,我們需要輸入不同的內容。
3.4、關閉防火牆
3.4.1、臨時關閉防火牆
可以使用 setenforce 0
來臨時關閉防火牆,但是重啓電腦後會失效
[root@rs1 ~]# getenforce
Enforcing
[root@rs1 ~]# setenforce 0
[root@rs1 ~]# getenforce
Permissive
3.4.2、永久關閉防火牆
[root@rs1 ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforce
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
把SELINUX=enforce 改成disabled就可以了,重啓電腦reboot
,永久生效
[root@rs1 ~]# reboot
# 輸入上面的命令後Xshell斷開連接
[root@rs1 ~]# Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(本機CentOS) at 15:31:57.
# 再次開機後
[root@rs1 ~]# getenforce
Disabled
關閉firewall
3.4.3、關閉firewall
此外還需要執行下面的命令
# 查看防火牆狀態
firewall-cmd --state
# 臨時關閉防火牆
systemctl stop firewalld.service
# 永久關閉防火牆
systemctl disable firewalld
這樣一來RS1
便設置好了。
4、設置RS2虛機
與設置RS1虛機方式類似,只是要記住
- RS2的
IPADDR
爲192.168.30.27
- RS2的apache主頁內容爲
RS2
5、設置LVS虛機
LVS需要設置的內容比較多,我們先把共性的地方設置了
5.1、關閉防火牆
同RS服務器設置,不再多說
5.2、配置網卡1
與RS類似,但是不需要配置網關了
[root@lvs ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE="Ethernet"
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.30.200
PREFIX=24
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="enp0s3"
DEVICE="enp0s3"
ONBOOT="yes"
5.3、配置網卡2
LVS需要一個網卡用於連接外部網絡,故需要額外設置。
網卡2的連接方式
需要在Virtual Box
中改爲橋接模式
。
並且修改網卡2的配置文件:
[root@lvs ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s8
DEVICE="enp0s8"
BOOTPROTO="none"
IPADDR=172.20.0.200
PREFIX=24
你機器上的網卡二可能不叫
enp0s8
,同前文一樣ip addr
可以查看網卡的名字。
service network restart
重啓服務後,網卡改動生效。
5.4、安裝ipvsadm
linux 內核自帶了 ipvs,但是ipvsadm
還是要我們自己安裝的。
[root@lvs ~]# yum -y install ipvsadm
...
已安裝:
ipvsadm.x86_64 0:1.27-7.el7
完畢!
檢查是否安裝成功
[root@lvs yum.repos.d]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
看到如上內容,安裝就成功了
5.5、打開ip轉發機制
[root@lvs ~]# echo 1 >/proc/sys/net/ipv4/ip_forward
[root@lvs ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1
5.6、配置轉發規則
#創建一個集羣服務,調度算法rr
[root@lvs ~]# ipvsadm -A -t 172.20.0.200:80 -s rr
#添加rs1 nat方式
[root@lvs ~]# ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.17 -m
#添加rs2 nat方式
[root@lvs ~]# ipvsadm -a -t 172.20.0.200:80 -r 192.168.30.27 -m
6、配置Client虛機
Client虛機的配置方式很簡單,畢竟它只是用來訪問LVS的,我們只需要配置他的網卡2信息就好。
6.2、配置網卡2
配置方式和LVS
網卡2的配置方式相似,只是要注意:
- Client的網卡2
IPADDR
爲172.20.0.123
service network restart
重啓服務後,網卡改動生效。
7、測驗是否搭建成功
我們只要在Client機器上訪問LVS機器的外部網卡IP即可。
[root@client ~]# curl 172.20.0.200
RS1
[root@client ~]# curl 172.20.0.200
RS2
如果能依次出現“RS1”和“RS2”,那就說明我們搭建成功了!