Centos通过keepalived搭建负载均衡,再也不怕服务器宕机和访问慢了

时间: 2015-06-23 02:12 栏目: 视频教程 浏览: 16570 赞: 37 踩: 7 字体:

以下为本篇文章全部内容:


负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

负载均衡拓扑图:

教程绘图.jpg

负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。

路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。

我们本次教程采用的就是keepalived的路由模式来搭建的

准备工作:

    1、4台centos操作系统服务器(其他linux也行,针对本文会有命令差异),两台做负载均衡代理服务器,两台做web服务器

    2、服务器连接工具


配置信息:

    负载均衡主服务器172.16.220.162

    负载均衡从服务器172.16.220.135

    web服务器172.16.220.164

    web服务器172.16.220.163


  先关闭所有服务器的防火墙,实验环境可以操作这步,实际环境请配置防火墙规则,关闭命令

service iptables stop#关闭防火墙
chkconfig iptables off#禁止重启再次启动

   web服务器配置:

        1、先安装web服务,我做实验就从yum进行安装了,执行下面命令安装apache和vim编辑器

yum install httpd vim -y

        2、编辑网站显示文件

vim /var/www/html/index.html

        3、在里面输入一段文字进行区分两台web服务器

        4、启动web服务器

service httpd start

        5、配置虚拟集群地址和设置成系统服务

vim /etc/init.d/realserver
SNS_VIP=172.16.220.100#集群虚拟地址
. /etc/rc.d/init.d/functions  
case "$1" in  
start)  
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP  
       /sbin/route add -host $SNS_VIP dev lo:0  
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
       sysctl -p >/dev/null 2>&1  
       echo "RealServer Start OK"   
       ;;  
stop)  
       ifconfig lo:0 down  
       route del $SNS_VIP >/dev/null 2>&1  
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
       echo "RealServer Stoped"  
       ;;  
*)  
       echo "Usage: $0 {start|stop}"  
       exit 1  
esac  
exit 0

        6、启动虚拟地址服务

service realserver start

  到此web服务器配置就已经完成,两台web服务器配置方法是一样的,接下来我们配置负载均衡服务器

 负载均衡服务器配置

        1、安装负载均衡所需软件

yum -y install gcc gcc-c++  make automake autoconf kernel-devel ncurses-devel libxml2-devel openssl-devel popt-devel wget vim ipvsadm keepalived

        2、配置负载均衡文件

! Configuration File for keepalived
global_defs {
    notification_email {
        admin@sunnyos.com
   }
   notification_email_from admin@sunnyos.com
   smtp_server 127.0.0.1
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.220.100
    }
}
virtual_server 172.16.220.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 120
    protocol TCP
    real_server 172.16.220.164 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 172.16.220.163 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

上面配置解释:

global_defs:邮件配置,当服务器出现问题的时候会发邮件通知

state:主从模式 MASTER为主 BACKUP为从

interface:转发网卡

virtual_router_id:虚拟路由标识

priority:应用级别,该值1到254

advert_int:MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒。

delay_loop:心跳检查间隔时间,单位为秒

lb_algo:负载均衡调度算法

lb_kind:负载均衡转发规则

persistence_timeout:会话保持时间

protocol:转发协议

authentication:验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样

virtual_ipaddress:虚拟ip

weight:权重,数值越大分配到的几率越大

tcp_check:tcp检查

connect_timeout:连接超时时间

nb_get_retry:重试连接次数

delay_before_retry:重新连接间隔时间

connect_port:连接端口

大家看完博文之后希望用理解的角度去看,不要直接复制代码过去直接就用了,不然过后就不知道怎么操作的了,重在理解,以后再遇到这种操作的时候就什么问题都不怕了。

谢谢大家对本博客的支持,本站专注原创技术文章,三更半夜做实验写文章不易,且看且珍惜博主的心得。请转载带上本文链接注明出处。

扫二维码快速加群:

qun.png

如果大家有什么疑问可以加我QQ327388905进行解答,也可以加入交流群ThinkPHP交流群