天天看点

测试配置keepalived,lvs和realserver

测试配置keepalived,lvs和realserver

有2块地方要注意:

1)keepalived的配置,分成global,vrrp,lvs

2)realserver上启用vip的脚本

<code>测试配置keepalived_lvs_realserver</code>

<code>一、需求</code>

<code>配置1个vip对应4个real server</code>

<code>vip: 10.0.205.100</code>

<code>dip_master: 10.0.200.21</code>

<code>dip_backup: 10.0.200.22</code>

<code>rip: 10.0.205.2-5</code>

<code>二、配置几个realserver的vip</code>

<code>控制脚本:</code>

<code>[root@svr200-21 salt]</code><code># cat lvs/bin/lvs-realsvr.sh </code>

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

<code># </code>

<code># 2015/2/28</code>

<code># lvs real server</code>

<code>#</code>

<code># chkconfig:   - 85 15</code>

<code># description:  control vip on lvs realserver </code>

<code># Source function library.</code>

<code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>

<code># Source networking configuration.</code>

<code>. </code><code>/etc/sysconfig/network</code>

<code># Check that networking is up.</code>

<code>[ </code><code>"$NETWORKING"</code> <code>= </code><code>"no"</code> <code>] &amp;&amp; </code><code>exit</code> <code>0</code>

<code>lockfile=</code><code>"/var/lock/subsys/lvs-real"</code>

<code>  </code> 

<code>s_vip=</code><code>'10.0.205.100'</code>

<code>start() {</code>

<code>  </code><code>ifconfig</code> <code>lo:1 ${s_vip} netmask 255.255.255.255 broadcast ${s_vip}</code>

<code>  </code><code>echo</code> <code>1 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>

<code>  </code><code>echo</code> <code>2 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>

<code>  </code><code>echo</code> <code>1 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>  </code><code>echo</code> <code>2 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>  </code><code>retval=$?</code>

<code>  </code><code>echo</code>

<code>  </code><code>[ $retval -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>touch</code> <code>$lockfile</code>

<code>  </code><code>return</code> <code>$retval</code>

<code>}</code>

<code>stop() {</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>

<code>  </code><code>echo</code> <code>0 &gt;</code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>

<code>  </code><code>ifconfig</code> <code>lo:1 down</code>

<code>  </code><code>[ $retval -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>rm</code> <code>-f $lockfile</code>

<code>status() {</code>

<code>  </code><code>ip a |</code><code>grep</code> <code>inet |</code><code>grep</code> <code>-</code><code>v</code> <code>inet6  </code>

<code>case</code> <code>$1 </code><code>in</code>  

<code>  </code><code>start)</code>

<code>    </code><code>start</code>

<code>    </code><code>status</code>

<code>    </code><code>;;</code>

<code>  </code><code>stop)</code>

<code>    </code><code>stop</code>

<code>  </code><code>status)</code>

<code>  </code><code>*)  </code>

<code>    </code><code>echo</code> <code>$</code><code>"Usage: $0 {start|stop|status}"</code>

<code>    </code><code>exit</code> <code>2 </code>

<code>esac</code>  

<code>在几个rip主机上start脚本,即可启用vip。</code>

<code>三、配置keepalived服务</code>

<code>【director-master】</code>

<code>安装服务:</code>

<code>[root@svr200-21 ~]</code><code># yum -y install ipvsadm keepalived</code>

<code>[root@svr200-21 keepalived]</code><code># pwd</code>

<code>/etc/keepalived</code>

<code>[root@svr200-21 keepalived]</code><code># cp -a keepalived.conf  keepalived.conf.old</code>

<code>配置文件:</code>

<code>[root@svr200-21 keepalived]</code><code># cat keepalived.conf</code>

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

<code>global_defs {</code>

<code>   </code><code>notification_email {</code>

<code>     </code><code>root@localhost</code>

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

<code>   </code><code>notification_email_from root@localhost</code>

<code>   </code><code>smtp_server 127.0.0.1</code>

<code>   </code><code>smtp_connect_timeout 30</code>

<code>   </code><code>router_id LVS_200_21</code>

<code>vrrp_instance VIP_test1 {</code>

<code>    </code><code>state MASTER            </code><code># MASTER or BACKUP,大写</code>

<code>    </code><code>interface eth0          </code><code># 对外服务的端口</code>

<code>    </code><code>virtual_router_id 205   </code><code># 虚拟路由器id</code>

<code>    </code><code>priority 100            </code><code># 数值大则优先级高</code>

<code>    </code><code>advert_int 1            </code><code># 同步时间间隔</code>

<code>    </code><code>authentication {</code>

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

<code>      </code><code>auth_pass 654321</code>

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

<code>    </code><code>virtual_ipaddress {</code>

<code>      </code><code>10.0.205.100</code>

<code>virtual_server 10.0.205.100 80 {</code>

<code>    </code><code>delay_loop 6              </code><code># 健康检查时间间隔</code>

<code>    </code><code>lb_algo wrr                </code><code># 调度算法:rr | wrr | lc | wlc | lblc | sh | dh</code>

<code>    </code><code>lb_kind DR                </code><code># 转发规则:NAT | DR | TUN</code>

<code>    </code><code>#persistence_timeout 50   # 会话保持时间</code>

<code>    </code><code>protocol TCP</code>

<code>    </code><code># genhash -s rip -p port -u url</code>

<code>    </code><code># genhash -s 10.0.205.2 -p 80 -u /index.html</code>

<code>    </code><code>real_server 10.0.205.2 80 {</code>

<code>      </code><code>weight 1</code>

<code>      </code><code>HTTP_GET {                  </code><code># HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK</code>

<code>        </code><code>url {</code>

<code>          </code><code>path </code><code>/index</code><code>.html</code>

<code>          </code><code>digest e93e7f6cfbc7c343707f21e2f681dd31</code>

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

<code>        </code><code>connect_timeout 3         </code><code># 连接超时时间,秒</code>

<code>        </code><code>nb_get_retry 3            </code><code># 失败重试次数,超过后移除</code>

<code>        </code><code>delay_before_retry 3      </code><code># 失败重试间隔,秒</code>

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

<code>    </code><code>real_server 10.0.205.3 80 {</code>

<code>          </code><code>digest b8682521d6c7a01d370ebad57ad6981f </code>

<code>    </code><code>real_server 10.0.205.4 80 {</code>

<code>          </code><code>digest 93c5e661950fabd0bfda085a513cdb7a</code>

<code>    </code><code>real_server 10.0.205.5 80 {</code>

<code>          </code><code>digest e63f0e81e7a2fddb2d32d83aacbe8472</code>

<code>【director-backup】</code>

<code>[root@svr200-21 keepalived]</code><code># diff keepalived.conf  backup/keepalived.conf </code>

<code>10c10</code>

<code>&lt;    router_id LVS_200_21</code>

<code>---</code>

<code>&gt;    router_id LVS_200_22</code>

<code>14c14</code>

<code>&lt;     state MASTER            </code><code># MASTER or BACKUP,大写</code>

<code>&gt;     state BACKUP            </code><code># MASTER or BACKUP,大写</code>

<code>17c17</code>

<code>&lt;     priority 100            </code><code># 数值大则优先级高</code>

<code>&gt;     priority 50             </code><code># 数值大则优先级高</code>

<code>四、启动服务</code>

<code>[root@svr200-21 keepalived]</code><code># service keepalived start</code>

<code>Starting keepalived:                                       [  OK  ]</code>

<code>[root@svr200-21 keepalived]</code><code># tail -f /var/log/messages</code>

<code>Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker </code><code>for</code> <code>service [10.0.205.2]:80</code>

<code>Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker </code><code>for</code> <code>service [10.0.205.3]:80</code>

<code>Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker </code><code>for</code> <code>service [10.0.205.4]:80</code>

<code>Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker </code><code>for</code> <code>service [10.0.205.5]:80</code>

<code>Feb 28 16:37:03 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Transition to MASTER STATE</code>

<code>Feb 28 16:37:04 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Entering MASTER STATE</code>

<code>Feb 28 16:37:04 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) setting protocol VIPs.</code>

<code>Feb 28 16:37:04 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Sending gratuitous ARPs on eth0 </code><code>for</code> <code>10.0.205.100</code>

<code>Feb 28 16:37:04 server200-21 Keepalived_healthcheckers[23679]: Netlink reflector reports IP 10.0.205.100 added</code>

<code>Feb 28 16:37:09 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Sending gratuitous ARPs on eth0 </code><code>for</code> <code>10.0.205.100</code>

<code>   </code> 

<code>查看lvs:</code>

<code>[root@svr200-21 keepalived]</code><code># ipvsadm -Ln               </code>

<code>IP Virtual Server version 1.2.1 (size=4096)</code>

<code>Prot LocalAddress:Port Scheduler Flags</code>

<code>  </code><code>-&gt; RemoteAddress:Port           Forward Weight ActiveConn InActConn</code>

<code>TCP  10.0.205.100:80 wrr</code>

<code>  </code><code>-&gt; 10.0.205.2:80                Route   1      3          0         </code>

<code>  </code><code>-&gt; 10.0.205.3:80                Route   1      1          0         </code>

<code>  </code><code>-&gt; 10.0.205.4:80                Route   1      2          0         </code>

<code>  </code><code>-&gt; 10.0.205.5:80                Route   1      2          0    </code>

<code>访问网站:</code>

<code>http:</code><code>//10</code><code>.0.205.100</code>

<code>得到:</code>

<code>--------------------------</code>

<code>HOST: svr205-5 </code>

<code>lo: 127.0.0.1 </code>

<code>eth0: 10.0.205.5 </code>

<code>停止了svr205-5 上的的nginx服务后:</code>

<code>Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: Error connecting server [10.0.205.5]:80.</code>

<code>Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: Removing service [10.0.205.5]:80 from VS [10.0.205.100]:80</code>

<code>Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: Remote SMTP server [127.0.0.1]:25 connected.</code>

<code>Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: SMTP alert successfully sent.</code>

<code>HOST: svr205-4 </code>

<code>eth0: 10.0.205.4 </code>

<code>[root@svr200-21 keepalived]</code><code># ipvsadm -Ln</code>

<code>  </code><code>-&gt; 10.0.205.2:80                Route   1      0          0         </code>

<code>  </code><code>-&gt; 10.0.205.3:80                Route   1      2          0         </code>

<code>  </code><code>-&gt; 10.0.205.4:80                Route   1      3          0  </code>

<code>再次启动svr205-5 上的的nginx服务</code>

<code>Feb 28 16:42:50 server200-21 Keepalived_healthcheckers[23679]: MD5 digest success to [10.0.205.5]:80 url(1).</code>

<code>Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: Remote Web server [10.0.205.5]:80 succeed on service.</code>

<code>Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: Adding service [10.0.205.5]:80 to VS [10.0.205.100]:80</code>

<code>Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: Remote SMTP server [127.0.0.1]:25 connected.</code>

<code>Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: SMTP alert successfully sent.</code>

<code>查看lvs:  </code>

<code>  </code><code>-&gt; 10.0.205.4:80                Route   1      3          0         </code>

<code>  </code><code>-&gt; 10.0.205.5:80                Route   1      3          0</code>

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

继续阅读