码迷,mamicode.com
首页 > 其他好文 > 详细

负载均衡基础实践

时间:2018-06-08 22:39:56      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:负载均衡

  • 使用NAT模型的TCP协议类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;

    首先了解nat模型:用户端,通过访问172.16.0.146端口,调度器会将请求随机转换到,后端的连个服务器,本次采用轮回调度的方式

    技术分享图片

  • 在调度器上的,配置

    a.创建集群服务,并添加服务器

     

  •  [root@www ~]# ipvsadm -A -t 172.16.0.146:80 -s rr
    
     [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.100:80 -m
     [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.200:8000 -m
  •      b.开启此主机的核心转发功能

    [root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

    4.服务器上的配置,192.168.100.100服务器上配置,安装httpd,php,php-mysql,mysql-server

        a.为此主机配置,phpmyadmin服务,并在资源目录下做测试页面index.html

    <VirtualHost 192.168.100.100:80>
            ServerName www.admin.com
            DocumentRoot "/myweb/admin/"
            <Directory "/myweb/admin/">
                    Options None
                    AllowOverRide None
                    Order deny,allow
                    Allow from all
            </Directory>
    </VirtualHost>

        b.给此服务器的数据库创建新用户并授权

    mysql> grant all on *.* to 'wang'@'localhost' identifide by '111111';

        c.修改此主机的防火墙策略,让此服务器可以给调度器的请求做响应

        d.给此主机做默认网关,网关为192.168.100.1

    [root@localhost ~]# route add default gw 192.168.100.1

    5.给192.168.100.200:8000服务器也做同样的操作

    6.在客户端172.16.0.150做网关172.16.0.146,并对调度器进行访问测试

    [root@localhost ~]# for i in {1..10};do curl 172.16.0.146/index.html;done
    192.168.100.200:8000
    192.168.100.100:80
    192.168.100.200:8000
    192.168.100.100:80
    192.168.100.200:8000
    192.168.100.100:80
    192.168.100.200:8000
    192.168.100.100:80
    192.168.100.200:8000
    192.168.100.100:80

    7。使用网页访问phpmyadmin,因为没有建立持久连接,所以会一直保留在此页面上,

    技术分享图片

    但是在调度器上,使用ipvsadm -ln,可以看到,后端real server被访问的次数,每登录一次则,会自动跳到另一个服务器

    技术分享图片

    8.当我们建立持久连接时,则可以访问此程序,为了显示更直观,俩台服务器,数据库不同

    技术分享图片

    因为长连接是有时间限制的,所以我们需要等一段时间,然后重新访问,可以看到数据库发生变化,证明负载均衡成功

    技术分享图片

    9.为了使俩个服务器提供内容一样,需要做数据库共享;

    使用samba,做目录共享,共享/mydata目录,并赋予mysql用户写权限,同时在文件系统上让/mydata文件系统对mysql用户有写权限,将192.168.100.100服务器的数据库复制到/mydata下,使用192.168.100.200,用mysql用户挂载到/data/下

    技术分享图片

    [root@bogon ~]# mount -t cifs -o username=mysql //192.168.100.100/discuz /data

    更改192.168.100.200数据库目录,修改/etc/my.cnf的datadir=/data

    重启mysql服务,这样无论使用哪台服务器访问,都是同一个数据库


    2.使用DR模型的FWM类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;

    所谓FWM类型,是利用防火墙标记进行,然后利用此标记填加集群服务

    所谓DR模型:是对报文的MAC地址进行重新封装,转发,但在整个过程中ip地址,端口号不会发生变化

    ----DR原理简析:

    1. 客户端向调度器VIP发送请求报文

    2. 调度器会对请求报文重新封装,使得源MAC地址变为DIP,目标MAC地址为后端RIP

    3. 后端的real server,将请求报文解封装后,对资源进行处理

    4. 后端real server在发送响应报文时,不再通过调度器,发送给客户端,而是利用自己的环回接口为VIP的地址进行相应给客户端

        a.首先观察其拓扑图

        技术分享图片

        b.对调度器进行设置:

            1.设置DIP与VIP,DIP和VIP在同一个网卡上,且VIP应该设在标签端口上(保证DIP和VIP是同一个MAC地址)

     

            2.做防火墙标记,在mangle表上标记

            3.使用该标记做集群服务

            4.给集群添加服务器

    技术分享图片

    [root@localhost ~]# iptables -t mangle -A PREROUTING -d 172.16.0.150 -p tcp --dport 80 -j MARK --set-mark 2
    localhost ~]# ipvsadm -A -f 2 -s rr 
    [root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.151 -g -w 1
    [root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.152 -g -w 1
    [root@localhost ~]#

        c.对real server的配置:

            1.配置相应的RIP

            2.在环回接口上配置VIP,

            3.配置http,php,mysql服务

            4.设置合理的安全策略

            5.修改内核参数

            6.给lo接口做特定路由


       13  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  //只响应目的IP地址为接收网卡上的本地地址的ARP请求
       14  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
       15  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
       16  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  //忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为ARP请求的源IP地址
       17  route add -host 172.16.72.254 dev lo:0 //使响应报文从lo:0标签接口向外封装发送数据

              

    d.同样使用客户端先进行测试访问

    技术分享图片

    e.建立长连接

    f.使用网页进行测试访问

    技术分享图片

    技术分享图片

    注意:使用网页访问时,应该使用VIP作为目标IP

               添加集群服务器时,后端real server 不可以添加端口

    负载均衡基础实践

    标签:负载均衡

    原文地址:http://blog.51cto.com/wangchaode/2126600

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!