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好了,备机进入待机状态