一. 架构
VIP:192.168.1.20
DR:192.168.1.19
DR_BACK:192.168.1.15
RS1: 192.168.1.17
RS2: 192.168.1.18
二.初始化配置
同步时间
ntpdate asia.pool.ntp.org
关闭selinux
#临时修改,立即生效
setenforce 0
#永久修改,需要重启
vim /etc/sysconfig/selinuxSELINUX=disabled
为了调试方便暂时关闭防火墙
/etc/init.d/iptables stop
三.DR配置
绑定虚拟IP
ifconfig eth0:0 192.168.1.20 broadcast 192.168.1.20 netmask 255.255.255.255 up
设置路由
route add -host 192.168.1.20 dev eth0:0
开启包转发
sed -i 's/net.ipv4.ip_forward\ =\ 0/net.ipv4.ip_forward\ =\ 1/' /etc/sysctl.conf
sysctl -pnet.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
安装lvs和piranha
yum install ipvsadm piranha -y
设置piranha密码
piranha-passwd
New Password:
Verify:
Updating password for user piranha
启动piranha
/etc/init.d/piranha-gui start
在浏览器访问piranha
http://192.168.1.19:3636/login登录
用户名:piranha
密码:刚刚你设置的密码
配置Backup Server
点击 ENABLE 激活冗余服务器
Redundant server public IP: 192.168.1.15 //备份LVS地址
Heartbeat interval (seconds):6 //心跳网络检测时间
Assume dead after(seconds):18 //死亡转移时间
Heartbeat runs on port:539 //监控的端口
Monitor NIC links for failures : 不勾选 //网卡链路失效选项
Syncdaemon: 不勾选 //同步守护进程选项
配置虚拟服务器 > 点击 VIRTUAL SERVER > ADD
添加一条心的记录并编辑
name : LVS //自定义名称
Application port :80 //监控应用端口号
Protocol :tcp //监控网络的协议类型
Virtual IP Address:192.168.1.20 //虚拟服务器的IP地址
Virtual IP Network Mask: 255.255.255.255 //虚拟服务掩码
Device: eth0:0 //虚拟IP设备宿主 >
Re-entry time: 15 //移除RS后从新加入时间
Service timeout: 6 //RS失效后存活时间
Scheduling: 保持默认(最小连接数) //调度算法
Persistence: 保持默认 //维持时间
Persistence Network Mask:保持默认 //掩码
配置 Real-server1
点击Real SERVER 新建一条RS 记录
NAME:node1 //自定义RS名称
Address:192.168.1.17 //RS1服务器IP地址
Port:80 //服务的端口
Weight:1 //调度权重
配置 Real-server2
点击Real SERVER 新建一条RS 记录
NAME:node1 //自定义RS名称
Address:192.168.1.18 //RS1服务器IP地址
Port:80 //服务的端口
Weight:1 //调度权重
激活
配置好的配置文件如下(/etc/sysconfig/ha/lvs.cf)
serial_no = 12
primary = 192.168.1.19
service = lvs
backup_active = 1
backup = 192.168.1.15
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
debug_level = NONE
monitor_links = 0
syncdaemon = 0
virtual LVS {active = 1address = 192.168.1.20 eth0:0vip_nmask = 255.255.255.255port = 80send = "GET / HTTP/1.0\r\n\r\n"expect = "HTTP"use_regex = 0load_monitor = nonescheduler = wlcprotocol = tcptimeout = 6reentry = 15quiesce_server = 0server node1 {address = 192.168.1.17active = 1port = 80weight = 1}server node2 {address = 192.168.1.18active = 1port = 80weight = 1}
}
复制配置文件到DR_BACK
scp /etc/sysconfig/ha/lvs.cf 192.168.1.15:/etc/sysconfig/ha/
启动LVS服务(先启动主)
/etc/init.d/pulse start
Starting pulse: [ OK ]
查看lvs转发
ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.20:80 wlc-> 192.168.1.17:80 Route 1 0 4 -> 192.168.1.18:80 Route 1 0 4
四. RS配置
建立lvsrs启动脚本
vim /etc/init.d/lvsrs
#!/bin/bash
#description : Start Real Server
# chkconfig: 2345 90 60
# Default-Start: 2345
# Default-Stop: 90
VIP=192.168.1.20
#./etc/rc.d/init.d/functions
case "$1" instart)echo " Start LVS of Real Server"/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 upecho "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce ;;stop)/sbin/ifconfig lo:0 downecho "close LVS Director server"echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announce;;*)echo "Usage: $0 {start|stop}"exit 1
esac
添加进启动项,开机自启动
chkconfig --add lvsrs
启动服务
/etc/init.d/lvsrs start
五.验证
验证负载均衡:
在RS1和RS2分别安装nginx并启动,修改默认首页
vim /usr/local/nginx/html/index.html
<h1>标签分别改成NODE1和NODE2
浏览器访问http://192.168.1.20
显示NODE1
换个机器访问显示NODE2及表示成功。
这个时候再来查看lvs状态
ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.20:http wlc-> 192.168.1.17:http Route 1 2 1 -> 192.168.1.18:http Route 1 2 0
验证DR高可用:
手动停止主DR,模拟故障
/etc/init.d/pulse stop
Shutting down pulse: [ OK ]
继续访问http://192.168.1.20
如果仍然能正常访问则证明成功
这个时候在备份DR上查看LVS状态
[root@vm2 ha]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.20:80 wlc-> 192.168.1.17:80 Route 1 0 2 -> 192.168.1.18:80 Route 1 0 3