扩展知识四

搭建负载均衡服务器中director的高可用(IPVS),此方法并不能对realserver进行健康状态检查,对于后端realserver故障,director并不知道,并继续进行转发请求造成问题。

前提条件:(多节点使用相同配置)

1、关闭路由器

2、关闭selinux

3、关闭开机启动ipvsadm服务

4、时间同步

5、ssh互信

6、DNS解析

7、事先定义好ipvsadm策略

具体步骤:

1、安装ipvsadm软件包

2、创建dr模型,并将realserver添加进去

[root@node2.dtedu.com ~]# ifconfig eth0:1 add  192.168.1.16 netmask 255.255.255.0


[root@node2.dtedu.com ~]# ipvsadm -A -t 192.168.1.16:80 -s rr

[root@node2.dtedu.com ~]# ipvsadm -a -t 192.168.1.16:80 -r 10.40.0.45 -g

[root@node2.dtedu.com ~]# ipvsadm -a -t 192.168.1.16:80 -r 10.40.0.44 -g

[root@node2.dtedu.com ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.16:80 rr

  -> 10.40.0.44:80                Route   1      0          0         

  -> 10.40.0.45:80                Route   1      0          0         

3、将配置文件同步到其他节点上

[root@node2.dtedu.com ~]# scp /etc/sysconfig/ipvsadm node3:/etc/sysconfig/ipvsadm

ipvsadm                                       100%  122     0.1KB/s   00:00    

[root@node2.dtedu.com ~]# 


4、关闭开机启动服务

[root@node2.dtedu.com ~]# chkconfig ipvsadm --list

ipvsadm        0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭


集群理论讲解(续二)_集群

集群理论讲解(续二)_集群_02

扩展知识五

针对realserver进行健康状态检查。

1、ping检查

2、http服务的curl检查

3、ldirectord,针对ipvs的监控工具,实际是一个heartbeat的模块,可以自动生成vip、健康检查

1、安装heartbeat-ldirectord-2.1.4.rpm包。yum安装以解决依赖关系

[root@node2.dtedu.com ~]# yum localinstall heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm 


查看安装文件明细。

[root@node2.dtedu.com ~]# rpm -ql heartbeat-ldirectord

/etc/ha.d/resource.d/ldirectord配置脚本

/etc/init.d/ldirectord服务启动脚本

/etc/logrotate.d/ldirectord日志文件

/usr/sbin/ldirectord执行命令

/usr/share/doc/heartbeat-ldirectord-2.1.4

/usr/share/doc/heartbeat-ldirectord-2.1.4/COPYING

/usr/share/doc/heartbeat-ldirectord-2.1.4/README

/usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf配置脚本模板

/usr/share/man/man8/ldirectord.8.gz帮助文档


2、配置文件介绍

# Global Directives

checktimeout=3设置检测超时时间

checkinterval=1设置检测时间间隔

#fallback=127.0.0.1:80

autoreload=yes设置自动重新加载修改后配置文件

#logfile="/var/log/ldirectord.log”指定日志文件位置(二选一)

#logfile=“local0"指定日志文件位置(二选一),此为系统日志文件/var/log/message

#emailalert="admin@x.y.z”指定邮件接收者

#emailalertfreq=3600

#emailalertstatus=all通知级别

quiescent=no静默模式工作,建议改成no


# Sample for an http virtual service

virtual=192.168.6.240:80虚拟服务,就是vip了

        real=192.168.6.2:80 gate 2realserver服务器的ip地址,gate是dr模型,masq是nat模型,gate后面定义权重。

        real=192.168.6.3:80 gate 4

        real=192.168.6.6:80 gate

        fallback=127.0.0.1:80 gate

        service=http对checktype的检查说明,同negotiate配合使用,用来协商说明具体那种类型的服务,常见的有dns、ftp、http、imap、imaps、ldap、mysql、pop、redius、smtp等。

        request=“index.html”用来定义realserver是否存在的健康检查网页

        receive="Test Page”检查匹配内容

        virtualhost=some.domain.com.au

        scheduler=rr调度算法

        #persistent=600持久链接时间

        #netmask=255.255.255.255

        protocol=tcpipvs使用的协议。

        checktype=negotiate健康状态检查方式:negotiate(协商),connect(检查是否能够连接),external(调用自己写的脚本),checktimeout(超时时间检查),off,on,ping

        checkport=80

        request="index.html"

        receive="Test Page"

        virtualhost=www.x.y.z


搭建环境要求:ipvs的director实现高可用,并且当realserver不可用时,可以实现健康状态检查,并从ipvs表中关闭故障realserver,如果没有realserver可用的情况下,实现director可以发送网页故障之类的提示信息,并可以实现故障恢复后自动切换。

定义director1和director2的网卡

[root@node2.dtedu.com ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:9A:C8:A6  

          inet addr:10.40.0.225  Bcast:10.40.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe9a:c8a6/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:12255 errors:0 dropped:0 overruns:0 frame:0

          TX packets:463 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:789505 (771.0 KiB)  TX bytes:79766 (77.8 KiB)

          Interrupt:19 Base address:0x2000 


eth1      Link encap:Ethernet  HWaddr 00:0C:29:9A:C8:B0  

          inet addr:192.168.1.22  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe9a:c8b0/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1049 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1044 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:86326 (84.3 KiB)  TX bytes:68831 (67.2 KiB)

          Interrupt:19 Base address:0x2080 


eth0      Link encap:Ethernet  HWaddr 00:0C:29:FA:4C:6E  

          inet addr:10.40.0.226  Bcast:10.40.0.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:10953 errors:0 dropped:0 overruns:0 frame:0

          TX packets:487 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:694698 (678.4 KiB)  TX bytes:24157 (23.5 KiB)

          Interrupt:19 Base address:0x2000 


eth1      Link encap:Ethernet  HWaddr 00:0C:29:FA:4C:78  

          inet addr:192.168.1.23  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1176 errors:0 dropped:0 overruns:0 frame:0

          TX packets:413 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:72322 (70.6 KiB)  TX bytes:18582 (18.1 KiB)

          Interrupt:19 Base address:0x2080 


安装ipvsadm软件包。

[root@node2.dtedu.com ~]# rpm -ql ipvsadm

/etc/rc.d/init.d/ipvsadm

/etc/sysconfig/ipvsadm-config

/sbin/ipvsadm

/sbin/ipvsadm-restore

/sbin/ipvsadm-save

/usr/share/doc/ipvsadm-1.26

/usr/share/doc/ipvsadm-1.26/README

/usr/share/man/man8/ipvsadm-restore.8.gz

/usr/share/man/man8/ipvsadm-save.8.gz

/usr/share/man/man8/ipvsadm.8.gz


创建director的httpd服务,并创建报错网页,复制一份到其他direcotr上,主机间的dns识别,ssh互信

[root@node2.dtedu.com ~]# vi /var/www/html/index.html

[root@node2.dtedu.com ~]# scp /var/www/html/index.html  10.40.0.226:/var/www/html/

[root@node3.dtedu.com ~]# ssh-copy-id 10.40.0.225

[root@node2.dtedu.com ~]# service httpd start

Starting httpd:                                            [  OK  ]

[root@node2.dtedu.com ~]# curl 10.40.0.225

<h1>东田教育网站维护中</h1>





配置ldirectord的配置文件,从/usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf复制到/etc/ha.d/目录下。

checktimeout=3

checkinterval=1

autoreload=yes

logfile="/var/log/ldirectord.log"

emailalert="gongbing_shenlan@163.com"

emailalertfreq=3600

emailalertstatus=all

quiescent=no

virtual=10.40.0.223:80

real=192.168.1.30:80 gate

real=192.168.1.31:80 gate

real=192.168.1.32:80 gate

 fallback=127.0.0.1:80 gate

service=http

request=“.test.html"

receive="Test Page"

virtualhost=10.40.0.223

scheduler=rr

#persistent=600

#netmask=255.255.255.255

protocol=tcp

  checktype=negotiate

  checkport=80

 #request="index.html"

 #receive="Test Page"

 #virtualhost=www.x.y.z

crm界面配置截图:

集群理论讲解(续二)_集群_03集群理论讲解(续二)_集群_04

集群理论讲解(续二)_集群_05

配置realserver服务器:

[root@node1.dtedu.com~]$ifconfig  eth0 192.168.1.30 netmask 255.255.255.0

[root@node1.dtedu.com~]$route add default gw 192.168.1.1


[root@node1.dtedu.com~]$echo  1 > /proc/sys/net/ipv4/conf/all/arp_ignore 

[root@node1.dtedu.com~]$echo  1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 

[root@node1.dtedu.com~]$echo  2 > /proc/sys/net/ipv4/conf/all/arp_announce 

[root@node1.dtedu.com~]$echo  2 > /proc/sys/net/ipv4/conf/lo/arp_announce 

[root@node1.dtedu.com~]$ifconfig lo:0 10.40.0.223 broadcast 10.40.0.223 netmask 255.255.255.255

[root@node1.dtedu.com~]$route add -host 10.40.0.223 dev lo:0

[root@node1.dtedu.com~]$route 

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.40.0.223     *               255.255.255.255 UH    0      0        0 lo

192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

[root@node1.dtedu.com~]$ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:8E:E0:1F  

          inet addr:192.168.1.30  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe8e:e01f/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:5918 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1827 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:432617 (422.4 KiB)  TX bytes:305614 (298.4 KiB)

          Interrupt:19 Base address:0x2000 


lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)


lo:0      Link encap:Local Loopback  

          inet addr:10.40.0.223  Mask:255.255.255.255

          UP LOOPBACK RUNNING  MTU:65536  Metric:1


创建用于director服务器监控realserver服务器监控状况的页面文件,需要自己定义网页名称和内容,要和ldirecotrd.cf中的require,receive一致。

realserver端:

[root@node1.dtedu.com~]$vi /var/www/html/.test.html


director端:

virtual=10.40.0.223:80

        real=192.168.1.30:80 gate

        real=192.168.1.31:80 gate

        real=192.168.1.32:80 gate

        fallback=127.0.0.1:80 gate

        service=http

        request=".test.html"

        receive="Test Page"

        virtualhost=10.40.0.223

        scheduler=rr

        #persistent=600

        #netmask=255.255.255.255

        protocol=tcp

        checktype=negotiate

        checkport=80


director端显示realserver连接情况,quiescent=0将故障realserver从ipvsadm列表中删除。

[root@node6.dtedu.com ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.40.0.223:80 rr

  -> 192.168.1.30:80              Route   1      0          0         


参考文献:

LDIRECTORD介绍

回顾:

高可用应用程序:

heartbeat

corosync

rhcs

keepalived

资源管理器:

heartbeat v1:haresources

信息和成员层:/etc/ha.d/ha.cf

资源管理器层:/etc/ha.d/haresources

heartbeat v2:crm

信息和成员层:/etc/ha.d/ha.cf

资源管理器层:/var/lib/heartbeat/crm/cib.xml

heartbeat v3:pacemaker

rhcs cman:rgmanager

资源代理(RA)

安装类别分:

heartbeat v1 legacy

ocf

heartbeat

pacemaker

linbit

redhat

lsb

stonith

策略引擎(PE):全局管理者

资源管理器的功能

资源约束:

location:资源对节点的偏好

colocation:资源运行在同一个节点的可能性

order:资源间启动顺序

资源的属性:

failover:资源故障跳转到其他节点

failback:故障资源节点恢复后是否回来

心跳信息传递

ucast:单播

mcast:多播,组播

bcast:广播

HA配置界面:

命令行界面:

crmsh:redhat6.3之前

pcs:redhat6.3之后

图形化界面:

hawk

pcs

conga

lcmc

hb_gui

pyGui

多节点间配置文件同步工具:

RHCS:ccs(红帽6中废弃了,取代者是ricci)


centos6.5实现高可用的方式:

1、corosync+pacemaker

2、heartbearv3+pacemaker

3、cman+rgmanager

4、cman+pacemaker

corosync有取代heartbeat的趋势,corosync从openais分类,已经发展到了2.0版本,目前corosync经常和pacemaker结合起来使用,pacemaker实现资源管理器的功能。另一种结合就是corosync+cman的方式,这种结合cman实现的功能就是高可用中的dc功能(选举功能),而cman的资源管理器是rgmanager。