文中实验需要使用以下软件:
- 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”,那就说明我们搭建成功了!