实现LVS的DR模式
一. 实验环境
三台机器:
Director节点: ?(ens33 192.168.10.53 ?vip ens33:0 192.168.10.80)
Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80)
- Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80)
二. 安装和配置
1. 配置两个real server服务器
(1) 配置虚拟IP地址(VIP)
VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器Director监听并分发)。因此使用虚接口lo:0来承载VIP地址。
cd /etc/sysconfig/network-scripts/cp ifcfg-lo ifcfg-lo:0vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.10.80 NETMASK=255.255.255.255 ??#子网掩码必须全为1 ONBOOT=yes 1ifup lo:0 ????#开启虚拟接口
(2)安装httpd,创建测试网页
#安装httpdyum install httpd -y
#real server1创建测试网页echo "Server 192.168.10.51" > /var/www/html/index.html#real server2创建测试网页echo "Server 192.168.10.52" > /var/www/html/index.html
(3)启动httpd服务,关闭防火墙和安全性策略
#启动httpd服务systemctl start httpd.service systemctl enable httpd.service
#关闭防火墙和安全性策略systemctl stop ?firewalld.service systemctl disable firewalld.servicesetenforce 0
(4)在两台real server上配置启动脚本
vim /etc/init.d/rs.sh ?#!/bin/bash ?VIP=192.168.10.80 ???????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 " ???????????????;; ???????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 Stopd" ???????????????;; ???????*) ???????????????echo "Usage: $0 {start|stop}" ???????????????exit 1 ???????esac ???????exit 0
这里需要注意的是避免ARP通信紊乱,解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求。
- arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。
(5)运行启动脚本chmod +x rs.shservice rs.sh start
最后在本机上自测访问网站服务
2. 配置Director server服务器
(1)配置虚拟IP地址,以便响应群集访问
cd /etc/sysconfig/network-scripts/cp ifcfg-ens33 ifcfg-ens33:0vim ifcfg-ens33:0DEVICE=ens33:0ONBOOT=yesIPADDR=192.168.10.80NETMASK=255.255.255.0ifup ens33:0
(2)安装ipvsadm管理工具yum install ipvsadm -y ?
(3)开启路由功能
vim /etc/sysctl.confnet.ipv4.ip_forward=1sysctl -p ????#保存
(4)调整/proc响应参数,关闭Linux内核重定向参数响应
vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0 ?net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0sysctl -p #保存
(5)配置Director启动脚本
vim /etc/init.d/dr.sh#!/bin/bashGW=192.168.10.1VIP=192.168.10.80RIP1=192.168.10.51RIP2=192.168.10.52case "$1" in ???start) ???/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm ???systemctl start ipvsadm ???/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up ???/sbin/route add -host $VIP dev ens33:0 ???/sbin/ipvsadm -A -t $VIP:80 -s rr ???/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ???/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g ???echo "ipvsadm starting --------------------[ok]" ???;; ???stop) ???/sbin/ipvsadm -C ???systemctl stop ipvsadm ???ifconfig ens33:0 down ???route del $VIP ???echo "ipvsamd stoped----------------------[ok]" ????;; ???status) ???if [ ! -e /var/lock/subsys/ipvsadm ];then ???echo "ipvsadm stoped---------------" ???exit 1 ???????????else ???????????echo "ipvsamd Runing ---------[ok]" ???fi ???;; ???*) ???echo "Usage: $0 {start|stop|status}" ???exit 1esacexit 0
(6)启动脚本,添加两个Real Server节点服务器
chmod +x /etc/init.d/dr.shservice dr.sh start
(7)#关闭防火墙和安全策略
systemctl stop firewalld.servicesystemctl disable firewalld.servicesetenforce 0
三.测试LVS群集
用Windows客户端直接访问http://192.168.10.80/, 将能够看到由真实服务器提供的网页内容。
第一次访问:
Real Server连接次数查看:
刷新一次:
Real Server连接次数查看:
LVS结合keepalive
LVS可以实现负载均衡,但是不能够故障切换和健康检查,也就是当一个rs服务器出现故障时,LVS仍然会把请求转发给故障的rs服务器,这样就会导致请求无效。keepalive软件可以解决 LVS 单点故障的问题,能同时实现 LVS 的高可用性。这里以LVS-DR模式为例。
一.实验环境
五台机器:
- Keepalived1 + lvs1(Director1):192.168.10.53 (主)
- Keepalived2 + lvs2(Director2):192.168.10.54 ?(从)
- Real server1:192.168.10.51
- Real server2:192.168.10.52
- NFS Server: 192.168.10.55
- VIP: 192.168.10.80
二.安装配置
在实现LVS的DR模式前提下,在两个Director Server 节点服务器部署keepalived服务。
(1)安装keepalive软件
yum install keepalived -y
(2)主keepalived节点配置(lvs1)
#主节点( MASTER )配置文件vim /etc/keepalived/keepalived.conf global_defs { ?... ???#省略部分 ?smtp_server 127.0.0.1 ??????????#指向本地 ?router_id LVS_01 ??????????????#指定名称,备份服务器不同名称 ?... ???#省略部分 ?????????} vrrp_instance VI_1 { ???????#定义VRRP热备实例 ???state MASTER ???????????#MASTER表示主调度器 ???interface ens33 ????????#承载VIP地址的物理接口 ???virtual_router_id 51 ???#虚拟路由器的ID号,每个热备组保持一致 ???priority 100 ???????????#主调度器优先级 ???advert_int 1 ???????????#通告间隔秒数 ???authentication { ???????#认证信息 ???????auth_type PASS ?????#认证类型 ???????auth_pass 1111 ?????#字码密串 ???} ???virtual_ipaddress { ????#指定群集VIP地址,也就是漂移地址 ???????192.168.10.80 ???}}virtual_server 192.168.10.80 80 { ?#虚拟服务器VIP地址 ???delay_loop 6 ??????????????????#健康检查的间隔时间 ???lb_algo rr ????????????????????#轮询rr的调度算法 ???lb_kind DR ????????????????????#直接路由工作模式 ???persistence_timeout 0 ?????????#连接保持时间 ???protocol TCP ??????????????????#应用服务采用的是TCP协议 ???real_server 192.168.10.51 80 { ?????????????????????????#第一个web节点的服务器地址、端口 ???????weight 1 ???????TCP_CHECK { ???????????connect_timeout 10 ???????????nb_get_retry 3 ???????????delay_before_retry 3 ???????????connect_port 80 ??????????????} ???} ???real_server 192.168.10.52 80 { ????????????????????????#第二个web节点的服务器地址、端口 router_id LVS_01 ????????weight 1 ???????TCP_CHECK { ???????????connect_timeout 10 ???????????nb_get_retry 3 ???????????delay_before_retry 3 ???????????connect_port 80 ???????} ???}}
(3)从keepalived节点配置(lvs2)
拷贝主节点的配置文件keepalived.conf,然后修改如下内容:
router_id LV -> ?router_id LVS_02 #从调度器名称state MASTER -> state BACKUP ?#从调度器priority 100 -> priority 90 ??#从调度器优先级
(4)启动keepalive
#先主后从分别启动keepalivesystemctl start keepalived
三.测试 keepalived 的HA特性
(1)虚拟IP地址漂移
首先在master(lvs1)上执行命令 ip addr ,可以看到vip在master节点上的;
这时如果在master上执行 systemctl stop keepalived 命令,这时vip已经不在master上,在slave节点上执行 ip addr 命令可以看到 vip 已经正确漂到slave节点。
这时客户端去访问 http://192.168.10.80 访问依然正常。
(2)连通性
在客户机执行“ping 192.168.10.80 -t”,能够正常ping通。
禁用master(lvs1)的ens33网卡,发现还是能正常ping通。
(3)web访问测试
禁用master(lvs1)的ens33网卡,再次访问上述web服务,网页文档显示正常。
部署LVS-DR+Keepalived搭建高可用web群集
原文地址:http://blog.51cto.com/11134648/2133893