Linux服务器下LVS+Keepalived 高可用负载均衡集群架构实现

时间:2022-12-22 15:01:16

1、实验结构图总览

Linux服务器下LVS+Keepalived 高可用负载均衡集群架构实现

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.3 ip地址跟主机名绑定 #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 上获取信息
      Linux服务器下LVS+Keepalived 高可用负载均衡集群架构实现
  • 6.3 webserver1故障修复后,又从 webserver1 获取服务 #service httpd start
    Linux服务器下LVS+Keepalived 高可用负载均衡集群架构实现
  • 6.4 主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务:
    这里模拟lvs-master 192.168.2.14 发生故障,暂停其keepalived服务:#service keepalived stop
    我们发现还是从外表访问vip 地址可以提供服务。

至此实验做完。谢谢大家!

参考资料:
http://developer.51cto.com/art/201502/465745.htm
http://blog.csdn.net/zilong00007/article/details/7356339