CentOS7配置LVS+Keepalived实现负载均衡和高可用

角色 IP地址 备注
主LVS调度器(MASTER) 10.207.237.21 使用keepalived配置
备LVS调度器(BACKUP) 10.207.237.22 使用keepalived配置
HTTP服务器(RS1) 10.207.237.23 apache服务器
HTTP服务器(RS2) 10.207.237.24 apache服务器
虚拟IP地址(VIP) 10.207.237.25 虚拟IP地址

安装apache(简单安装测试用)
web23/web24:
添加主机名

[root@web23 ~]# echo "10.207.237.23 web23" >> /etc/hosts
#关闭防火墙
[root@web23 ~]# systemctl stop firewalld
[root@web23 ~]# systemctl disable firewalld
#永久selinux:
[root@web23 ~]# vim /etc/selinux/config
SELINUX=disabled	     #将enforcing改为disabled
[root@web23 ~]# reboot	 #重启系统永久生效
#配置yum源,安装apache
yum install -y httpd*
systemctl start httpd
systemctl enable httpd
[root@web23 ~]# vim /var/www/html/index.html	#把主页文件写成html标签的格式,添加一下内容
<html>
<head>
<title>测试站点</title>
</head>
<body>
10.207.237.23	web23
</body>
</html> 
[root@web23 ~]# systemctl restart httpd  #重启服务
http://10.207.237.23  #在浏览器进行测试
http://10.207.237.24  #在浏览器进行测试

lvs21/lvs22主机执行:

#关闭防火墙
[root@lvs21 ~]# systemctl stop firewalld
[root@lvs21 ~]# systemctl disable firewalld
#永久selinux:
[root@lvs21 ~]# vim /etc/selinux/config
SELINUX=disabled	      #将enforcing改为disabled
[root@lvs21 ~]# reboot	  #重启系统永久生效
#安装依赖包
yum -y install libnl libnl-devel
yum -y install libnfnetlink-devel
yum -y install gcc gcc-c++ autoconf automake
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
#安装keepalived
yum -y install keepalived

1、lvs21配置LVS-DR-MASK的keepalived.conf配置文件

[root@lvs21 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     xxxx@qq.com    #设置报警邮箱,一般不再这做,而是用其他方式报警
   }
   notification_email_from keepalived@localhost	#设定发送邮件地址
   smtp_server 127.0.0.1		#设定发送邮件服务器
   smtp_connect_timeout 30		#设定SMTP连接超时时间
   router_id LVS_DEVEL
   #查阅说明文档得知route_id配置是为了标识当前节点,当然两个节点的此项设置可相同,也可不相同
}

vrrp_instance VI_1 {			#定义虚拟路由实例,不同实例ID不同
    state MASTER				#定义服务器在keepalived中的角色主服务器
    interface eth0				#定义进行检测的端口eth0
    virtual_router_id 51		#定义虚拟路由ID,同一个实例的主从一样
    priority 150				#定义在虚拟路由器组的权限,越大越高
    advert_int 1				#定义检测时间间隔
    authentication {			#定义认证方式密码,主从必须一样
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {			#指定虚拟IP地址
        10.207.237.25
    }
}

virtual_server 10.207.237.25 80 {	#定义虚拟服务,需指定IP地址和端口,空格隔开
    delay_loop 3				#定义RS运行情况监测时间间隔
    lb_algo rr					#定义负载调度算法
    lb_kind DR					#定义LVS的工作模式有NAT、TUN、DR三种模式
#nat_mask 255.255.255.0
persistence_timeout 0			#定义会话保持时间,S为单位
    protocol TCP				#指定转发协议

    real_server 10.207.237.23 80 {	#定义真实服务器IP地址和端口
        weight 3					#定义RS的权重
        TCP_CHECK {				#RS server健康检查部分
        connect_port 80			#定义健康检查端口
        connect_timeout 3		#定义超出10s连接超时
        retry 3					#定义重试次数
        delay_before_retry 3	#定义重试时间间隔
        }
    }

    real_server 10.207.237.24 80 {
        weight 3
        TCP_CHECK {
        connect_port 80
        connect_timeout 3
        retry 3
        delay_before_retry 3
        }
    }
}

2、lvs22主机配置LVS-DR-BACKUP的keepalived.conf配置文件

[root@lvs22 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     xxxx@qq.com    #设置报警邮箱,一般不再这做,而是用其他方式报警
   }
   notification_email_from keepalived@localhost	#设定发送邮件地址
   smtp_server 127.0.0.1		#设定发送邮件服务器
   smtp_connect_timeout 30		#设定SMTP连接超时时间
   router_id LVS_DEVEL
   #查阅说明文档得知route_id配置是为了标识当前节点,当然两个节点的此项设置可相同,也可不相同
}

vrrp_instance VI_1 {			#定义虚拟路由实例,不同实例ID不同
    state BACKUP				#定义服务器在keepalived中的角色备服务器
    interface eth0				#定义进行检测的端口eth0
    virtual_router_id 51		#定义虚拟路由ID,同一个实例的主从一样
    priority 100				#定义在虚拟路由器组的权限,越大越高
    advert_int 1				#定义检测时间间隔
    authentication {			#定义认证方式密码,主从必须一样
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {			#指定虚拟IP地址
        10.207.237.25
    }
}

virtual_server 10.207.237.25 80 {	#定义虚拟服务,需指定IP地址和端口,空格隔开
    delay_loop 3				#定义RS运行情况监测时间间隔
    lb_algo rr					#定义负载调度算法
    lb_kind DR					#定义LVS的工作模式
#nat_mask 255.255.255.0
persistence_timeout 0			#定义会话保持时间,S为单位
    protocol TCP				#指定转发协议

    real_server 10.207.237.23 80 {	#定义真实服务器IP地址和端口
        weight 3				#定义RS的权重
        TCP_CHECK {				#RS server健康检查部分
        connect_port 80			#定义健康检查端口
        connect_timeout 3		#定义超出10s连接超时
        retry 3					#定义重试次数
        delay_before_retry 3	#定义重试时间间隔
        }
    }

    real_server 10.207.237.24 80 {
        weight 3
        TCP_CHECK {
        connect_port 80
        connect_timeout 3
        retry 3
        delay_before_retry 3
        }
    }
}

3、web23/web24客户端配置LVS参数脚本
lvs-real.sh

#!/bin/sh
VIP=10.207.237.25
. /etc/rc.d/init.d/functions  
case "$1" in
#禁用本地的ARP请求、绑定本地回环地址
start)
    /sbin/ifconfig lo down
    /sbin/ifconfig lo up
    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
    /sbin/sysctl -p >/dev/null 2>&1
    /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
    #在回环地址上绑定VIP,设定掩码,与Direct Server(自身)上的IP保持通信
    /sbin/route add -host $VIP dev lo:0
    echo "LVS-DR real server starts successfully.\n"
    ;;
stop)
    /sbin/ifconfig lo:0 down
    /sbin/route del $VIP >/dev/null 2>&1
    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
echo "LVS-DR real server stopped.\n"
    ;;
status)
    isLoOn=`/sbin/ifconfig lo:0 | grep "$VIP"`
    isRoOn=`/bin/netstat -rn | grep "$VIP"`
    if [ "$isLoON" == "" -a "$isRoOn" == "" ]; then
        echo "LVS-DR real server has run yet."
    else
        echo "LVS-DR real server is running."
    fi
    exit 3
    ;;
*)
    echo "Usage: $0 {start|stop|status}"
    exit 1
esac
exit 0

4、web23/web24执行脚本
添加脚本lvs-real.sh到/usr/local/sbin/

[root@web23 sbin]# ./lvs-real.sh restart
#设置开机自启动
vim /etc/rc.local
/usr/local/sbin/lvs-real.sh start
chmod +x /etc/rc.local

5、lvs21/lvs22安装lvs

yum install -y ipvsadm
#重启keepalived
systemctl restart keepalived
systemctl status keepalived
systemctl enable keepalived

6、查看配置信息
ipvsadm -L -n
在这里插入图片描述
7、测试
在这里插入图片描述
在这里插入图片描述
8、在LVS主机上查看负载均衡情况

watch -n 2 'ipvsadm -lnc |grep 10.207.237.25 |grep EST'

备注:
如果重启keepalived后iptables多一条规则,删除keepalived.conf中的vrrp_strict
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值