企业高并发的成熟解决方案: 负载均衡LVS搭建

一直想通过LVS来实现负载均衡,看上去很牛逼的样子。所以博主Jhonse哥第一时间看视频教程,网上查资料,终于通过LVS实现了负载均衡,也为以后公司需要的时候可以直接用上。不过此搭建过程都是在虚拟机里操作的。

20150116213224

第一步: 搭建4台服务器

4台服务器都是CentOS 7.0,至于如何在虚拟机里创建CentOS,请看之前的博文。

20150119120613

第二步: 给4台服务器分配IP

分配IP可以采取两种方式: 自动分配,手动分配。

1. 自动分配

这个比较简单,如果在安装完CentOS 7.0之后,虽然选择的自动分配IP,但是获取不到IP,为什么呢?

20150119121236

如何设置才能自动分配IP呢?找到网卡配置文件。

20150119121455

编辑ifcfg-eno16777736,并修改ONBOOT为yes,以及BOOTPROTO为dhcp.

20150119121553

保存退出,然后重新启动network服务。

20150119122030

如果提示这个错误,请开启虚拟机对应的服务即可。

20150119122156

重启network服务,即可获得IP地址。

20150119122312

2. 手动分配IP

20150119122608

重新启动network服务,即可获得IP地址。

20150119122748

第三步: 通过4台服务器的IP,对应的分配负载均衡服务器,以及APP服务器

负载均衡主机:  192.168.197.131

负载均衡备机:  192.168.197.4

APP服务器1:   192.168.197.132

APP服务器2:   192.168.197.133

虚拟IP(访问IP): 192.168.197.100

20150119123950

第四步: 开始搭建负载均衡

1. 配置APP服务器站点

在/var/www/html/目录下添加index.php文件

20150119141947

关闭防火墙

20150119142046

展示结果

20150119145031

20150119151013

 

2. 为APP服务器配置虚拟IP

添加虚拟IP配置文件

20150119124835

编辑ifcfg-lo:0, 记得NETMASK=255.255.255.255,不然无法ping通。

20150119150730

然后保存退出,重启network服务

20150119125353

接着修改/etc/rc.local文件

20150119130708

然后执行route add -host 192.168.197.100 dev lo:0

20150119144239

调整/proc响应参数,修改 /etc/sysctl.conf

20150119130816

使用sysctl -p命令来查询是否正确

20150119130957

查看虚拟IP

20150119131048

根据以上方法将APP服务器二也设置好虚拟IP.

20150119141526

3. 设置负载均衡主机

需要安装ipvsadm、keepalived软件,而CentOS7.0自带了。

20150119151758

20150119151942

找到keepalived配置文件: /etc/keepalived/keepalived.conf

20150119153757

! Configuration File for keepalived

global_defs {
   notification_email {
	admin@jhonse.com #故障接受联系人
   }
   notification_email_from Alexandre.Cassen@firewall.loc #故障发送人
   smtp_server 192.168.200.1 #本机发送邮件
   smtp_connect_timeout 30 #BACKUP上修改为LVS_BACKUP
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER #BACKUP上修改为BACKUP
    interface eno16777736 #网卡接口名称
    virtual_router_id 51 #虚拟路由标识,主从相同
    priority 100 #BACKUP上修改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111 #主从认证密码必须一致
    }
    virtual_ipaddress {  #Web虚拟IP(VTP)
        192.168.197.100
    }
}

virtual_server 192.168.197.100 80 {  #定义虚拟IP和端口
    delay_loop 6  #检查真实服务器时间,单位秒
    lb_algo wrr    #设置负载调度算法,rr为轮训
    lb_kind DR   #设置LVS负载均衡DR模式
    nat_mask 255.255.255.0
    persistence_timeout 50 #同一IP的连接60秒内被分配到同一台真实服务器
    protocol TCP  #使用TCP协议检查realserver状态

    real_server 192.168.197.132 80 {  #第一个web服务器
        weight 1  #节点权重值
        TCP_CHECK {  #健康检查方式
            connect_timeout 3  #连接超时
            nb_get_retry 3 #重试次数
            delay_before_retry 3 #重试间隔/S
        }
    }
	
	real_server 192.168.197.133 80 {  #第二个web服务器
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

启动keepalived

20150119152649

查看当前连接负载的情况

20150119152737

关闭防火墙

20150119152829

查看效果:

20150119154011

20150119154436

20150119154519

当一台APP服务器挂了的效果是:

20150119154712

20150119154740

4. 设置负载均衡备机

其实和配置负载均衡主机差不多,只是要keepalived配置文件不一致而已,配置文件中已注释了。

20150119155010

效果:

20150119155314

当负载均衡主机挂了的时候,负载均衡备机开始工作。

20150119155504

20150119155542

Author: jhonse

Jhonse技术博客: http://blog.jhonse.com

Leave a Reply

Your email address will not be published. Required fields are marked *