linux学习记录
分类:
2010-11-25 17:25:55
高可用定义了三种资源限制条件:
位置location:定义资源可以、不可以或首选在哪些节点上运行;
顺序order:定义操作的顺序;
协同colocation:告诉群集资源可以或不可以在某个节点上一起运行。
location和colocation都可以设置分值,HA是通过分数来决定某资源应当运行在哪个节点上的。
各节点上资源分数的计算方法为node+resource+(failure)
node为节点自身的分数;
resource为每一个资源的初始分数(resource-stickiness),一般为正数,默认为0;
failure为每一个资源在失败之后所减掉的分数(resource-failure-stickiness),一般为负数,默认为0。
以下通过举例说明。
例1. 假设给资源resource_fs配置分数如下:
resource_stickiness=300
resource_failure_stickiness=-600
standard-1上的rsc_location=1000
standard-2上的rsc_location=500
在最开始,两节点都没有开始运行这个资源,资源本身没有分数,那么仅仅计算节点的分数
standard-1的分数1000=1000
standard-2的分数500=500
会做出选择在standard-1上面运行resource_fs这个资源,由于有资源自身的分数加入了,此时
standard-1的分数1000+300=1300
standard-2的分数500+0=500
过了一段时间,假设resource_fs这个资源crash或者其他问题,分数马上会发生变化
standard-1的分数1000+300+(-600)=700
standard-2的分数500+0=500
由于standard-1节点的分数还是比standard-2的高,那么资源不发生迁移,而是执行restart操作。
例2. 假设给资源resource_fs配置分数如下:
resource_stickiness=300
resource_failure_stickiness=-1000
standard-1上的rsc_location=1000
standard-2上的rsc_location=500
在最开始,两节点都没有开始运行这个资源,资源本身没有分数,那么仅仅计算节点的分数
standard-1的分数1000=1000
standard-2的分数500=500
会做出选择在standard-1上面运行resource_fs这个资源,由于有资源自身的分数加入了,此时
standard-1的分数1000+300=1300
standard-2的分数500+0=500
过了一段时间,假设resource_fs这个资源crash或者其他问题,分数马上会发生变化
standard-1的分数1000+300+(-1000)=300
standard-2的分数500+0=500
由于standard-1节点的分数小于standard-2,那么资源要迁移到standard-2,此时分数
standard-1的分数1000+0+(-1000)=0
standard-2的分数500+300=800
例3. 资源resource_fs重启失败
resource_stickiness=300
resource_failure_stickiness=-600
standard-1上的rsc_location=1000
standard-2上的rsc_location=500
在最开始,两节点都没有开始运行这个资源,资源本身没有分数,那么仅仅计算节点的分数
standard-1的分数1000=1000
standard-2的分数500=500
会做出选择在standard-1上面运行resource_fs这个资源,由于有资源自身的分数加入了,此时
standard-1的分数1000+300=1300
standard-2的分数500+0=500
过了一段时间,假设resource_fs这个资源crash或者其他问题,分数马上会发生变化
standard-1的分数1000+300+(-600)=700
standard-2的分数500+0=500
由于standard-1节点的分数还是比standard-2的高,那么资源不发生迁移,而是执行restart操作,重启失败,分数发生变化
standard-1的分数1000+0+(-INFINITY)=-INFINITY
standard-2的分数500+0=500
由于standard-1节点的分数小于standard-2,那么资源要迁移到standard-2,此时分数
standard-1的分数1000+0+(-INFINITY)=-INFINITY
standard-2的分数500+300=800
例4. location和colocation组合使用
resource_stickiness=300
resource_failure_stickiness=-600
resource_fs在standard-1上的rsc_location=1000
resource_fs在standard-2上的rsc_location=500
resource_ip1在standard-1上的rsc_location=500
resource_ip1在standard-2上的rsc_location=1000
在最开始,两节点都没有开始运行resource_fs,资源本身没有分数,那么仅仅计算节点的分数。
standard-1的分数1000=1000
standard-2的分数500=500
会做出选择在standard-1上面运行resource_fs这个资源,由于有资源自身的分数加入了,此时
standard-1的分数1000+300=1300
standard-2的分数500+0=500
此时resource_fs运行在standard-1上,因此resource_ip1的分数如下
standard-1的分数500+888=1388
standard-2的分数1000=1000
由于resource_ip1在standard-1节点的分数比standard-2的高,那么资源将在standard-1上启动,分数发生变化
standard-1的分数500+300+888=1688
standard-2的分数1000=1000
例5. location和colocation组合使用
resource_stickiness=300
resource_failure_stickiness=-600
resource_fs在standard-1上的rsc_location=1000
resource_fs在standard-2上的rsc_location=500
resource_ip1在standard-1上的rsc_location=500
resource_ip1在standard-2上的rsc_location=1000
在最开始,两节点都没有开始运行resource_fs,资源本身没有分数,那么仅仅计算节点的分数。
standard-1的分数1000=1000
standard-2的分数500=500
会做出选择在standard-1上面运行resource_fs这个资源,由于有资源自身的分数加入了,此时
standard-1的分数1000+300=1300
standard-2的分数500+0=500
此时resource_fs运行在standard-1上,因此resource_ip1的分数如下
standard-1的分数500+222=722
standard-2的分数1000=1000
由于resource_ip1在standard-2节点的分数比standard-1的高,那么资源将在standard-2上启动,分数发生变化
standard-1的分数500+222=722
standard-2的分数1000+300=1300
heartbeat还有一个规则,如果节点的分数为负分,那么不管什么情况发生,该节点都不会接管资源(冷备节点)。
总的来说,随着资源的各种状态的发生,在各节点上面的分数就会发生变化,随着分数的变化,一旦某节点的分数大于当前运行该资源的节点的分数之后,HA就会做出切换动作,现在运行该资源的节点将释放资源,分数高出的节点将接管该资源。