文中实验需要使用以下软件:

  • 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的IPADDR192.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的网卡2IPADDR172.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”,那就说明我们搭建成功了!

LVS本地实验环境搭建的更多相关文章

  1. XAMPP + PhpStorm + Xdebug本地实验环境搭建

    参考: 下载合适的XDebug 点击这里,选择合适xdebug XAMPP配置 php_xdebug-xxxx.dll 拷贝dll至 D:\XAMPP\php\ext php.ini 文末追加 [XD ...

  2. https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    一:什么是https SSL(Security   Socket   Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...

  3. 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security   Socket   Layer)全称 ...

  4. 操作系统内核Hack:(一)实验环境搭建

    操作系统内核Hack:(一)实验环境搭建 三四年前,心血来潮,入手<Orange's:一个操作系统的实现>学习操作系统内核,还配套买了王爽的<汇编语言(第二版)>和<80 ...

  5. Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试

    标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9 ...

  6. spark-windows(含eclipse配置)下本地开发环境搭建

    spark-windows(含eclipse配置)下本地开发环境搭建   >>>>>>注意:这里忽略JDK的安装,JDK要求是1.8及以上版本,请通过 java  ...

  7. mininet(一)实验环境搭建

    mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 最近学习(https://github.com/mininet/openflow-tutor ...

  8. rocketmq那些事儿之本地调试环境搭建

    上一篇文章中我们已经介绍过rocketmq的集群环境搭建,然而在源码的学习中我们还需要进行本地的调试和问题的定位查找,毕竟还是在本地方便些,今天就说一说如何进行源码的本地调试 下载编译 对于rocke ...

  9. 手把手教你 Apache DolphinScheduler 本地开发环境搭建 | 中英文视频教程

    点击上方 蓝字关注我们 最近,一些小伙伴反馈对小海豚的本地开发环境搭建过程不太了解,这不就有活跃的贡献者送来新鲜的视频教程!在此感谢@Tianqi-Dotes 的细致讲解 贡献者还贴心地录制了中英文两 ...

随机推荐

  1. python -- 面向对象编程(类、对象)

    一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...

  2. Linux虚拟机扩展磁盘

    Linux虚拟机扩展磁盘 1.虚拟机关机,Vmware中扩展磁盘 2.虚拟机开机,查看磁盘大小 [root@hadoop6 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmp ...

  3. 《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  4. 理解 React Hooks 心智模型:必须按顺序、不能在条件语句中调用的规则

    前言 自从 React 推出 hooks 的 API 后,相信大家对新 API 都很喜欢,但是它对你如何使用它会有一些奇怪的限制.比如,React 官网介绍了 Hooks 的这样一个限制: 不要在循环 ...

  5. [IOI2005]mea

    IOI 读完题,感觉这个题并不是很难,那我是不是可以去IOI了: 最先考虑暴力,发现完全行不通,所以,我们考虑其他方法.突然发现:其实在确定 \(s_1\) 的时候,整个序列就可以确定了,所以我们考虑 ...

  6. python 装饰函数2

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue May 5 21:40:49 2020 ...

  7. Python 数值中的下划线是怎么回事?

    花下猫语:Python 中下划线的用法令人叹为观止,相信你已在各种文章或教程中见识过了.在 2016 年的 3.6 版本之后,Python 还引入了一种新的语法,使得下划线也可以出现在数值中.这篇翻译 ...

  8. 理清 UT、UTC、GMT和CST

    平时各种时间标准简写绕得不明不白,查一下整理在这里. IAT: International Atomic Time, 原子时.又称国际原子时,是一种通过原子钟得到的时间标准,原子钟是世界上已知最准确的 ...

  9. Windows系统安装Mariadb数据库(zip包方式安装)--九五小庞

    1.去Mariadb官网下载zip安装包 下载地址:https://downloads.mariadb.org/mariadb/10.3.31/ 2.解压压缩包到指定的安装位置 3.在安装包的data ...

  10. JVM 内存分配、调优案例

    内存分配 对象优先在Eden区分配 大多数情况下,对象在新生代Eden区中分配.当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC. HotSpot虚拟机提供了-XX:+PrintG ...