码迷,mamicode.com
首页 > 其他好文 > 详细

keepalived

时间:2014-07-22 09:13:35      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:des   style   http   color   使用   os   

Keepalived+lvs

bubuko.com,布布扣

Keepalived 的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除, 当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的 web服务器。

系统环境: RHEL6.5x86_64 small install selinux and iptables disabled

Virtual IP             192.168.2.254

192.168.2.162    server62.exampl.com     (master)

192.168.2.163    server63.example.com(backup)

192.168.2.52      desktop52.example.com(real server)

192.168.2.53      desktop53.example.com(real server)

编辑/etc/hoststs做以上解析

1.keepalived的安装配置

主备机上的软件包安装与配置 

#yum install ipvsadm kernel-devel openssl-devel popt-devel libnl-devel gcc make -y 

源码编译安装keepalived:

#wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz 

#tar zxf keepalived-1.2.12.tar.gz 

#cd  keepalived-1.2.12 

#./configure --prefix=/usr/local/keepalived    (安装目录)

... Keepalived configuration 

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

Keepalived version           : 1.2.5 

Compiler                         : gcc 

Compiler flags                 : -g -O2 

Extra Lib                          : -lpopt -lssl -lcrypto  -lnl 

Use IPVS Framework       : Yes 

IPVS sync daemon support : Yes 

IPVS use libnl                 : Yes 

Use VRRP Framework     : Yes 

Use VRRP VMAC            : Yes 

SNMP support               : No 

Use Debug flags            : No

#make && make install

创建链接:

#ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ 

#ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

#ln -s /usr/local/keepalived/etc/keepalived /etc/ 

#ln -s /usr/local/keepalived/sbin/keepalived /sbin

keepalived主配置文件的修改:

#vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived 
 
global_defs { 

   notification_email { 
     root@localhost
        #接收警报的 email 地址,可以添加多个 

} 
   notification_email_from keepalived@server62.example.com #设置邮件的发送地址 

   smtp_server 127.0.0.1 #设置邮件的发送地址 

   smtp_connect_timeout 30 #设置连接 smtp 服务器超时时间 

   router_id LVS_DEVEL #load balancer 的标识 ID,用于 email 警报 

} 
vrrp_instance VI_1 { 
    state MASTER            #备机改为 BACKUP,此状态是由 priority 的值来决定的,当前 priority 的值小于备机的值,那么将会失去 MASTER 状态 

    interface eth0             #HA 监测网络接口 

    virtual_router_id 200   #主、备机的 virtual_router_id 必须相同,取值 0-255 

    priority 78                  #主机的优先级,主机优先级一定要大于备机 

    advert_int 1               #主备之间的通告间隔秒数 

    authentication {        #主备切换时的验证 

     auth_type PASS     #设置验证类型,主要有 PASS 和 AH 两种 

     auth_pass 1111     #设置验证密码,在一个 vrrp_instance 下,MASTER 与 BACKUP 必须使用相同的密码才能正常通信 
} 
    virtual_ipaddress { 
        
192.168.2.254        #设置虚拟 IP 地址,可以设置多个虚拟 IP 地址,每行一个 

 } 
    virtual_server 192.168.2.254 80 {#定义虚拟服务器 

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

     lb_algo rr               #lvs 调度算法,这里使用轮叫 

     lb_kind DR             #LVS 是用 DR 模式 

    #persistence_timeout 50 #会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中 session 共享提供了一个很好的解决方案。有了这个会话保持功能,用户的 请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保 持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在 50 秒内没有执行任 何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受 50 秒 的时间限制。 

     protocol TCP           #指定转发协议类型,有 tcp 和 udp 两种 

     real_server 192.168.2.52 80 {     #配置服务节点 

     weight 1                 #配置服务节点的权值,权值大小用数字表示,数字越大,权 值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设 置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统 资源 

     TCP_CHECK {              #realserve 的状态检测设置部分,单位是秒 

     connect_timeout 3                 #10 秒无响应超时 

     nb_get_retry 3                       #重试次数 

     delay_before_retry 3              #重试间隔 

      } 

    } 
    real_server 192.168.2.53 80 { 
      weight 1 
      TCP_CHECK { 
      connect_timeout 3 
      nb_get_retry 3 
     delay_before_retry 3 
     } 
    } 
}

#/etc/init.d/keepalived restart 启动keepalived

2.realserver的配置

#分别在 realserver 上执行以下命令添加策略

192.168.2.53 

#ifconfig eth0:0 192.168.2.254 netmask 255.255.255.255 up 添加虚拟ip 

#arptables -A IN -d 192.168.2.254 -j DROP 

#arptables -A OUT -s 192.168.2.254 -j mangle --mangle-ip-s 192.168.2.53

这些配置会写入文件/etc/sysconfig/arptables

#/etc/init.d/arptables_jf save 

#/etc/init.d/arptables_jf start 

#echo `hostname` > /var/www/html/index.html 

#service httpd start

192.168.2.52

#ifconfig eth0:0 192.168.2.254 netmask 255.255.255.255 up 

#arptables -A IN -d 192.168.2.254 -j DROP 

#arptables -A OUT -s 192.168.2.254 -j mangle --mangle-ip-s 192.168.2.52

这些配置会写入文件/etc/sysconfig/arptables

#/etc/init.d/arptables_jf save 

#/etc/init.d/arptables_jf start 

#echo `hostname` > /var/www/html/index.html 

#service httpd start

最后在master主机查看是否添加成功

# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.254:http rr
  -> server52.example.com:http   Route   1      0          7       
  -> server53.example.com:http    Route   1      0          8      

4.测试: 
1.高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管。 
2. 负载均衡测试:访问 http://192.168.2.254,看到页面在两个 realserver 上切换表示成功你也可以通过 ipvsadm -Lnc 查看详细连接情况! 
3. 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现, 然后屏蔽故障节点,同时将服务转移到正常节点来执行。

5.添加ftp服务:(理论需要再加一个需拟IP,可是一个IP也可以)

在两个服务节点安装vsftpd服务

[root@server52 ~]# yum install -y vsftpd

[root@server52 ftp]# ls     在ftp的发布目录里写东西测试;

pub  server52(server53)

[root@server52 ftp]#service vsftpd restart      开启服务

修改两台调度器的配置文件:

master和backup主机修改住配置文件

# vim /etc/keepalived/keepalived.conf 在其后添加
virtual_server 192.168.2.254 21 (ftp端口号是21){
    delay_loop 3
    lb_algo rr
    lb_kind DR
    persistence_timeout 50         -----》持续链接(!很重要哦)
    protocol TCP

    real_server 192.168.2.52 21 {
        weight 1
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.2.53 21 {
        weight 1
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
 }
 }
}

reload两台调度器

# /etc/init.d/keepalived reload

!注意如果使用的是另一个虚拟ip,要在real server主机上用arptables分别添加进去(本实验为了方便不做演示,具体过程如上)。

测试:先用浏览器测试httpd服务是否能正常启动,再用真机终端测ftp服务
# lftp 192.168.2.254
lftp 192.168.2.254:~> ls
drwxr-xr-x    2 0        0            4096 Feb 12  2013 pub
-rw-r--r--    1 0        0               0 May 31 08:02 server52
lftp 192.168.2.254:/> quit    

查看是否添加成功

# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.254:ftp rr persistent 50
  -> server52.example.com:ftp     Route   1      0          0         
  -> server53.example.com:ftp     Route   1      0          0         
TCP  192.168.2.254:http rr
  -> server52.example.com:http    Route   1      0          0         
  -> server53.example.com:http    Route   1      0          0


                             ——leeypp@gmail.com

keepalived,布布扣,bubuko.com

keepalived

标签:des   style   http   color   使用   os   

原文地址:http://my.oschina.net/leeypp1/blog/292544

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!