天天看點

測試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,如需轉載請自行聯系原作者

繼續閱讀