设为首页 收藏本站
查看: 989|回复: 0

[经验分享] 在RHEL6.6环境下进行LVS

[复制链接]

尚未签到

发表于 2018-6-4 13:28:37 | 显示全部楼层 |阅读模式
  结合这几天做LVS-NAT结构模型的实验。特总结如下
  一、准备三台RHEL6.6虚拟机
  1台Director
  2台RealServer
  1、克隆两台RealServer
     在装好RHEL6.6后,最好是将装好了的RHEL6.6作为Director。其余两台RS1、RS2通过克隆的方式实现,只能在Director关机的情况下进行克隆。这里我选择的是完整克隆。也可以通过“现有快照”克隆
  右击Director——>管理——>克隆
  
DSC0000.jpg

  

DSC0001.jpg

  

DSC0002.jpg

  RS2克隆方法同RS1克隆方法一样
2、更新网卡设备名与IP规划
  (1)、更新RS1、RS2网卡设备名
因为克隆后的虚拟机与原虚拟机比较改变了网络设备的名,例如,克隆后的网卡为eth1,而原虚拟机则为eth0。
[root@gnnt rules.d]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:6E:CF:B2  
          inet addr:172.16.0.9  Bcast:172.16.255.255  Mask:255.255.0.0
          ............................................................
[root@gnnt ~]# cd /etc/udev/rules.d/
[root@gnnt rules.d]# vim 70-persistent-net.rules
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:7f:d5:6a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6e:cf:b2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
可看见有两个网卡的配置信息,需要删除掉关于eth0 的信息。然后修改eth1的网卡名称为eth0。
(2)、IP规划
  Director:eth0(桥接模式,可浏览外网)     IP地址:172.16.0.9    子网掩码:255.255.0.0
                                          默认网关:172.16.1.1   DNS:202.106.0.20
           eth1(仅主机模式,不可浏览外网) IP地址:192.168.1.3    子网掩码:255.255.255.0
  

  RS1:eth0(仅主机模式)                    IP地址:192.168.1.1    子网掩码:255.255.255.0
                                          默认网关:192.168.1.3
  

  RS2:eth0(仅主机模式)                    IP地址:192.168.1.2    子网掩码:255.255.255.0
                                          默认网关:192.168.1.3
  具体实现方法可参照:

  http://1343138116.blog.51cto.com/6124664/1680268  Vmware虚拟机三种网络模式用途的第3节ifcfg-ethX的配置
  配置完成后执行如下操作

  [root@gnnt /]#service network restart  #重启网络服务,使配置生效。可以省略,直接进行下一步
  [root@gnnt /]#reboot   #重启系统,让系统重新读取网卡的设备名称
  [root@gnnt /]#ifconfig #查看网卡的设备名是否更新
      IP地址规划好后测试连通效果。Director:eth0网卡能否PING通互联网,以ping www.baidu.com为例; Director:eth1能否PING通RS1:eth0、RS2:eth0; RS1:eth0、RS2:eth0能否互相PING通。
  3、通过yum方式安装ipvsadm
  具体实现方法可参照:
  http://1343138116.blog.51cto.com/6124664/1681861 RedHat 6.6自建yum仓库
     当yum仓库建立完成后通过yum install ipvsadm命令方式安装
  二、LVS-NAT实现方法
  
DSC0003.jpg

拓扑图

  注:
  1、这里的Client我使用的是物理机
  2、添加Router只是为了能够看出LVS-NAT的整个流程,在这里没有实际意义
  3、RS1、RS2的网关地址是DIP:192.168.1.3
  4、RS可以使用Linux或Windows,如果要调内核参数则只能用Linux
  1、RS1设置
  [root@gnnt ~]# rpm -qa|grep httpd   #查看是否安装了httpd服务,若没有安装则需要安装以下文件
  httpd-2.2.15-39.el6.x86_64
  httpd-tools-2.2.15-39.el6.x86_64
  
[root@gnnt ~]#service httpd status #查看httpd服务是否启动,可以看出httpd服务是停止的
httpd is stopped

[root@gnnt ~]# service httpd start #启动httpd服务
Starting httpd: httpd: apr_sockaddr_info_get() failed for gnnt
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
#这里的意思是需要一个DNS服务器,可以不用理会,本次实验不会用到bind服务
  [root@gnnt ~]#echo "welcome to RS1.gnnt.com" > /var/www/html/index.html #编辑index.html文件
  [root@gnnt ~]#setenforce 0   #Permissive=0,代表仅记录安全警告但不阻止可疑行为
  setenforce是SElinux的知识,请参阅
  http://os.51cto.com/art/201105/265956.htm  SELinux入门:了解和配置SELinux
  [root@gnnt ~]#service iptables stop    #一定要将防火墙关闭,否则不能“curl RS2”的内容
[root@gnnt ~]#curl http://localhost    #访问本机的index.html文件
welcome to RS1.gnnt.com
[root@gnnt ~]#curl http://192.168.1.2  #访问RS2的index.html文件
welcome to RS2.gnnt.com
  2、RS2设置
[root@gnnt ~]# rpm -qa|grep httpd  #查看是否安装了httpd服务,若没有安装则需要安装以下文件
httpd-2.2.15-39.el6.x86_64
httpd-tools-2.2.15-39.el6.x86_64
[root@gnnt ~]#service httpd status #查看httpd服务是否启动,可以看出httpd服务是停止的
httpd is stopped

  [root@gnnt ~]# service httpd start #启动httpd服务
  Starting httpd: httpd: apr_sockaddr_info_get() failed for gnnt
  httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                             [  OK  ]
#这里的意思是需要一个DNS服务器,可以不用理会,本次实验不会用到bind服务
[root@gnnt ~]#echo "welcome to RS2.gnnt.com" > /var/www/html/index.html #编辑index.html文件
[root@gnnt ~]#setenforce 0      #Permissive=0,代表仅记录安全警告但不阻止可疑行为
[root@gnnt ~]#service iptables stop     #一定要将防火墙关闭,否则不能“curl RS1”的内容
[root@gnnt ~]#curl http://localhost     #访问本机的index.html文件
welcome to RS2.gnnt.com
[root@gnnt ~]#curl http://192.168.1.1   #访问RS1的index.html文件
welcome to RS1.gnnt.com
注:也要将Director的防火墙关闭
  3、Director设置
  注:文档最后有对ipvsadm命令详解的补充,想仔细研究的同学也可以根据命令详解设置不同的调度方式
  (1)、使用rr调度算法进行负载均衡
  [root@gnnt ~]#ipvsadm -A -t 172.16.0.9:80 -s rr
  [root@gnnt ~]#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m
  [root@gnnt ~]#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
  #添加一个IP地址172.16.0.9,端口为80的集群服务器
  #添加一个IP地址192.168.1.1,端口为80的集群RS服务
  #添加一个IP地址192.168.1.2,端口为80的集群RS服务
  
注:测试前一定要在Director中开启IP转发,重启服务或系统后IP转发会失效。测试步骤在第三节

[root@gnnt ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@gnnt ~]# echo 1  > /proc/sys/net/ipv4/ip_forward
[root@gnnt ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@gnnt ~]#
  (2)、查看客户端连接数
  
  [root@gnnt ~]# ipvsadm -L -c
  IPVS connection entries
  pro expire state       source             virtual            destination
  

  TCP 01:58  TIME_WAIT   172.16.0.255:53948 172.16.0.9:http    192.168.1.1:http
  TCP 01:57  TIME_WAIT   172.16.0.255:53944 172.16.0.9:http    192.168.1.1:http
  TCP 01:54  TIME_WAIT   172.16.0.255:53937 172.16.0.9:http    192.168.1.1:http
  TCP 01:55  TIME_WAIT   172.16.0.255:53943 172.16.0.9:http    192.168.1.1:http
  .............................................................................
  (3)、查看统计信息
  
  [root@gnnt ~]# ipvsadm -L --stats
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
  TCP  172.16.0.9:http                  4507    22120    21685  2037284  2504098
  -> 192.168.1.1:http                 2596    13021    12926  1185170  1491242
  -> 192.168.1.2:http                 1911     9099     8759   852114  1012856
  (4)、查看速率信息
  
  [root@gnnt ~]# ipvsadm -L --rate
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
  TCP  172.16.0.9:http                     4       19       18     2208     1953
  -> 192.168.1.1:http                    3       14       14     1629     1379
  -> 192.168.1.2:http                    1        5        5      579      573
  (5)、查看超时信息
  
  [root@gnnt ~]# ipvsadm -L --timeout
  Timeout (tcp tcpfin udp): 900 120 300
  (6)、清除ipvsadm规则
  [root@gnnt ~]# ipvsadm -C
  (7)、保存ipvsadm,以便重启以后规则也能生效
  推荐使用

[root@gnnt ~]# service ipvsadm save   #直接保存ipvsadm规则
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
  


  
[root@gnnt ~]#ipvsadm -S > /etc/sysconfig/ipvsadm.com   #将ipvsadm规则保存指定的文件中
[root@gnnt ~]#ipvsadm -R < /etc/sysconfig/ipvsadm.com   #从指定的文件中载入ipvsadm规则
  三、通过物理机进行测试
  通过按F5按钮刷新,查看测试效果
DSC0004.jpg


  

  
  


           图1

DSC0005.jpg

   图2

  


补充:ipvsadm命令详解
  默认调度方法:wlc
  ipvsadm:
  管理集群服务
  添加:-A -t|u|f service-address [-s scheduler]
  -t: TCP协议的集群
  -u: UDP协议的集群
  service-address:     IP:PORT
  -f: FWM: 防火墙标记
  service-address: Mark Number
  # ipvsadm -A -t 172.16.0.9:80 -s rr
  

  修改:-E
  

  删除:-D -t|u|f service-address
  

  

  管理集群服务中的RS
  添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
  -t|u|f service-address:事先定义好的某集群服务
  -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
  [-g|i|m]: LVS类型
  -g: DR
  -i: TUN
  -m: NAT
  [-w weight]: 定义服务器权重
# ipvsadm -a -t 172.16.0.9:80 -r 192.168.10.1 -m
# ipvsadm -a -t 172.16.0.9:80 -r 192.168.10.2 -m
  

  修改:-e

  

  删除:-d -t|u|f service-address -r server-address
  

  查看

  -L|l
  -n: 数字格式显示主机地址和端口
  --stats:统计数据
  --rate: 速率
  --timeout: 显示tcp、tcpfin和udp的会话超时时长
  -c: 显示当前的ipvs连接状况
  

  删除所有集群服务
  -C:清空ipvs规则
  

  保存规则
  -S
  # ipvsadm -S > /path/to/somefile
  载入此前的规则:
  -R
  # ipvsadm -R < /path/from/somefile
  

  

  

至此,本文档已经结束,文档中难免有不尽人意之处,希望各位能够给出宝贵的建议,谢谢!




紫禁之巅

2015年8月6日 15:44

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-518437-1-1.html 上篇帖子: Win7 VMWare虚拟机无线上网设置图解(已测可用) 下篇帖子: 关于VMware 11 虚拟机不能通过DCHP获取到地址的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表