天天看点

测试keepalived备备模式

测试keepalived备备模式

<code>一、需求:应用需要做HA,配置一个vip作为入口,心跳监测服务。使用backup</code><code>/backup</code><code>模式通过优先级和track脚本来控制主备</code>

<code>1)分布</code>

<code>主:10.0.200.88,状态:backup,优先级85</code>

<code>备:10.0.200.89,状态:backup,优先级75</code>

<code>vip:10.0.200.90</code>

<code>2)配置文件举例【主】:</code>

<code>[root@200-80 keepalived]</code><code># pwd</code>

<code>/etc/keepalived</code>

<code>[root@200-80 keepalived]</code><code># ls</code>

<code>backup  bin  keepalived.conf  old</code>

<code>[root@200-80 keepalived]</code><code># cat keepalived.conf </code>

<code># Role: master</code>

<code>! Configuration File </code><code>for</code> <code>keepalived</code>

<code>global_defs {</code>

<code> </code><code>router_id LVS_200_88                             </code><code># LVS_RealIP第3位_RealIP第4位,备机也是同理</code>

<code>}</code>

<code>vrrp_script CHK_REDIS {</code>

<code>  </code><code>script </code><code>"/etc/keepalived/bin/chk_redis.sh"</code>

<code>  </code><code>interval 3</code>

<code>  </code><code>weight -20</code>

<code>vrrp_instance VIP_REDIS_90 {                      </code><code># VIP_服务代号_vip的第4位</code>

<code>  </code><code>state BACKUP                                    </code><code># 备机用:BACKUP,或者主备都BACKUP,通过优先级控制</code>

<code>  </code><code>interface em2                                   </code><code># 指定网卡</code>

<code>  </code><code>virtual_router_id 90                            </code><code># id采用vip的第4位</code>

<code>  </code><code>priority 85                                     </code><code># 优先级,默认主=85,备=75</code>

<code>  </code><code>nopreempt                                       </code><code># 优先级高的那台设置,表明恢复后,不会和BACKUP抢</code>

<code>  </code><code>advert_int 1                                    </code><code># 通告vrrp的间隔时间</code>

<code>  </code><code>authentication {                                </code><code># 主备机的密码要一致</code>

<code>    </code><code>auth_type PASS</code>

<code>    </code><code>auth_pass 1111</code>

<code>  </code><code>}</code>

<code>  </code><code>virtual_ipaddress {                             </code><code># vip写到这里,可以每行一个</code>

<code>    </code><code>10.0.200.90</code>

<code>  </code><code>track_script {</code>

<code>    </code><code>CHK_REDIS</code>

<code>和备机的配置区别如下:</code>

<code>[root@200-80 keepalived]</code><code># diff keepalived.conf backup/keepalived.conf </code>

<code>1c1</code>

<code>&lt; </code><code># Role: master</code>

<code>---</code>

<code>&gt; </code><code># Role: backup</code>

<code>5c5</code>

<code>&lt;  router_id LVS_200_88                             </code><code># LVS_RealIP第3位_RealIP第4位,备机也是同理</code>

<code>&gt;  router_id LVS_200_89                             </code><code># LVS_RealIP第3位_RealIP第4位,备机也是同理</code>

<code>18,19c18,19</code>

<code>&lt;   priority 85                                     </code><code># 优先级,默认主=85,备=75</code>

<code>&lt;   nopreempt                                       </code><code># 优先级高的那台设置,表明恢复后,不会和BACKUP抢</code>

<code>&gt;   priority 75                                     </code><code># 优先级,默认主=85,备=75</code>

<code>&gt;   </code><code>#nopreempt                                       # 在优先级高的那台设置,表明恢复后,不会和BACKUP抢</code>

<code>3)监测服务的脚本,此处以redis服务为例:</code>

<code>[root@200-80 keepalived]</code><code># cat bin/chk_redis.sh </code>

<code>#!/bin/bash</code>

<code># </code>

<code>c=$(</code><code>ps</code> <code>-ef |</code><code>grep</code> <code>'redis-server \*:6379'</code> <code>|</code><code>wc</code> <code>-l)</code>

<code>echo</code> <code>"`date` ---Check HA: start---"</code> <code>&gt;</code><code>/tmp/test_redis_ha</code><code>.log</code>

<code>echo</code> <code>"redis_6379 process count: $c"</code> <code>&gt;&gt;</code><code>/tmp/test_redis_ha</code><code>.log</code>

<code>if</code> <code>[ $c -gt 0 ]; </code><code>then</code>

<code>  </code><code>retval=0</code>

<code>else</code>

<code>  </code><code>retval=1</code>

<code>fi</code>

<code>echo</code> <code>"return: $retval"</code> <code>&gt;&gt;</code><code>/tmp/test_redis_ha</code><code>.log</code>

<code>echo</code> <code>"`date` ---Check HA: end---"</code> <code>&gt;&gt;</code><code>/tmp/test_redis_ha</code><code>.log</code>

<code>exit</code> <code>$retval</code>

<code>注1:virtual_router_id是唯一的,使用前请在局域网抓包看看</code>

<code>tcpdump -i em2 -nn vrrp</code>

<code>注2:记得给脚本加上x权限喔,否则无法执行,则表示script执行失败,进而影响到优先级。</code>

<code>二、防火墙放行vrrp协议</code>

<code>因为iptables过滤了vrrp协议,它不属于任何端口,像icmp一样,需要单独放行。</code>

<code>-A INPUT -p vrrp -j ACCEPT</code>

<code>例如,在上面的配置文件中,增加到rc.firewall.txt中,icmp那条策略后</code>

<code>-A INPUT -p icmp -j ACCEPT</code>

<code>-A INPUT -p vrrp -j ACCEPT   &lt;-  这是增加的一条策略</code>

<code>-A INPUT -i lo -j ACCEPT </code>

<code>【具体操作】在主备机器上都要操作。</code>

<code>检查当前生效的策略:</code>

<code>iptables -nL</code>

<code>保存:</code>

<code>iptables-save &gt;rc.firewall.txt</code>

<code>修改</code>

<code>sed</code> <code>-i </code><code>'/-A INPUT -p icmp -j ACCEPT /a\-A INPUT -p vrrp -j ACCEPT'</code> <code>rc.firewall.txt</code>

<code>应用新策略:</code>

<code>iptables-restore </code><code>/root/rc</code><code>.firewall.txt </code>

<code>确认无误后保存</code>

<code>service iptables save</code>

本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1657604,如需转载请自行联系原作者

继续阅读