软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 系统运维 -> heartbeat+ldirectord+lvsnat -> 正文阅读

[系统运维]heartbeat+ldirectord+lvsnat


ldirectord来管理lvs,可以定时检查后端realserver,发现故障后自动清除,恢复后自动加入lvs表,让我们来感受下吧。
lvs端:
node1
eth0:192.168.3.124
eth0:192.168.8.124用于heartbeat心跳
vip:192.168.3.233
node2
eth0:192.168.3.126
eth0:192.168.8.126用于heartbeat心跳
vip:192.168.3.233

realserver端:
web1
eth0:192.168.3.128
eth0:0:192.168.8.128 
vip:192.168.3.233
web2
eth0:192.168.3.129
eth0:0:192.168.8.129 
vip:192.168.3.233
一.建议先配置lvs,没问题后再继续配置其他部分
在node1和node2上配置lvs nat模式,以node1为例
注:先在node1上建一个vip做lvs测试用,测试无误后再删掉,然后使用heartbeat的vip,这样可以给我们降低错误率
lvs端node1配置:
ifconfig eth0:1 192.168.3.233 netmask 255.255.255.0
ipvsadm -A -t 192.168.3.233:80 -s wrr
ipvsadm -A -t 192.168.3.233:80 -r 192.168.8.128:80 -g
ipvsadm -A -t 192.168.3.233:80 -r 192.168.8.129:80 -g
realserver端web1,web2配置:
ip route add 192.168.3.0 via 192.168.3.233
注:将realserver的网关指向vip 192.168.2.233
配置完成后测试:
[root@usvr-126 ha.d]# curl 192.168.3.233/1.html
hello,192.168.3.128
[root@usvr-126 ha.d]# curl 192.168.3.233/1.html
hello,192.168.3.129
以上说明lvs配置成功,取消eth0:1即可,ifdown eth0:1;需要在node2上做同样配置。
二.配置ldirectord
rpm -ql heartbeat-ldirectord
cp /usr/share/doc/ldirectord-1.0.4/ldirectord.cf /etc/ha.d
vim /etc/ha.d/ldirectord.cf
# Global Directives
checktimeout=20           #判定real server出错的时间间隔。
checkinterval=10          #指定ldirectord在两次检查之间的间隔时间。
fallback=127.0.0.1:80     #当所有的real server节点不能工作时,web服务重定向的地址。
autoreload=yes            #是否自动重载配置文件,选yes时,配置文件发生变化,自动载入配置信息。
logfile="/var/log/ldirectord.log"   #设定ldirectord日志输出文件路径。
quiescent=no              #当选择no时,如果一个节点在checktimeout设置的时间周期内没有响应,ldirectord将会从LVS的路由表中直接移除real server,此时,将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为yes,当某个real server失效时,ldirectord将失效节点的权值设置为0,新的连接将不能到达,但是并不从LVS路由表中清除此节点,同时连接跟踪记录和程序连接模板仍然保留在Director上。

# Sample for an http virtual service
virtual=192.168.3.233:80        #指定虚拟的IP地址和端口号,注意,在virtual行后面的行必
   real=192.168.8.128:80 masq      #指定Real Server服务器地址和端口,同时设定LVS工作模式,用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。
   real=192.168.8.129:80 masq
   fallback=127.0.0.1:80 masq       
   service=http                     #指定服务的类型,这里是对http服务做负载均衡。
   request="ipvsadm.html"             #ldirectord将根据指定的Real Server地址,结合该选项给出的请求路径,发送访问请求,检查Real Server上的服务是否正常运行,确保这里给出的页面地址是可访问的,不然ldirectord会误认为此节点已经失效,发生错误监控现象。
   receive="test ok"              #指定请求和应答字串。
   scheduler=wrr                     #指定调度算法,这里是rr(轮叫)算法。
   protocol=tcp                     #指定协议的类型,LVS支持TCP和UDP协议。
   checktype=negotiate              #指定Ldirectord的检测类型,默认为negotiate。
   checkport=80                     #指定监控的端口号。
#  virtualhost=www.gaojf.com        #虚拟服务器的名称,随便指定。

需要在web1,web2上设置ipvsadm.html
echo "test ok" > ipvsadm.html
node1上ldirectord配置好后,copy到node2上一份即可。
三.配置heartbeat
heartbeat配置参见前面的博文“heartbeat实现nginx热备”,在此只需改下/etc/ha.d/haresources资源,其他不需要动。如下:
nod1端/etc/ha.cf
logfile	/var/log/ha-log
logfacility	local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport	694
ucast eth0 192.168.8.126
auto_failback on
node	usvr-124.cityre.cn
node	usvr-126.cityre.cn
ping 192.168.3.1
respawn hacluster /usr/lib64/heartbeat/ipfail

node2端/etc/ha.cf
logfile	/var/log/ha-log
logfacility	local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport	694
ucast eth0 192.168.8.124
auto_failback on
node	usvr-124.cityre.cn
node	usvr-126.cityre.cn
ping 192.168.3.1
respawn hacluster /usr/lib64/heartbeat/ipfail

node1和node2端的/etc/ha.d/haresources
usvr-124.cityre.cn IPaddr::192.168.3.233/24/eth0 ldirectord::ldirectord.cf
注:需要在node1和node2中写入对方的host
192.168.3.124 usvr-124.cityre.cn
192.168.3.126 usvr-126.cityre.cn
注:这里的vip就是我们lvs的vip,这样才能实现vip的漂移。
四.测试
heartbeat配置完成后启动service heartbeat start
1.查看vip是否启动
[root@usvr-124 ha.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:50:56:89:a2:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.124/24 brd 192.168.3.255 scope global eth0
    inet 192.168.8.124/24 brd 192.168.8.255 scope global eth0:0
    inet6 fe80::250:56ff:fe89:a216/64 scope link 
       valid_lft forever preferred_lft forever
[root@usvr-124 ha.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:50:56:89:a2:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.124/24 brd 192.168.3.255 scope global eth0
    inet 192.168.8.124/24 brd 192.168.8.255 scope global eth0:0
    inet 192.168.3.233/24 brd 192.168.3.255 scope global secondary eth0
    inet6 fe80::250:56ff:fe89:a216/64 scope link 
       valid_lft forever preferred_lft forever
2.查看lvs表
[root@usvr-124 ha.d]# 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.3.233:80 wrr
  -> 192.168.8.128:80             Masq    1      0          0         
  -> 192.168.8.129:80             Masq    1      0          0
3.将web1端的nginx停掉,大约20秒,继续查看lvs表
[root@usvr-124 ha.d]# 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.3.233:80 wrr
  -> 192.168.8.129:80             Masq    1      0          0  
 
发现node1端192.168.8.128:80已经从lvs表中清楚,说明ldirectord起作用了。
4.将web1端的nginx重新启动,继续查看lvs表
[root@usvr-124 ha.d]# 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.3.233:80 wrr
  -> 192.168.8.128:80             Masq    1      0          0         
  -> 192.168.8.129:80             Masq    1      0          0 

发现node1又重新加入到lvs表中。
5.将web1,web2端的nginx全部停掉,继续查看lvs表
[root@usvr-124 nginx1.6]# 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.3.233:80 wrr
  -> 127.0.0.1:80                 Local   1      0          0  
当所有的lvs的realserver节点全部down掉,会有node1上的127.0.0.1:80启动,当访问vip时
curl 192.168.3.233/1.html 会出现“页面正在维护”,来提高用户体验。
6.若node1宕机,node2会接管vip
在node1上service heartbeat stop
在node2上查看ip
[root@usvr-126 ha.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:50:56:89:91:a0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.126/24 brd 192.168.3.255 scope global eth0
    inet 192.168.8.126/24 brd 192.168.8.255 scope global eth0:0
    inet 192.168.3.233/24 brd 192.168.3.255 scope global secondary eth0
    inet6 fe80::250:56ff:fe89:91a0/64 scope link 
       valid_lft forever preferred_lft forever
7.在node2上查看lvs表
[root@usvr-126 ha.d]# 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.3.233:80 wrr
  -> 192.168.8.128:80             Masq    1      0          0         
  -> 192.168.8.129:80             Masq    1      0          0  

总结:
1.node1和node2上lvs不会同时运行,当vip在node1上时,lvs在node2上是停止的;当vip在node2上时,lvs在node1上是停止的。
2.ldirectord不必非配对使用,我们也可以单独使用来管理lvs,也就是说在heartbeat资源文件中不用加入ldirectord
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2015-01-06 23:20:57  
系统运维 最新文章
linux新进程的创建
Muduo网络库源码分析(一)EventLoop事件循
Linux系统分区
haproxylvsnginx负载均衡的比较
PeopleSoft介绍
win7+iis7+asp+.net+php环境配置
执行系统命令并且将输出写到指定日志文件的
linux批量替换多个文件中的字符串
makefile中=、:=和+=的区别
Linux服务器不关机新增硬盘的方法
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年8日历
2018-8-15 20:30:46
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --