lvs负载均衡DR模式 keepalived高可用web集群实验

版权声明:本文为博主原创文章,未经博主允许不得为盈利而转载,否则保留一切法律权利。 https://blog.csdn.net/shile/article/details/78048239

一.拓扑图


目标:实现lvs的dr模式+keepalived高可用web集群架构




   

图1 拓扑图



本次高可用集群实验的节点有四个,分别是lvs-master,lvs-slave,lvs-webserver1,lvs-webserver2。
四个节点使用Vmware Pro 12的四台虚拟机实现,虚拟机操作系统全部采用CentOS 6.8 64位。
四个节点都在一个局域网中,网卡全部采用仅主机模式,网段192.168.80.0/24,VIP为192.168.80.20。
lvs-master和lvs-slave担任调度器(DirectorServer,DS)角色, lvs-webserver1和lvs-webserver2担任真实服务器(Real Server, RS)角色。
两台调度器安装keepalived提供高可用,两台真实服务器安装httpd提供web服务。


二.节点规划




图2   节点规划



三.各节点配置


3.1.各节点基本配置


1)各节点都关闭防火墙,命令: 

service iptables stop 
chkconfig iptables off

2)各节点都编辑/etc/hosts,添加如下内容:

192.168.80.11 lvs-master  
192.168.80.12 lvs-slave
192.168.80.13 lvs-webserver1
192.168.80.14 lvs-webserver2

3)各节点都编辑/etc/sysconfig/network,把主机名HOSTNAME按照节点信息表里面的更改。主机名更改后需运行命令reboot重启系统生效。

4)各节点都编辑/etc/sysconfig/network-scripts/ifcfg-eth0,把IP地址按照节点信息表里面的更改。IP地址更改后需运行命令service network restart重启网络生效。

5)各节点都设置好时区和时间同步。

6)各节点都关闭selinux。(视情况而定,一般都关闭。)

3.2. 调度器DS配置

1)lvs
两台调度器采用lvs做负载均衡,lvs模块是centos内核自带,只需要运行modprobe ip_vs命令即可激活lvs。

2)keepalived安装
lvs-master是主调度器,lvs-slave是备调度器,采用DR模式,并安装keepalived提供高可用服务。
Centos6.8编译安装keepalived-1.3.5步骤,参考此文: http://blog.csdn.net/shile/article/details/77896937

3)keepalived配置
keepalived的默认配置文件为/etc/keepalived/keepalived.conf

主负载均衡器配置:

global_defs {  
   notification_email {  
         admin@localhost  
   }  
   notification_email_from notify@localhost 
   smtp_server 192.168.80.1  
   smtp_connection_timeout 30
   router_id LVS_01  # 设置lvs的id,在一个网络内应该是唯一的
}  
vrrp_instance VI_1 {  
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface eth0  #指定HA监测网络的接口
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        192.168.80.20  #定义虚拟IP(VIP)为192.168.80.20,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.80.20  80{  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wlc # 设置负载调度的算法为wlc                   
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0                
    persistence_timeout 0          
    protocol TCP                  
    real_server 192.168.80.13 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  
        connect_timeout 10         
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
    }  
    real_server 192.168.80.14 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
        connect_timeout 10  
        nb_get_retry 3  
        delay_before_retry 3  
        connect_port 80  
        }  
     }  
}

从负载均衡器配置:

从负载服务器与主负载服务器大致相同,只是在keepalived的配置文件中需要改以下三处:

(1)将router_id由LVS_01改成LVS_02
(2)将state由MASTER改为BACKUP
(3)将priority由100改为80

4)启动keepalived

keepalived安装和配置完成后,添加到自启动并启动keepalived高可用服务:
service keepalived start
chkconfig --add keepalived
chkconfig keepalived on

3.3.真实服务器RS配置

1)两台真实服务器(Real Server, RS)都安装httpd,提供web服务。 

lvs-webserver1配置httpd:

yum install -y httpd
vi /etc/httpd/conf/httpd.conf #把ServerName那一行改成ServerName lvs-webserver1:80
service httpd start
echo "lvs-webserver1: 192.168.80.13" >/var/www/html/index.html

lvs-webserver2配置httpd:

yum install -y httpd
vi /etc/httpd/conf/httpd.conf #把ServerName那一行改成ServerName lvs-webserver2:80
service httpd start
echo "lvs-webserver2: 192.168.80.14" >/var/www/html/index.html

2)两台真实服务器RS都运行realserver脚本来添加VIP,并抑制arp, 步骤如下。

进入指定文件夹:cd /etc/init.d/  , 编辑脚本文件:vi realserver , 内容如下:

VIP=192.168.80.20
. /etc/rc.d/init.d/functions
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
       echo "RealServer Start OK"
       ;;
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"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

这里我们设置虚拟IP为:192.168.80.20
保存脚本文件后更改该文件权限:chmod 755 realserver
开启realserver服务:service realserver start

四.测试


测试主机: 同一局域网的电脑,比如vmware的宿主机(IP:192.168.80.1)。
测试方法: 使用浏览器打开http://192.168.80.20测试。刷新页面,显示的页面会在两台webserver中循环。



猜你喜欢

转载自blog.csdn.net/shile/article/details/78048239