修改好一个项(SubnetMask)后,按F3修改余下的几个项的SubnetMask 值为255.255.255.255,然后重启windows就可以生效了。
一、运行LVS/DR
在LVS/DR运行lvs脚本,在真实服务器上启用虚拟地址,就可以把整个LVS/DR运行起来了。
几个需要关注的问题
一、控制器高可靠性。一个普遍的做法是使用HA,用2个服务器做双机。在条件有限的情况下,又考虑不增加网络结构的复杂性,可以把LVS/DR控制器脚本放在不同的服务器上,一旦当前使用的LVS/DR控制器出故障,立即启用其它服务器的控制器脚本,可以把停机时间控制在可以接受的范围。
二、安全。出来在真实服务器上启用安全机制外,LVS/DR控制器也需要做防火墙策略的。下面是某个LVS/DR控制器的防火墙脚本,请大家参考:
[root@mysql2 ~]# more /usr/local/bin/firewall
#!/bin/bash
#this is a common firewall created by 2007-7-29
#define some variable
IPT=/sbin/iptables
CONNECTION_TRACKING="1"
INTERNET="eth0"
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED_NET="240.0.0.0/5"
BROADCAST_SRC="0.0.0.0"
BROADCAST_DEST="255.255.255.255"
IPADDR=61.135.55.100
LOOPBACK_INTERFACE="lo"
#Remove any existing rules
$IPT -F
$IPT -X
#setting default firewall policy
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP
#stop firewall
if [ "$1" = "stop" ]
then
echo "Filewall completely stopped!no firewall running!"
exit 0
fi
#setting for loopback interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# Stealth Scans and TCP State Flags
# All of the bits are cleared
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# SYN and FIN are both set
$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN and RST are both set
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# FIN and RST are both set
$IPT -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# FIN is the only bit set, without the expected accompanying ACK
$IPT -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
# PSH is the only bit set, without the expected accompanying ACK
$IPT -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
# URG is the only bit set, without the expected accompanying ACK
$IPT -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
# Using Connection State to By-pass Rule Checking
if [ "$CONNECTION_TRACKING" = "1" ]; then
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A OUTPUT -m state --state INVALID -j DROP
fi
##################################################################
# Source Address Spoofing and Other Bad Addresses
# Refuse spoofed packets pretending to be from
# the external interface.s IP address
$IPT -A INPUT -i $INTERNET -s $IPADDR -j DROP
# Refuse packets claiming to be from a Class A private network
$IPT -A INPUT -i $INTERNET -s $CLASS_A -j DROP
# Refuse packets claiming to be from a Class B private network
$IPT -A INPUT -i $INTERNET -s $CLASS_B -j DROP
# Refuse packets claiming to be from a Class C private network
$IPT -A INPUT -i $INTERNET -s $CLASS_C -j DROP
$IPT -A INPUT -i $INTERNET -s 0.0.0.0/8 -j DROP
$IPT -A INPUT -i $INTERNET -s 169.254.0.0/16 -j DROP
$IPT -A INPUT -i $INTERNET -s 192.0.2.0/24 -j DROP
###################################################################
#setting access rules
#enable ssh connect
$IPT -A INPUT -i $INTERNET -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i $INTERNET -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $INTERNET -p tcp --dport 1755 -j ACCEPT
$IPT -A INPUT -i $INTERNET -p tcp --dport 554 -j ACCEPT
$IPT -A INPUT -i $INTERNET -p udp --dport 554 -j ACCEPT
$IPT -A INPUT -i $INTERNET -p tcp --dport 8080 -j ACCEPT
$IPT -A INPUT -i $INTERNET -p udp --dport 1024:5000 -j ACCEPT
在这个防火墙脚本中,--dport 1024:5000 udp端口是用于mms协议的,在项目实施过程中,没有注意这个端口,结果导致流媒体服务请求不能被转发到真实服务器。
三、数据同步。所有相同服务的服务器挂接共享服务器的同一个目录,写入数据实际上是写同一个文件或目录,因此不再需要rsycn这样占资源的同步工具。
四、LVS/DR维护和监控。系统在运行过程中,某个真实服务器多运行的服务很可能出故障,但ipvsadm本身不探测这个事件,它仍然按照某种算法将一些用户的请求转发给出故障的服务器,导致一些用户不能正常访问。Ldirectord可以动态的处理这个麻烦,也可以自己写个小工具,定期到真实服务器获取访问返还状态码,根据返还状态码执行相关的ipvsadm维护操作。监控报警方面,Nagios()是非常好的选择,当然,监控系统最好放在LVS/DR环境之外,关于Nagios的细节,请参照我的文章” Nagios远程监控软件的安装与配置详解