一、
5、各主机IP地址:
主机
IP
网关
Client
192.168.86.116
Router
F0/0:192.168.x.x
Fo/1:192.168.xx.xx
F0/1
Director
Eth0:192.168.86.111/24(DIP)
Eth0:1:192.168.86.254/32(VIP)
F0/1
Real 1
Eth0:192.168.86.112/24(DIP)
lo:1:192.168.86.254/32(VIP)
F0/1
Real 2
Eth0:192.168.86.113/24(DIP)
lo:1:192.168.86.254/32(VIP)
F0/1
二、配置LVS实现负载均衡
1 、在LVS_Director主机上安装负载均衡软件
# rpm -ivh
piranha*rpm ipvsadm*rpm
(配置测试时使用的ipvsadm-1.24-10.i386.rpm、piranha-0.8.4-16.el5.i386.rpm)
2、
修改内核参数
在lvs_DR修改内核参数
打开转发功能
echo "1"
> /proc/sys/net/ipv4/ip_forward
3、
配置网络脚本:
在节点1上执行setrealserver1_DR.sh
#!/bin/bash
/sbin/ifconfig eth0 192.168.86.112
netmask 255.255.255.0
/sbin/ifconfig lo:1 192.168.86.254
broadcast 192.168.86.254 netmask 255.255.255.255 up
/sbin/ ip route add default via
192.168.86.1
#echo "1" >
/proc/sys/net/ipv4/ip_forward
#关闭arp广播
echo "1" >
/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >
/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >
/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >
/proc/sys/net/ipv4/conf/all/arp_announce
在节点2上执行setrealserver2_DR.sh
#!/bin/bash
/sbin/ifconfig eth0 192.168.86.113
netmask 255.255.255.0
/sbin/ifconfig lo:1 192.168.86.254
broadcast 192.168.86.254 netmask 255.255.255.255 up
/sbin/ ip route add default via
192.168.86.1
#echo "1" > /proc/sys/net/ipv4/ip_forward
#关闭arp广播
echo "1" >
/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >
/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >
/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >
/proc/sys/net/ipv4/conf/all/arp_announce
4 、设置管理密码在节点 LVS-Director上初始化 piranhan 的密码
# piranha-passwd 设置密码为 123456
启动配置进程在 LVS-Director节点上启动 piranha 的配置进程,
并设置为开机自动启动
# chkconfig piranha-gui on
# /etc/init.d/piranha-gui start
5、完成之后进入图形界面并在浏览器中输入:http://localhost:3636,输入用户名:piranha和刚才定义的密码,即可进入piranha
configuration tool的配置界面:
点击login,用户名:piranha,密码:123456
在该界面中第一个要设置的地方是CONTROL/MONITORING,在该界面中将MONITOR中的选项:Auto
update勾选上,Update Interval将自动定义为10s,在服务没有启动之前LVS ROUTING TABLE和LVS PROCESS都不可见。完成之后选择Update
information now。
在该界面的第二个要设置的地方是GLOBAL SETTINGS,在该界面中:
Primary server
public IP:192.168.86.111 (真实外部地址)
Primary server
private IP:0.0.0.0
Use network type: direct (LVS方式)
选择接受配置
在该界面的第三个要设置的地方是REDUNDANCY,在该界面中:
由于没有在这个结构中加入冗余配置,所以可以将其DISABLE掉或者将其设置为ENABLE但是保持配置为空。在该例子中我的配置为空:
Redundant server
public IP: 0.0.0.0
Redundant server
private IP:
Heartbeat Interval
(seconds): 6
Assume dead after (seconds): 18
Heartbeat runs on
port: 539
Monitor NIC links
for failure: 不勾选
选择接受配置
在该界面的第四个要设置的地方是VIRTUAL SERVERS:
serial_no = 271
primary = 192.168.86.111
service = lvs
backup_active = 1
backup = 0.0.0.0
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
nat_nmask = 255.255.255.0
debug_level = NONE
monitor_links = 0
syncdaemon = 0
virtual http {
active = 1
address =
192.168.86.254 eth0:1
vip_nmask =
255.255.255.255
port = 443
send =
"GET / HTTP/1.0\r\n\r\n"
expect =
"HTTP"
use_regex =
0
load_monitor = none
scheduler =
wlc
protocol =
tcp
timeout = 6
reentry =
15
quiesce_server = 0
server
realserver1 {
address
= 192.168.86.112
active
= 1
weight
= 1
}
server
realserver2 {
address
= 192.168.86.113
active
= 1
weight
= 1
}
}
三、配置服务节点的ikey服务
1 、在real 1 和real 2分别安装ikey服务
如果linux开启了iptables防火墙的话,需要做如下设置
在realserver 上增加如下iptables
脚本:
[root@real1 lvs]#
more real_iptable.sh
service iptables
stop
#!/bin/bash
/sbin/iptables -F
/sbin/iptables -t
nat -F
REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 800 -j REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 22 -j REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 3676 -j REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 3675 -j REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 3880 -j REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 1812 -j REDIRECT
/sbin/iptables -A
PREROUTING -t nat -p tcp -d 192.168.86.254 --dport 1389 -j REDIRECT
service iptables save
2、在LVS -Director上添加iptables规则
DR 模式下若多端口的集群配置,我们需要以下操作,使用防火墙标记
假如我这里需要将tcp 端口80、800、443、3676、3675、3880、3890、1812、1389端口作为一个防火墙标记,在active
router 上添加如下脚本:iptables.sh
开启防火墙,把所需端口开启转发设置mark组为2
#!/bin/bash
/sbin/iptables -F
/sbin/modprobe
ip_tables
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 92.168.86.254/32 --dport 800 -j MARK --set-mark
2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 92.168.86.254/32 --dport 443 -j MARK --set-mark
2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 22 -j MARK --set-mark
2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 3676 -j MARK
--set-mark 2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 3675 -j MARK
--set-mark 2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 3880 -j MARK
--set-mark 2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 1812 -j MARK
--set-mark 2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 1389 -j MARK
--set-mark 2
/sbin/iptables -t
mangle -A PREROUTING -p tcp -d 192.168.86.254/32 --dport 3890 -j MARK
--set-mark 2
service iptables
save
查看上述规则是否加入到mangle表的PREROUTING
iptables -t mangle
-L PREROUTING
3、查看ipvsadm配置
[root@localhost ~]# 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.86.254:443 wrr
-> 192.168.86.113:443 Route
1 0 0
-> 192.168.86.112:443 Route 1
0 0
若没有上面显示,在LVS_DR执行以下命令:
ipvsadm -C清除ipvsadm规则。
然后重新添加ipvsadm规则
ipvsadm -A -f 2 -s
wrr
ipvsadm -a -f 2 -r
192.168.86.112 -g -w 5
ipvsadm -a -f 2 -r
192.168.86.113 -g -w 5
2为mark组,-g是直接路由方式,-w为权值,默认为1,权值大的优先访问,小的反之。
查看ipvsadm配置
#ipvsadm -L -n
#ipvsadm -Ln --stats -t 192.168.86.254:3890
Prot LocalAddress:Port Conns InPkts OutPkts InBytes
OutBytes
-> RemoteAddress:Port
TCP 192.168.86.90:443 5771754 101697K 0 5338M 0
-> 192.168.86.95:443 454297 13736280 0 761572K 0
-> 192.168.86.96:443 5317457 87961304 0 4576M 0
保存ipvsadm规则
ipvsadm -S
移除相关配置
ipvsadm -C
ipvsadm -D -f 2
ipvsadm -d -f 2 -r 192.168.86.254
4 、启动LVS进程
#
/etc/init.d/pulse start
# chkconfig pulse
on
# ipvsadm 可以看连接状态
四、测试
3、可以使用load running测试2台真机cpu是否都有负载。