一、实验拓扑如下图
二、实验说明
在这个实验中是基于corosync和ldirectord实现LVS—DR中的Director的高可用,主要演示realserver为WEb服务器的场景。具体实验需要的软件及IP配置如上图所示。
三、实验准备和RealServer的配置
请参照 http://sxhxt.blog.51cto.com/5126000/954545中的实验准备和实验步骤中的RealServer配置
四、实验步骤
配置Director
1、配置VIP(两台一样)
#ifconfig eth0:1 172.16.200.1 broadcast 172.16.200.1 netmask 255.255.255.255 up #route add -host 172.16.200.1 dev eth0:1
2、打开路由转发功能
#echo 1 > /proc/sys/net/ipv4/ip_forward
3、安装所有用到的包
heartbeat-libs-3.0.3-2.3.el5.i386.rpm pacemaker-cts-1.1.5-1.1.el5.i386.rpm cluster-glue-1.0.6-1.6.el5.i386.rpm pacemaker-libs-1.1.5-1.1.el5.i386.rpm cluster-glue-libs-1.0.6-1.6.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm corosync-1.2.7-1.1.el5.i386.rpm ldirectord-1.0.1-1.el5.i386.rpm resource-agents-1.0.4-1.1.el5.i386.rpm corosynclib-1.2.7-1.1.el5.i386.rpm libesmtp-1.0.4-5.el5.i386.rpm heartbeat-3.0.3-2.3.el5.i386.rpm pacemaker-1.1.5-1.1.el5.i386.rpm #yum -y --nogpgcheck localinstall *.rpm
4.配置文件(以下命令在Driector1上执行)
# cd /etc/corosync # cp corosync.conf.example corosync.conf # vim corosync.conf 添加如下内容 service { ver: 0 name: pacemaker # use_mgmtd: yes } aisexec { user: root group: root } 并设定此配置文件中 bindnetaddr后面的IP地址为你的网卡所在网络的网络地址 我们这里设定为 bindnetaddr:172.16.0.0 to_logfile: yes to_syslog: no //关闭系统日志文件 logfile: /var/log/cluster/corosync.log secauth: on //启用认证 # corosync-keygen //生成节点间的密钥文件 # scp -p corosync authkey node2:/etc/corosync/ //复制文件到Director2上 # mkdir /var/log/cluster //创建日志所用到的目录 # ssh node2 'mkdir /var/log/cluster'
5、启动服务并查看是否正常启动
# /etc/init.d/corosync start
查看corosync引擎是否正常启动
查看pacemaker是否正常启动
如果上面命令执行均没有问题,接着可以执行如下命令启动node2上的corosync
# ssh node2 -- /etc/init.d/corosync start # crm status //查看集群节点的启动状态
从上图中可以看出两个节点都已经正常启动,并且集群服务也处于正常的工作状态
6、配置集群的工作属性
修改忽略quorum不能满足的集群状态检查: # crm configure property no-quorum-policy=ignore 修改粘性值,所有粘性值就是更倾向于那个节点 # crm configure rsc_defaults resource-stickiness=100
corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默认配置目前尚不可用,这可以通过如下图所示名令查看
我们里可以通过如下命令先禁用stonith:
# crm configure property stonith-enabled=false 结果如下图所示:
7.配置ldirector
因为要在corosync中添加资源,所以应该把两台的ldirectord服务停止,并设置开机自动停止
#chkconfig ldirectord off #cp /usr/share/doc/ldirectord-1.0.1/ldirectord.cf /etc/ha.d/ #vim /etc/ha.d/ldirectord.cf 修改内容如下 virtual=172.16.200.1:80 real=172.16.26.1:80 gate real=172.16.26.2:80 gate protocol=tcp checktype=negotiate checkport=80 request=".test.html" receive="ok"
8.如何通过crm来查看集群
可以通过如下命令查看当前集群系统所支持的类型:
# crm ra classes heartbeat lsb ocf / heartbeat pacemaker stonith# crm ra list lsb
如果想要查看某种类别下的所用资源代理的列表,可以使用类似如下命令实现:
# crm ra list ocf heartbeat # crm ra list ocf pacemaker # crm ra list stonith
通过crm ra list lsb查看到ldirector如下图所示
通过crm ra list ocf查看到IPaddr如下图所示
9.添加资源
#crm crm(live)#configure 添加VIP
crm(live)configure#primitive vip ocf:heartbeat:IPaddr params ip=172.16.200.1 nic=eth0 broadcast=172.16.200.1 cidr_netmask=255.255.255.255 lvs_support=ture 添加ldirectord crm(live)configure#primitive ldir lsb:ldirectord crm(live)configure#commit
使用crm_mon -1查看状态,如下图
虽然资源定义成功了但是却运行在两个节点上,这就需要定义两个资源的约束关系了。
资源的约束有三种类型即
colocation 排列约束,定义资源在一起
order 顺序约束,定义资源启动的先后顺序
location 位置约束,定义资源更倾向于那个节点
资源定义如下
crm(live)configure#colocation ldir_with_vip inf: ldir vip //
crm(live)configure#order ldir_after_vip inf: vip ldir crm(live)configure#commit
资源定义后并成功运行在一个节点后,就可以在浏览器里输入VIP进行结果查看了。
转载于:https://blog.51cto.com/sxhxt/955061