1.1 搭建负载均衡的环境

准备

l 系统:Centos6  (三台)   

l 负载均衡:LVS  + keepalived  

l 服务器1:Http

l 服务器2:Http

第一步:在二台真实服务器网上上添加LO:0接口,并设置虚拟IP在此接口上

(作用解释,配置虚拟ip,我们通过这个虚拟ip就可以访问本台电脑上的服务,当然是按照某种策略访问,他访问的是所有配置了虚拟ip中的一台,在这里使用的是加权轮叫调(Weighted Round-Robin Scheduling)

[root@itcast01 ~]# cd /etc/init.d/
[root@itcast01 ~]#touch realserver
[root@itcast01 ~]#vim realserver
Client Server
VIP=10.5.0.212
case  $1  in
start)
    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    /sbin/route add -host $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"
    exit 0
;;
stop)
    ifconfig lo:0 down
    route del $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 OK"
    exit 1
;;
*)
    echo "Usage: $0 {start|stop}"
;;
esac
exit 0

[root@itcast01 ~]#chmod 750 realserver    #给此脚本赋予权限
[root@itcast01 ~]#chkconfig realserver on         #设置开机自启动此脚本
[root@itcast01 ~]#service realserver start          #开启此脚本
RealServer Start OK    #表示启动成功!
[root@itcast01 ~]#ifconfig    #查看一下是否真的成功添加了lo:0接口

第二步:开启二台真实服务器上自带的Apache公司的Http服务器

[root@itcast01 ~]#service httpd start              #开启Http服务器
[root@itcast01 ~]#cd /var/www/html/             #进入Http服务器默认的目录
[root@itcast01 ~]#touch index.html               #创建Http服务器默认访问页面
[root@itcast01 ~]#vim index.html                #编辑Http服务器默认访问页面
I am http IP :  真实服务器自己的IP(例如:192.168.200.201)
用浏览器访问一下:http://192.168.200.201      默认端口80

查看结果是否是自己编辑的:   I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

二台真实服务器一样

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

另外一台非服务器主机上配置lvs

(注意事项 途中vip是上面真实服务器配置的虚拟ip,真实ip是每台配置虚拟ip的主机的真实ip,还有一个接口)通过ifconfig命令查看配置lvs这台主机的接口


1:安装 ipvsadm  keepalived

命令:yum –y install ipvsadm keepalived

2:配置 keepalived

命令:vim /etc/keepalived/keepalived.conf

global_defs {                       
#   notification_email {             
#       admin@toxingwang.com
#   }
#   notification_email_from master@toxingwang.com
#   smtp_server smtp.exmail.qq.com
#   smtp_connect_timeout 30
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 {         
192.168.200.201
}
}
virtual_server 192.168.200.201 80 {
delay_loop 6           
lb_algo wrr            
lb_kind DR                          
nat_mask 255.255.255.0   
persistence_timeout 0    
protocol TCP                          
real_server 192.168.200.139 80 {     
weight 3                             
TCP_CHECK {                     
connect_timeout 10   
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.200.140 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}





启动keepalived服务

[root@lvs1 ~]# service keepalived start

注:由于keepalived配置文件有语法错误也能启动,因此看到启动了lvs服务,不代表配置文件没有错误,如果遇到lvs不能正常转发,及时跟踪日志进行处理。

日志跟踪方法

1、开两个ssh窗口连接到lvs服务器,第一个窗口运行如下命令:

[root@lvs1 ~]# tail -f /var/log/message

2、第二个窗口重新启动keepalived服务,同时观察窗口1中日志的变化,然后根据日志提示解决即可。





1.1 LVS备机搭建


(备机搭建与lvs主机搭建的不同点是 接口可能不能和这个不同)


global_defs {                       
#   notification_email {             
#       admin@toxingwang.com
#   }
#   notification_email_from master@toxingwang.com
#   smtp_server smtp.exmail.qq.com
#   smtp_connect_timeout 30
router_id LVS_DEVEL             
}
vrrp_instance VI_1 {            
state BACKUP             
interface eth0            
virtual_router_id 51        
priority 99                  
advert_int 1           
authentication {        
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {         
192.168.200.201
}
}
virtual_server 192.168.200.201 80 {
delay_loop 6           
lb_algo wrr            
lb_kind DR                          
nat_mask 255.255.255.0   
persistence_timeout 0    
protocol TCP                          
real_server 192.168.200.139 80 {     
weight 3                             
TCP_CHECK {                     
connect_timeout 10   
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.200.140 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}






最后我们可以测试了

启动;lvs 输入vip即可访问HTTPd服务器


1.1 演示备机操作

1:Master挂了,无备机,演示

2:Master挂了,备机自动接管

3:Master好了,备机进入待机状