目录
链接博文
实验环境
| Hostname | IP | 说明 | 
|---|---|---|
| lb01 | 10.0.0.5 | Nginx主负载均衡器 | 
| lb02 | 10.0.0.6 | Nginx辅负载均衡器 | 
| web01 | 10.0.0.8 | web01服务器 | 
| web02 | 10.0.0.7 | web02服务器 | 
1 实验配置
# 在上一篇博文的基础之上进行下面操作
# 安装keepalived软件
yum install keepalived -y
rpm -qa keepalived 
# 编辑keepalived备配置文件
[root@lb02 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24 dev eth0 label eth0:1
    }
}  
# 相当于ipvsadm -A -t 10.0.0.3:80 -s wrr
virtual_server 10.0.0.3 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    # 相当于ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
    real_server 10.0.0.7 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
    }
    }
    # 相当于ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
    real_server 10.0.0.8 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
    }
    }
}
# 删除ipvsadm的配置表
ipvsadm -C
# 删除手动配置的虚拟VIP
ip addr del 10.0.0.3/24 dev eth0
# 启动keepalived服务,可自动健康检查节点状态
/etc/init.d/keepalived start
# 主节点keepalived配置,只需要修改router_id、state为MASTER、优先级设置高一点即可
[root@lb01 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24 dev eth0 label eth0:1
    }
}
# 相当于ipvsadm -A -t 10.0.0.3:80 -s wrr
virtual_server 10.0.0.3 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    # 相当于ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
    real_server 10.0.0.7 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    # 相当于ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
    real_server 10.0.0.8 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}测试 
 
2 负载不均衡的原因
当我们第一次访问VIP的时候,负载均衡器会把请求随机分配到后端的RS服务器上,那么由于我们是在电脑上虚拟了整个过程,故电脑上会有arp缓存,即使再次访问VIP的时候也不会经过LB,而会直接访问后端RS。由于ARP缓存的存在,所以在一定的时间内不会出现负载均衡。
我么可以在每次访问后,清空arp缓存(arp -d)。就会出现1:1的负载均衡(仅适合单机测试)
Keepalived进行节点健康检查
# 随便停掉一台web节点,keepalived会自动检查节点状态。
[root@lb01 keepalived]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.3:80 rr persistent 50
  -> 10.0.0.7:80                  Route   1      0          0
  -> 10.0.0.8:80                  Route   1      0          2
[root@lb01 keepalived]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.3:80 rr persistent 50
  -> 10.0.0.7:80                  Route   1      0          0
  -> 10.0.0.8:80                  Route   1      0          2
[root@lb01 keepalived]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.3:80 rr persistent 50
  -> 10.0.0.8:80                  Route   1      0          2         
3 LVS集群下代码发布方案
LVS集群下的代码发布方案详解(代码一般会放在svn/git)
- 开发人员本地测试+>办公室内部测试(开发个人,测试人员)–(配置管理员)–>IDC机房测试(测试人员)–>正式服务器。
- 上传的代码可大致分为两类代码,一种是不用重启服务就可以实现的代码(如php、html等),还有一种就是必须要重启服务的代码(java、tomcat等)。
如php代码上传时不需要重启服务的,但为了不影响用户体验,所以有以下两种比较好的上传代码方案:
- 1、需要在统一文件系统下,即在同一目录层级,创建一个别的目录,如正常的访问代码是在/application/nginx/html/目录下,那么我们会创建/application/nginx/tmp目录,然后用mv命令把代码移动到html目录下,这样延迟几乎可以忽略,用户体验还是很好的。 
- 2、或者是在同一层级目录下创建其它目录,然后创建软链接把html目录链接至创建的目录 
 /application/nginx/html/ # 用户访问代码位置
 /application/nginx/html123 # 手动创建的目录
 ln -s /application/nginx/html/ /application/nginx/html123/
若是JAVA代码或者是tomcat resin之类的代码,需要服务重启才能生效。
- 这样的代码上传需要分组上传,比如有6台服务器提供web服务,这样先把其中三台在LVS中踢掉,即下线,然后把代码上传至其中,上传完之后需要把这三台服务器挂到同环境下的内网测试机上,进行内部测试,无误后把这三台服务器正式上线,然后再把另外三台服务器下线,进行同样操作。
 
                   
                   
                   
                   
                            
 
                             本文介绍如何配置LVS集群并实现负载均衡,探讨负载不均衡的原因及解决方法,并详细讲解LVS集群环境下代码发布的具体流程和技术要点。
本文介绍如何配置LVS集群并实现负载均衡,探讨负载不均衡的原因及解决方法,并详细讲解LVS集群环境下代码发布的具体流程和技术要点。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
                     
              
             
                   625
					625
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
					 
					 
					


 
            