zoukankan      html  css  js  c++  java
  • LINUX负载均衡LVS-NAT搭建

    1.搭建前的规划工作

    这里从lvs官方网站找了一个nat模型的图,如下:

    我这里使用虚拟机模拟出了4台rhel6机器。一台服务器作为lvs调度器(40网段使用的都是仅主机模式,168网段使用桥接模式),3台服务器作为具体的web服务器(使用仅主机模式),我本是的宿主机就是作为web测试机器。

    具体配置如下

    机器名称 ip配置 ip配置附加 备注信息
    lvs调度器 192.168.40.200 192.168.168.200 有2个网卡地址,
    RS1 192.168.40.201   和lvs的第一个ip地址,rs2,rs3属于同一网段
    RS2 192.168.40.202   和lvs的第一个ip地址,rs2,rs3属于同一网段
    RS3 192.168.40.203   和lvs的第一个ip地址,rs2,rs3属于同一网段
    宿主机   192.168.168.10 和lvs的第二个ip地址属于同一网段

    配置好上面的环境,确保同一个网段的主机可以相互ping的通。 这里都先关闭防火墙和selinux设置。

    2.检查操作系统支持lvs情况

    [root@localhost ~]# grep -i 'vs' /boot/config-2.6.32-279.el6.i686      #有输出说明支持,我们使用的rhel6,默认的编译就有lvs模块。

    3.安装ipvsadm工具

    [root@localhost ~]# yum -y install ipvsadm

    4.ipvsadm工具的简单使用

    ipvsadm:
        管理集群服务
            添加:-A -t|u|f service-address [-s scheduler]
                -t: TCP协议的集群 
                -u: UDP协议的集群
                    service-address:     IP:PORT
                -f: FWM: 防火墙标记 
                    service-address: Mark Number
            修改:-E
            删除:-D -t|u|f service-address
    
            # ipvsadm -A -t 172.16.100.1:80 -s rr
    
        管理集群服务中的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]: 定义服务器权重
            修改:-e
            删除:-d -t|u|f service-address -r server-address
    
            # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m 
            # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
        查看
            -L|l
                -n: 数字格式显示主机地址和端口
                --stats:统计数据
                --rate: 速率
                --timeout: 显示tcp、tcpfin和udp的会话超时时长
                -c: 显示当前的ipvs连接状况
    
        删除所有集群服务
            -C:清空ipvs规则
        保存规则
            -S 
            # ipvsadm -S > /path/to/somefile
        载入此前的规则:
            -R
            # ipvsadm -R < /path/form/somefile

     5.设置所有的RS服务器的网关为调度器的ip地址

    [root@localhost ntpstats]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    #修改网关为调度器的ip地址
    GATEWAY=192.168.40.200
    #三个rs服务器都需要设
    确保在各个RS服务的路由信息的正确性
    [root@localhost ~]# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.40.0    *               255.255.255.0   U     0      0        0 eth0
    link-local      *               255.255.0.0     U     1002   0        0 eth0
    default         192.168.40.200  0.0.0.0         UG    0      0        0 eth

    6.给那个RS服务器安装http服务并测试

    [root@localhost ntpstats]# yum install httpd              #每个rs服务器都安装httpd服务
    [root@localhost ntpstats]# service httpd restart          #每个rs服务器都重新启动
    [root@localhost ntpstats]# echo rs1> /var/www/html/index.html  #给rs1服务器创建一个主页,只在rs1上执行
    [root@localhost ntpstats]# echo rs2> /var/www/html/index.html  #给rs2服务器创建一个主页,只在rs2上执行
    [root@localhost ntpstats]# echo rs2> /var/www/html/index.html  #给rs3服务器创建一个主页,只在rs3上执行
    #接下来使用在调度器lvs服务器先测试下各个页面是否可以正常访问
    [root@localhost ~]# elinks -source 192.168.40.201
    rs1
    [root@localhost ~]# elinks -source 192.168.40.202
    rs2
    [root@localhost ~]# elinks -source 192.168.40.203
    rs3

    7.创建LVS

    [root@localhost ~]# ipvsadm -A -t 192.168.168.200:80 -s rr              #创建一个集群服务,调度算法rr,
    [root@localhost ~]# ipvsadm -a -t 192.168.168.200:80 -r 192.168.40.201 -m    #添加rs1 nat方式
    [root@localhost ~]# ipvsadm -a -t 192.168.168.200:80 -r 192.168.40.202 -m    #添加rs2 nat方式
    [root@localhost ~]# ipvsadm -a -t 192.168.168.200:80 -r 192.168.40.203 -m    #添加rs3 nat方式

    8.打开ip转发机制

    调度器要能访问168,40两个网段的,需要打开ipforward功能。

    [root@localhost ~]# echo 1 >/proc/sys/net/ipv4/ip_forward #打开ipv的ip转发机制,当前生效
    [root@localhost ~]# vim /etc/sysctl.conf 
    #打开ipv的ip转发机制,永久生效
    net.ipv4.ip_forward = 1

    9. 确保集群的时间不能太大

    这里建议在调度器lvs上安装ntp服务,其他RS服务器来同步时间

    10.我们使用宿主机进行测试

    浏览器输入http://192.168.168.200,不断刷新,就可以看到如下的三个图片信息。测试成功后,就可以把三个RS服务器页面做成一样的啦。

    宿主机测试量太小了。 我们直接在调度器上使用ab命令测试下

    [root@localhost ~]# ab -n 10000 -c 200 http://192.168.168.200/index.html
    [root@localhost ~]# ipvsadm -L -n --rate
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
      -> RemoteAddress:Port
    TCP  192.168.168.200:80                168      838      837    60477    90073
      -> 192.168.40.201:80                  56      279      279    20154    30036
      -> 192.168.40.202:80                  56      280      278    20162    29991
      -> 192.168.40.203:80                  56      279      279    20160    30045

    上面可以看到,3个RS的任务是基本一样多的。

  • 相关阅读:
    【JS】 Javascript 入门
    【CSS】 CSS的一些应用实例和参考
    【CSS】 CSS 定位
    【泛泛】 不知道怎么分类的豆知识
    【CSS】 CSS基础知识 属性和选择
    【HTML】 HTML基础知识 表单
    【HTML】 HTML基础知识 一些标签
    【Linux】 文本比较工具 diff和cmp
    php -- or 的用法
    php -- 检查是否存在
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_021_lvsnat.html
Copyright © 2011-2022 走看看