Linux服务器下LVS+Keepalived 高可用负载均衡集群架构实现
1、实验结构图总览2、实验准备
以下工作针对所有服务器,也就是说要在四台服务器中都要进行配置:
[*]2.1 配置服务器静态ip:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
打开ifcfg-eth0 文件 配置如下
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.2.14
NETMASK=255.255.255.0
GATEWAY=192.168.2.254
配置好了重启网卡#service network restart
[*] 2.2 设立主机名# vim /etc/sysconfig/network(能永久更改主机名)重启生效#reboot
[*] 2.3ip地址跟主机名绑定#vim /etc/hosts
192.168.2.14 lvs-master
192.168.2.15 lvs-slave
192.168.2.139 lvs-webserver1
192.168.2.138 lvs-webserver2
保存后退出验证:ping lvs-master
[*]2.4 关闭防火墙# service iptables stop执行关闭防火墙自动运行命令:chkconfig iptables off
验证:chkconfig –list | grep iptables
3、配置两台web服务器
以下操作需要在角色为Web服务器的两台中进行,不需要在负载均衡服务器中进行操作:
[*] 3.1 开启http 服务 : # service httpd start
补充:chkconfig httpd on –>将httpd设为自启动服务
[*] 3.2 上传测试网页:
其中 webserver1 服务器显示from webserver1其中 webserver2 服务器显示from webserver2,便于区分是webserver1 还是webserver2 提供服务
[*] 3.3 新建realserver脚本文件编辑
(1) 进入指定文件夹:cd /etc/init.d/
(2) 编辑脚本文件:vim realserver
SNS_VIP=192.168.2.100#这里设置虚拟IP为:192.168.2.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
(3) 保存脚本文件后更改该文件权限:#chmod 755 realserver
(4) 开启realserver服务:#service realserver start
可能出现的错误: 提示 /etc/init.d/functions 没有权限给添加权限就好了 #chmod 755/etc/init.d/functions
4、 配置主负载服务器
[*]4.1 安装Keepalived相关包 :
[*]有网络的直接使用yun 安装
#yum install -y keepalived
[*]没有网络需要下载安装包:
#rpm -ivh e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
#rpm -ivh keyutils-libs-devel-1.4-4.el6.x86_64.rpm
#rpm -ivh krb5-devel-1.10.3-10.el6_4.6.x86_64.rpm
#rpm -ivh libcom_err-devel-1.41.12-18.el6.x86_64.rpm
#rpm -ivh libselinux-devel-2.0.94-5.3.el6_4.1.x86_64.rpm
#rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm
#rpm -ivh openssl-devel-1.0.1e-15.el6.x86_64.rpm
#rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm
(需要安装以上的关联包才能安装下面的keepalived )
安装 keepalived-1.2.17.tar.gz
#tar -zxvf keepalived-1.2.17.tar.gz
#cd keepalived-1.2.17
# ./configura --prefix=/
# make && make install
[*]4.2进入keepalived.conf所在目录:
# cd /etc/keepalived
# vi keepalived.conf
下面是 keepalived.conf 配置文件
! Configuration File for keepalived
global_defs {
notification_email {
tymyeah@163.com
}
notification_email_from tymyeah@163.com
smtp_server 192.168.2.254
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.2.100
}
}
virtual_server 192.168.2.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
[*]4.3 开启 keepalived 服务 # service keepalived start-
5 配置重负载服务器
跟配置主负载服务器一样,只是最后的配置文件跟主负载服务器有两处不一样
[*] 将state由MASTER改为BACKUP
[*] 将priority由100改为99
! Configuration File for keepalived
global_defs {
notification_email {
tymyeah@163.com
}
notification_email_from tymyeah@163.com
smtp_server 192.168.2.254
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP # 这里 改成 BACKUP 重负载
interface eth0
virtual_router_id 51
priority 100#将priority由100改为99数值越大优先级越高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.100
}
}
virtual_server 192.168.2.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
6、测试验证
[*]6.1指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器;
[*]6.2 web 服务器发生故障时:
[*]这里模拟webserver1故障 暂停其http服务:#service httpd stop
访问 VIP 192.168.2.100 时 会重 webserer2 上获取信息
[*]6.3webserver1故障修复后,又从 webserver1 获取服务 #service httpd start
[*]6.4 主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务:
这里模拟lvs-master 192.168.2.14 发生故障,暂停其keepalived服务:#service keepalived stop
我们发现还是从外表访问vip 地址可以提供服务。
至此实验做完。谢谢大家!
参考资料:
http://developer.iyunv.com/art/201502/465745.htm
http://blog.iyunv.com/zilong00007/article/details/7356339
页:
[1]