热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

也不知怎么了LVS.SH找不到,网上搜了一篇环境搭配CENTOS下面的高可用参考

系统环境:************************************************************两台服务器都装了CentOS-5.2-x8

系统环境:

************************************************************

两台服务器都装了 CentOS-5.2-x86_64 系统

Virtual IP :          
         192.168.30.20 
            

Squid1+Real Server 1 :       网卡地址
(eth0):192.168.30.12     

Squid2+Real Server 2 :        网卡地址
(eth0):192.168.30.13   

************************************************************

 

软件列表
keepalived

http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

openssl-devel

 yum -y install openssl-devel

***************************************************************

 

 


配置:

配置基于高可用 keepalived, 确定 LVS 使用 DR 模式

 

 

1. 安装配置 keepalived

1.1 安装依赖软件 如果系统为基本文本安装,需要安装一下软件 

# yum -y install ipvsadm

# yum -y install kernel kernel-devel

# reboot   重启系统切换内核

# yum -y install
openssl-devel                             
;安装 keepalived 依赖软件

#ln -s /usr/src/kernels/`uname -r`-`uname -m`/ /usr/src/linux 
    

    ;建立内核链接,编译 keepalived 支持 lvs 时需要

注意建立链接的内核名和当前运行的内核一致,否则导致安装失败

#tar zxvf keepalived-1.1.17.tar.gz

#cd keepalived-1.1.17

#./configure  --prefix=/usr  --syscOnf=/etc

 

 

Keepalived configuration

------------------------

Keepalived version       : 1.1.17

Compiler          
       : gcc

Compiler flags           :
-g -O2

Extra
Lib               
: -lpopt -lssl -lcrypto

Use IPVS Framework       :
Yes                        
; 注意编译时一定要支持 lvs

IPVS sync daemon support : Yes

Use VRRP Framework       : Yes

Use
LinkWatch            : No

Use Debug flags          :
No              

#make

#make install

 

 

1.2 编辑 keepalived
配置文件

#Vi  /etc/keepalived/keepalived.conf

 

global_defs {

   notification_email {

     test@163.com

   }

   notification_email_from root@localhost

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

    state MASTER         #
备份服务器上将 MASTER 改为 BACKUP 

    interface
eth0           # HA 监测网络接口

    virtual_router_id 51     # 主、备机的
virtual_router_id 必须相同

    priority
100           #
主、备机取不同的优先级,主机值较大,备份机值较小

   
advert_int 2        #
VRRP Multicast 广播周期秒数

    authentication {

        auth_type
PASS         #VRRP 认证方式

        auth_pass
1111          #VRRP 口令字

    }

    virtual_ipaddress {

       
192.168.30.20          
    # VRRP HA 虚拟地址 如果有多个VIP,继续换行填写

    }

}

 

virtual_server 192.168.30.20 80 {

    delay_loop
2                  
# 每隔 6 秒查询 realserver 状态

    lb_algo
rr                       
#lvs 算法

    lb_kind
DR                     
# Direct Route

    persistence_timeout
50             #
同一IP 的连接60 秒内被分配到同一台realserver

    protocol
TCP                    
# 用 TCP 协议检查 realserver 状态

 

  real_server 192.168.30.12 80 {

       weight 3    
     #(权重)

    TCP_CHECK {   

       connect_timeout 10 
     #(10秒无响应超时)
    
   nb_get_retry 3
    
   delay_before_retry 3
    
   connect_port 80
  

    }

}

real_server 192.168.30.13 80 {

       weight 3    
     #(权重)

    TCP_CHECK {   

       connect_timeout 10 
     #(10秒无响应超时)
    
   nb_get_retry 3
    
   delay_before_retry 3
    
   connect_port 80
  

    }

}

}

1.3 BACKUP 服务器同上配置,先安装 lvs 再按装 keepalived, 仍后配置
/etc/keepalived/keepalived.conf ,只需将红色标示的部分改一下即可 .

 

 

global_defs {

   notification_email {

    test@163.com

   }

   notification_email_from root@localhost

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

    state BACKUP 
        # 备份服务器上将 MASTER 改为 BACKUP 

    interface
eth0           # HA 监测网络接口

    virtual_router_id 51     # 主、备机的
virtual_router_id 必须相同

    priority 99  
            #
主、备机取不同的优先级,主机值较大,备份机值较小

   
advert_int 2           #
VRRP Multicast 广播周期秒数

    authentication {

        auth_type
PASS         #VRRP 认证方式

        auth_pass
1111          #VRRP 口令字

    }

    virtual_ipaddress {

       
192.168.30.20          
    # VRRP HA 虚拟地址

    }

}

virtual_server 192.168.30.20 80 {

    delay_loop
2                  
# 每隔 6 秒查询 realserver 状态

    lb_algo
rr                       
#lvs 算法

    lb_kind
DR                     
# Direct Route

    persistence_timeout
50             #
同一IP 的连接60 秒内被分配到同一台realserver

    protocol
TCP                    
# 用 TCP 协议检查 realserver 状态

 

  real_server 192.168.30.12 80 {

       weight 3    
     #(权重)

    TCP_CHECK {   

       connect_timeout 10 
     #(10秒无响应超时)
    
   nb_get_retry 3
    
   delay_before_retry 3
    
   connect_port 80
  

    }

}

real_server 192.168.30.13 80 {

       weight 3    
     #(权重)

    TCP_CHECK {   

       connect_timeout 10 
     #(10秒无响应超时)
    
   nb_get_retry 3
    
   delay_before_retry 3
    
   connect_port 80
  

    }

}

}

 

 

2. 配置lvs客户端脚本 

 

 




[c-sharp] view plaincopyprint?


  1. #vi /usr/local/sbin/realserver.sh  

  2.  #!/bin/bash  

  3. class="alt"> # description: Config realserver lo and apply noarp   

  4.  #Written by :NetSeek http://www.linuxtone.org  

  5.    

  6.  SNS_VIP=192.168.30.20  

  7.     

  8.  . /etc/rc.d/init.d/functions  

  9.     

  10.  case "$1" in  

  11.  start)  

  12.         ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP  

  13. class="alt">        /sbin/route add -host $SNS_VIP dev lo:0  

  14.         echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  

  15. class="alt">        echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  

  16.         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  

  17. class="alt">        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  

  18.         sysctl -p >/dev/null 2>&1  

  19. class="alt">        echo "RealServer Start OK"  

  20.     

  21. class="alt">        ;;  

  22.  stop)  

  23. class="alt">        ifconfig lo:0 down  

  24.         route del $SNS_VIP >/dev/null 2>&1  

  25. class="alt">        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  

  26.         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  

  27. class="alt">        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  

  28.         echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  

  29. class="alt">        echo "RealServer Stoped"  

  30.         ;;  

  31.  *)  

  32.         echo "Usage: $0 {start|stop}"  

  33. class="alt">        exit 1  

  34.  esac  

  35.     

  36.  exit 0  

  

 

 

或者采用secondary ip address方式配置
          # vi
/etc/sysctl.conf

 

          
net.ipv4.conf.lo.arp_ignore = 1
       
   net.ipv4.conf.lo.arp_announce = 2
    
      net.ipv4.conf.all.arp_ignore = 1
 
         net.ipv4.conf.all.arp_announce =
2

#sysctl -p

#ip addr add 192.168.30.20/32 dev lo
#ip add list 查看是否绑定


 3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态:
    
    #watch ipvsadm -ln

 

4. 启动 keepalived
服务
#service httpd start

#/etc/init.d/keepalived start  

  查看keepalived的安装位置:
    # find /
-name
keepalived 

 将keepalived作为服务添加到chkconfig中,并设置开机启动
  
# chkconfig --add keepalived
   # chkconfig --level
35 keepalived on

   # chkconfig --list keepalived

      keepalived     
0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭

 

“各等级”包括2、3、4、5等级

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

5. 测试 lvs
服务是否正常

  5.1 通过浏览器访问 http://192.168.30.20 是否正常

多次刷新浏览器,在主 LVS 上看连接数变化

5.2 停止主 LVS 上的 keepalived 看看备份 keepalived 是否正常接管服务

 

注:realserver如果为windows主机的话需要安装microsoft
loopback,设置IP为VIP

确认之后搜索注册表,关键字"VIP"

把搜到结果的每项里面的subnet
mask都改成255.255.255.255

然后重启即可


推荐阅读
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 第七卷《英才》强调,即使有良药,若不对症,效果也不如低等药物;即使有贤才,若不适用,效果也不如普通人。文中通过多个比喻,阐述了人才使用的重要性,指出合适的人才在适当的时间和场合才能发挥最大效用。 ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • 本文详细介绍了Linux系统中用于管理IPC(Inter-Process Communication)资源的两个重要命令:ipcs和ipcrm。通过这些命令,用户可以查看和删除系统中的消息队列、共享内存和信号量。 ... [详细]
  • 解决SQL Server数据库sa登录名无法连接的问题
    在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 自定义滚动条美化页面内容
    当页面内容超出显示范围时,为了提升用户体验和页面美观,通常会添加滚动条。如果默认的浏览器滚动条无法满足设计需求,我们可以自定义一个符合要求的滚动条。本文将详细介绍自定义滚动条的实现过程。 ... [详细]
  • 本文介绍了 AngularJS 中的 $compile 服务及其用法,通过示例代码展示了如何使用 $compile 动态编译和链接 HTML 元素。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • ZooKeeper 入门指南
    本文将详细介绍ZooKeeper的工作机制、特点、数据结构以及常见的应用场景,包括统一命名服务、统一配置管理、统一集群管理、服务器动态上下线和软负载均衡。 ... [详细]
  • 自动验证时页面显示问题的解决方法
    在使用自动验证功能时,页面未能正确显示错误信息。通过使用 `dump($info->getError())` 可以帮助诊断和解决问题。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 数字资产量化交易通过大数据分析,以客观的方式制定交易决策,有效减少人为的主观判断和情绪影响。本文介绍了几种常见的数字资产量化交易策略,包括搬砖套利和趋势交易,并探讨了量化交易软件的开发前景。 ... [详细]
author-avatar
UJXo小妖春日望美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有