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

lvs+keepalived配置

时间:2015-05-21 19:48:35      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:lvs+keepalived配置

一、环境

    lvs-keep-m: 192.168.3.24

    lvs-keep-s: 192.168.3.25

    RS1: 192.168.3.26

    RS2: 192.168.3.27

    VIP: 192.168.3.28

二、在所有节点都配置ntp同步时间

[root@lvs-keep-m ~]# ntpdate asia.pool.ntp.org
[root@lvs-keep-m ~]# hwclock -w

三、RS1和RS2配置httpd服务,以及VIP

    RS1操作

[root@RS1 ~]# yum -y install httpd
[root@RS1 ~]# echo "<h1>RS1.com</h1>" >/var/www/html/index.html
[root@RS1 ~]# service iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@RS1 ~]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for RS1
httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@RS1 ~]# curl http://127.0.0.1
<h1>RS1.com</h1>
#以上是配置httpd服务

    在RS1上配置VIP,使用脚本配置,脚本内容如下

[root@RS1 ~]# cat realserver.sh 
#!/bin/bash  
#   
# Script to start LVS DR real server.   
# description: LVS DR real server   
#   
.  /etc/rc.d/init.d/functions

#在上文中我们设置的VIP是192.168.3.28
VIP=192.168.3.28 
host=`/bin/hostname`
case "$1" in  
start)   
       # Start LVS-DR real server on this machine.   
        /sbin/ifconfig lo down   
        /sbin/ifconfig lo up   
        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore   
        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce   
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore   
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
        /sbin/route add -host $VIP dev lo:0
;;  
stop)
        # Stop LVS-DR real server loopback device(s).  
        /sbin/ifconfig lo:0 down   
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore   
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce   
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore   
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;  
status)
        # Status of LVS-DR real server.  
        islothere=`/sbin/ifconfig lo:0 | grep $VIP`   
        isrothere=`netstat -rn | grep "lo:0" | grep $VIP`   
        if [ ! "$islothere" -o ! "isrothere" ];then   
            # Either the route or the lo:0 device   
            # not found.   
            echo "LVS-DR real server Stopped."   
        else   
            echo "LVS-DR real server Running."   
        fi   
;;   
*)   
            # Invalid entry.   
            echo "$0: Usage: $0 {start|status|stop}"   
            exit 1   
;;   
esac   

#赋予执行权限
[root@RS1 ~]# chmod +x realserver.sh 
[root@RS1 ~]# sh realserver.sh start
[root@RS1 ~]# ip a |grep "192.168.3.28"
    inet 192.168.3.28/32 brd 192.168.3.28 scope global lo:0

 

    RS2操作

[root@RS2 ~]# yum -y install httpd
[root@RS2 ~]# echo "<h1>RS2.com</h1>" >/var/www/html/index.html
[root@RS2 ~]# service iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@RS2 ~]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for RS2
httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@RS2 ~]# curl http://127.0.0.1
<h1>RS2.com</h1>

    在RS1上配置VIP,使用脚本配置,脚本内容同上

[root@RS2 ~]# sh realserver.sh start
[root@RS2 ~]# ip a |grep "192.168.3.28"
    inet 192.168.3.28/32 brd 192.168.3.28 scope global lo:0

四、lvs-keep-m和lvs-keep-s上安装lvs

    lvs-keep-m操作

[root@lvs-keep-m ~]# yum install make popt  libnl  libnl-devel  popt-static gcc* -y
[root@lvs-keep-m ~]# wget  http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
[root@lvs-keep-m ~]# tar xf ipvsadm-1.26.tar.gz 
[root@lvs-keep-m ~]# cd ipvsadm-1.26
[root@lvs-keep-m ipvsadm-1.26]# make
[root@lvs-keep-m ipvsadm-1.26]# make install

    lvs-keep-s操作

[root@lvs-keep-s ~]# yum install make popt  libnl  libnl-devel  popt-static gcc* -y
[root@lvs-keep-s ~]# wget  http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
[root@lvs-keep-s ~]# tar xf ipvsadm-1.26.tar.gz 
[root@lvs-keep-s ~]# cd ipvsadm-1.26
[root@lvs-keep-s ipvsadm-1.26]# make
[root@lvs-keep-s ipvsadm-1.26]# make install

五、lvs-keep-m和lvs-keep-s上安装keepalived

    在lvs-keep-m上安装keepalived

[root@lvs-keep-m ~]# yum install openssl openssl-devel -y
[root@lvs-keep-m ~]# wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
[root@lvs-keep-m ~]# tar xf keepalived-1.2.13.tar.gz 
[root@lvs-keep-m ~]# cd keepalived-1.2.13
[root@lvs-keep-m keepalived-1.2.13]# ./configure 
[root@lvs-keep-m keepalived-1.2.13]# make && make install
#将keepalived配置成开机启动
[root@lvs-keep-m keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[root@lvs-keep-m keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@lvs-keep-m keepalived-1.2.13]# mkdir  /etc/keepalived
[root@lvs-keep-m keepalived-1.2.13]# ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@lvs-keep-m keepalived-1.2.13]# ln -s /usr/local/sbin/keepalived  /usr/sbin/

#备份keepalived.conf文件
[root@lvs-keep-m keepalived-1.2.13]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@lvs-keep-m ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {  
   notification_email {   
	lyao@weyee.com               #配置管理员邮箱
   }   
   notification_email_from root      #配置发件人   
   smtp_server 127.0.0.1             #配置邮件服务器   
   smtp_connect_timeout 30   
   router_id LVS_M                   #标识当前节点
}
vrrp_instance VI_1 {  
    state MASTER                     #配置keepalived的模式   
    interface eth0                   #将VIP绑定在哪个网卡上,这里设置成eth0
    virtual_router_id 99             #VRRP组名,两个节点设置必须一样,表明属于同一个VRRP组
    priority 101                     #配置优先级   
    advert_int 1                     #组播信息发送间隔
    authentication {   
        auth_type PASS               #设置验证方式
        auth_pass 1111               #验证密码
    }   
    virtual_ipaddress {   
        192.168.3.28                 #配置虚拟IP地址,这里可以配置多个地址,每个VIP下对应不同的realserver   
    }   
}
virtual_server 192.168.3.28 80 {  
    delay_loop 6   
    lb_algo rr                       #配置lvs算法,这里是rr,即轮询
    lb_kind DR                       #配置lvs模型,这里是DR,即直接路由模式
    nat_mask 255.255.255.0   
    #persistence_timeout 50          #会话保持时间
    protocol TCP
    real_server 192.168.3.26 80 {    #配置realaserver地址  
        weight 1   
        HTTP_GET {                   #监控配置   
            url {   
              path /                 #监控网站的/路径
          status_code 200   
            }   
            connect_timeout 2        #连接超时时间
            nb_get_retry 3           #重连次数
            delay_before_retry 1     #重连时间间隔
        }   
    }   
    real_server 192.168.3.27 80 {   
        weight 1   
        HTTP_GET {   
            url {   
              path /   
              status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }   
}

#启动keepalived服务
[root@lvs-keep-m ~]# chkconfig --add keepalived
[root@lvs-keep-m ~]# chkconfig keepalived on
[root@lvs-keep-m ~]# chkconfig |grep keep
keepalived     	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@lvs-keep-m ~]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]
[root@lvs-keep-m ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.3.28:80 rr
  -> 192.168.3.26:80              Route   1      0          0         
  -> 192.168.3.27:80              Route   1      0          0    
  
#到此RS1的keepalived已配置好
[root@lvs-keep-m ~]# service iptables stop

    在lvs-keep-m上安装keepalived

[root@lvs-keep-s ~]# yum install openssl openssl-devel -y
[root@lvs-keep-s ~]# wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
[root@lvs-keep-s ~]# tar xf keepalived-1.2.13.tar.gz 
[root@lvs-keep-s ~]# cd keepalived-1.2.13
[root@lvs-keep-s keepalived-1.2.13]# ./configure
[root@lvs-keep-s keepalived-1.2.13]# make && make install
[root@lvs-keep-s keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[root@lvs-keep-s keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@lvs-keep-s keepalived-1.2.13]# mkdir  /etc/keepalived
[root@lvs-keep-s keepalived-1.2.13]# ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@lvs-keep-s keepalived-1.2.13]# ln -s /usr/local/sbin/keepalived  /usr/sbin/
[root@lvs-keep-s keepalived-1.2.13]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

#keepalived的配置文件我们从lvs-keep-m上复制过来修改即可
[root@lvs-keep-s keepalived-1.2.13]# cp ~/keepalived.conf /etc/keepalived/
[root@lvs-keep-s keepalived-1.2.13]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {  
   notification_email {   
	lyao@weyee.com                 #配置管理员邮箱
   }   
   notification_email_from root        #配置发件人   
   smtp_server 127.0.0.1               #配置邮件服务器   
   smtp_connect_timeout 30   
   router_id LVS_S                     #修改这里,表示节点标示符
}
vrrp_instance VI_1 {  
    state BACKUP                       #修改lvs的模式为BACKUP  
    interface eth0   
    virtual_router_id 99   
    priority 99                        #修改优先级,要比master的低   
    advert_int 1   
    authentication {   
        auth_type PASS   
        auth_pass 1111   
    }   
    virtual_ipaddress {   
        192.168.3.28  #配置虚拟IP地址   
    }   
}
virtual_server 192.168.3.28 80 {  
    delay_loop 6   
    lb_algo rr   
    lb_kind DR   
    nat_mask 255.255.255.0   
    #persistence_timeout 50   
    protocol TCP
    real_server 192.168.3.26 80 { #配置realaserver  
        weight 1   
        HTTP_GET { #监控配置   
            url {   
              path /   
          status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }   
    real_server 192.168.3.27 80 {   
        weight 1   
        HTTP_GET {   
            url {   
              path /   
              status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }   
}

#添加到开机自动启动
[root@lvs-keep-s ~]# chkconfig --add keepalived
[root@lvs-keep-s ~]# chkconfig keepalived on
[root@lvs-keep-s ~]# chkconfig |grep keep
keepalived     	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@lvs-keep-s ~]# service keepalived start
Starting keepalived:                                       [  OK  ]
[root@lvs-keep-s ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.3.28:80 rr
  -> 192.168.3.26:80              Route   1      0          0         
  -> 192.168.3.27:80              Route   1      0          0   
[root@lvs-keep-s ~]# service iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]

#正常情况下,这里是查询不到VIP地址的
[root@lvs-keep-s ~]# ip a |grep "192.168.3.28"

六、测试结果

#结果显示访问http://192.168.3.28,后端服务正常
[root@qa-web ~]# curl http://192.168.3.28
<h1>RS1.com</h1>
[root@qa-web ~]# curl http://192.168.3.28
<h1>RS2.com</h1>
[root@qa-web ~]# curl http://192.168.3.28
<h1>RS1.com</h1>
[root@qa-web ~]# curl http://192.168.3.28
<h1>RS2.com</h1>
[root@qa-web ~]# curl http://192.168.3.28
<h1>RS1.com</h1>
[root@qa-web ~]# curl http://192.168.3.28
<h1>RS2.com</h1>


本文出自 “ly36843运维” 博客,请务必保留此出处http://ly36843.blog.51cto.com/3120113/1653551

lvs+keepalived配置

标签:lvs+keepalived配置

原文地址:http://ly36843.blog.51cto.com/3120113/1653551

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