解决: /sbin/ifconfig eth0:0 192.168.1.135 broadcast 192.168.1.135 netmask 255.255.255.255 up
/sbin/route add -host 192.168.1.135 dev eth0:0
echo "1" >> /proc/sys/net/ipv4/ip_forward
将三条命令写入 rc.local # cat <<EOF>> /etc/rc.d/rc.local
7.2(A)使用ipvsadm配置LVS
[root@localhost ~]# ipvsadm -C #清除原有记录
[root@localhost ~]# ipvsadm -A -t 192.168.1.135:80 -s rr -p 500
[root@localhost ~]# ipvsadm -a -t 192.168.1.135:80 -r 192.168.1.210:80 -g
[root@localhost ~]# ipvsadm -a -t 192.168.1.135:80 -r 192.168.1.220:80 -g
[root@localhost ~]# service ipvsadm save
[root@localhost ~]# service ipvsadm start
注意:实际生产中是不直接使用ipvsadm 直接配置LVS集群的
8.使用ldirectord配置LVS
8. 1(A)在Director Server上绑定一个VIP,用于对外提供服务。
[root@localhost ~]# ifconfig eth0:0 192.168.1.135 broadcast 192.168.1.135 netmask 255.255.255.255 up
特别注意:
广播地址 与 ip地址 相同
子网掩码 255.255.255.255
8.2(A)在Director Server上为eth0:0指定路由
[root@localhost ~]# route add -host 192.168.1.135 dev eth0:0
开启内核IP转发
[root@localhost ~]# echo "1" >> /proc/sys/net/ipv4/ip_forward
在DR模式下,开启ip转发不是必须的,在NAT模式下开启ip转发是必须的。
8.3安装ldirectord
#yum install -y heartbeat-ldirectord
用以LVS监控real server 节点的运行状态,当real server失效是,把它从虚拟服务器列表中删除,恢复是重新加入到列表。同时,它还能调用ipvsadm 自动创建LVS路由表。
需要说明的是:ldirectord 和 Piranha 都具有监控 real server的功能。
如果要通过ldirectord监控节点状态,只需要启动 ldirectord服务,整个集群就可以运行起来。
如果要通过Piranha工具配置LVS,就无需使用ldirectord。
---------依赖性没能解决,没有成功安装。--------------------------------------
查找安装的示例配置文件
#rpm -qd heartbeat-ldirectord
复制示例文件做配置文件
#cp /usr/share/doc/heartbeat-ldirectord-<tab>/ldirectord.cf /etc/ha.d
服务启动脚本
service ldirectord start|stop
编辑配置文件
#vim /etc/ha.d/ldirectord.cf
#全局配置选项
checktimeout=20 #判定real server出错的时间间隔
checkinterval=10 #判定ldirectord在两次检查之间的间隔
fallback=127.0.0.1:80 #当所有的real server都不工作时,web服务重定向
autoreload=yes #自动重载配置文件。
logfile="/var/log/ldirectord.log" #指定日志文件路径
quiescent=no #"no" 表示:如果一个节点在checktimeout设置的时间周期内没有相应,ldirectord会从LVS的路由表中之间移除real server,此时中断现有的客户端连接,并是LVS丢掉所有的连接跟踪记录和持续连接记录;"yes" 表示当某个real server失效时,ldirectord 将失效节点的权值设置为0,新的连接将不能到达,但是并不从LVS路由表中清除此节点,同时,连接跟踪记录和程序连接模版仍然保留在Director上
----------注意:以上为ldrectord.cf文件的全局配置。它们可以应用大下面多个虚拟主机上,下面是每个虚拟主机的配置。
#sample for 按 http virtual service
virtual=192.168.1.135:80 #设置VIP和端口号,注意:virtual行后面的行必须缩进4个空格或以一个tab字符进行标记。
real=192.168.1.210:80 gate #指定real server服务器地址和端口,同时设定LVS的工作模式 gate: DR | ipip: TUNL | masq : NAT
real=192.168.1.220:80 gate
fallback=127.0.0.1:80 gate
service=http #指定做负载均衡的服务
request="index.html" #ldirectord将根据real server 地址,结合该选项给出的请求路径,发送访问请求,检查real server上的服务是否正常运行,确保这里给出的页面是可以访问的,否则ldirectord会误认为此节点已经失效,发生错误监控现象。
receive="Test Page" #指定请求和应答字符串
scheduler=rr #指定调度算法,这里是rr 轮询 算法
protocol=tcp #指定协议类型,包含 tcp 和 udp
checkport=80 #指定监控的端口号
checktype=negotiate #指定ldirectord的检查类型
virtualhost=www.example.com #虚拟服务器的名称
9.real server 的配置
9.1禁止real server 相应ARP请求,只允许LVS 相应
[root@zzh /]# vim /etc/sysctl.conf
编辑内核运行参数,添加下面字段
net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
[root@zzh /]# sysctl -p 使上面的修改立即生效
9.2配置VIP地址
[root@localhost ~]# ifconfig lo:0 192.168.1.135 broadcast 192.168.1.135 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 192.168.1.135 dev lo:0
需要在所有的real server 执行相同的命令,可以写成脚本在所有的real server上执行,并 放到 /etc/rc.d/rc.local 中使该脚本开机执行
10.在Director Server 启动 Keepalived 服务
service ldirectord start