设为首页 收藏本站
查看: 1182|回复: 0

[经验分享] lvs+keepalived 案例配置

[复制链接]

尚未签到

发表于 2018-12-29 10:42:06 | 显示全部楼层 |阅读模式
基于keepalived和RS端脚本配置的案例,,后端是tomcat应用程序.
软件地址:
wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
再做以下操作之前,应该lvs配置成功、配置见这篇文章
http://douya.blog.运维网.com/6173221/1680692

开始配置lvs基于keepalived的环境
[root@lvs-1 soft]# ls -al /usr/src/
total 16
drwxr-xr-x.  4 root root 4096 Nov 19 00:26 .
drwxr-xr-x. 14 root root 4096 Nov 19 00:32 ..
drwxr-xr-x.  2 root root 4096 Sep 23  2011 debug
drwxr-xr-x.  4 root root 4096 Nov 19 00:27 kernels
lrwxrwxrwx.  1 root root   39 Nov 19 00:26 linux -> /usr/src/kernels/2.6.32-431.el6.x86_64/
安装前先查看是不是有此路径,如果没有,请执行以下步骤:
ls /usr/src/kernels/2.6.32-573.8.1.el6.x86_64/
yum install  kernel kernel-devel  -y
ln  -s /usr/src/kernels/2.6.32-573.8.1.el6.x86_64/ /usr/src/linux/
[root@lvs-1 keepalived-1.1.19]tar xvf keepalived-1.1.19.tar.gz
[root@lvs-1 keepalived-1.1.19]  cd keepalived-1.1.19
[root@lvs-1 keepalived-1.1.19]  ./configure
  configure: error:
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.            !!!
[root@lvs-1 keepalived-1.1.19]yum install openssl* -y
[root@lvs-1 keepalived-1.1.19]./configure
Keepalived configuration
------------------------
Keepalived version       : 1.1.19
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support   : Yes
Use VRRP Framework       : Yes
Use Debug flags         : No
表明无误
[root@lvs-1 keepalived-1.1.19]make &&make install以上是编译安装,推荐使用yum install keepalived 安装



一、开始安装
yum install keepalived -y

二、开始配置keepalived、
lvs-1 配置keepalived ---MASTER
[root@lvs-1 ~]# more /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   334035686@qq.com
   }
   notification_email_from  root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS_1
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.12/24
    }
}
virtual_server  192.168.2.12 80 {    #设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔
    delay_loop 6               #设置健康状态检查时间,单位为秒
    lb_algo rr                #设置负载高度算法,rr为轮询
    lb_kind DR                #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种
    nat_mask 255.255.255.0        #设置掩码
    persistence_timeout 50        #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案
    protocol TCP               #指定转发协议类型可以设置{TCP|UDP}两种
    real_server 192.168.2.221 80 {   #后端服务器节点,需要指定Real_server的IP与端口,用空格分隔
        weight 1              #配置服务节点的权重,数字越大,权重越高
   TCP_CHECK {              
           connect_timeout 3    #这个设置几秒钟测试一下这服务有没有挂.
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server  192.168.2.30 80 {
        weight 1
          TCP_CHECK {            
           connect_timeout 3     #这个设置几秒钟测试一下这服务有没有挂.
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}  SLAVE端配置文件
[root@lvs-2~]# more /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   334035686@qq.com
   }
   notification_email_from  root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS_2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.12/24
    }
}
virtual_server  192.168.2.12 80 {    #设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔
    delay_loop 6               #设置健康状态检查时间,单位为秒
    lb_algo rr                #设置负载高度算法,rr为轮询
    lb_kind DR                #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种
    nat_mask 255.255.255.0        #设置掩码
    persistence_timeout 50        #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案
    protocol TCP               #指定转发协议类型可以设置{TCP|UDP}两种
    real_server 192.168.2.221 80 {   #后端服务器节点,需要指定Real_server的IP与端口,用空格分隔
        weight 1              #配置服务节点的权重,数字越大,权重越高
   TCP_CHECK {                       
           connect_timeout 3    #这个设置几秒钟测试一下这服务有没有挂.
            nb_get_retry 3  
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server  192.168.2.30 80 {
        weight 1
       TCP_CHECK {                     
           connect_timeout 3     #这个设置几秒钟测试一下这服务有没有挂.
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}  启动master,slave,,在master查看状态
[root@lvs-1 scripts]# ip a
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:c8:69:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.13/24 brd 192.168.2.255 scope global eth0
    inet 192.168.2.12/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fec8:69ec/64 scope link
       valid_lft forever preferred_lft forever  到目前为止,在lvs server端的配置已经完成
  

  三、下面开始配置real-server后面节点即(绑定VIP到lo,抑制ARP、)
  此处可以使用脚本进行配置
                                                           
#!/bin/sh
#Date: 2015-11-20
#By: charles
#Description: deploy backend server (bind lo interface and Inhibition arp)
VIP="192.168.2.12"
INT="lo:0"
lo_INT=`ifconfig|grep lo|awk -F " " '{print $1 }'`
.  /etc/init.d/functions
function start() {
if [ "$lo_INT" == "lo" ];then
         ifconfig $INT $VIP  broadcast $VIP netmask 255.255.255.255 up
         route add -host $VIP dev $INT
         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
else   
         echo "vip is binded,Pls Re binding"
         exit 2
fi
if [ $? -eq 0 ]
    then
        action "start bind vip and  Inhibition arp is success" /bin/true
else
        action "start bind vip  and  Inhibition arp  failed" /bin/false
fi
}
function stop() {
ifconfig $INT $VIP  broadcast $VIP netmask 255.255.255.255 up
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
if [ "$INT" !=  "lo" ]
    then
        action "stop bind vip and  Inhibition arp is success" /bin/true
elif [ "$INT" ==  "lo" ]
     then  
        action "stop bind vip  is and   Inhibition arp  failed" /bin/false
else
     echo "bind Error"
fi
}
function restart() {
stop
sleep 1
start
}
case "$1" in
          start)
              start
              ;;
          stop)
              stop
              ;;
          restart)
              restart
              ;;
         *)
             echo    "USAGE :$0 {start|stop|restart}"
             exit 2
esac
exit $?四、还有对keepalived的日志做rsyslog的日志专门记录



root@lvs-1 ~]# cat /etc/sysconfig/keepalived
1,修改keepalived的日志格式
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp               -P    Only run with VRRP subsystem.
# --check              -C    Only run with Health-checker subsystem.
# --dont-release-vrrp  -V    Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs  -I    Dont remove IPVS topology on daemon stop.
# --dump-conf          -d    Dump the configuration data.
# --log-detail         -D    Detailed log messages.
# --log-facility       -S    0-7 Set local syslog facility (default=LOG_DAEMON)
#
#KEEPALIVED_OPTIONS="-D"
KEEPALIVED_OPTIONS="-D -d -S 0",
2, 配置rsyslog
yum install syslog -y
新加一下行
[root@lvs-1 ~]# vim /etc/rsyslog.conf | grep local0
local0.*             /var/log/keepalived.log
[root@lvs-1 ~]#
/etc/init.d/rsyslog     restart
/etc/init.d/keepalived   restart
3,查看日志
[root@lvs-1 ~]# tail -f /var/log/keepalived.log
Nov 20 13:36:27 lvs-1 Keepalived_healthcheckers[12935]: Using LinkWatch kernel netlink reflector...
Nov 20 13:36:27 lvs-1 Keepalived_healthcheckers[12935]: Activating healthchecker for service [192.168.2.221]:80
Nov 20 13:36:27 lvs-1 Keepalived_healthcheckers[12935]: Activating healthchecker for service [192.168.2.30]:80
Nov 20 13:36:28 lvs-1 Keepalived_vrrp[12936]: VRRP_Instance(VI_1) Transition to MASTER STATE
Nov 20 13:36:28 lvs-1 Keepalived_vrrp[12936]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Nov 20 13:36:29 lvs-1 Keepalived_vrrp[12936]: VRRP_Instance(VI_1) Entering MASTER STATE
Nov 20 13:36:29 lvs-1 Keepalived_vrrp[12936]: VRRP_Instance(VI_1) setting protocol VIPs.
Nov 20 13:36:29 lvs-1 Keepalived_healthcheckers[12935]: Netlink reflector reports IP 192.168.2.12 added
Nov 20 13:36:29 lvs-1 Keepalived_vrrp[12936]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.2.12
Nov 20 13:36:34 lvs-1 Keepalived_vrrp[12936]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.2.12



##########################################################################################
LB server本机配置nginx服务


master 配置文件如下:
vim keepalived.conf


  ! Configuration File for keepalived
vrrp_script check_run {
     script "/etc/keepalived/nginx_check.sh"
     interval 5
     weight   2
                      }
global_defs {
    notification_email {
    334035686@qq.com
                        }
notification_email_from  root@localhost
    smtp_server localhost
    smtp_connect_timeout 30
    router_id LVS_1
                       }
    vrrp_instance VI_1 {
            state MASTER
            interface eth0
            virtual_router_id 51  ## the same as slave  lvs
            priority 100
            advert_int 1
    track_interface {
        eth0
    }
    authentication {
            auth_type PASS
            auth_pass 1111
                    }
    virtual_ipaddress {
            192.168.2.12
                       }
      track_script {  
        check_run  
    }  
}







#BACKUP 配置文件


vim keepalived.conf


! Configuration File for keepalived
vrrp_script check_run {
     script "/etc/keepalived/nginx_check.sh"
     interval 5
     weight   2
                      }
global_defs {
    notification_email {
    334035686@qq.com
                        }
notification_email_from  root@localhost
    smtp_server localhost
    smtp_connect_timeout 30
    router_id LVS_1
                       }
    vrrp_instance VI_1 {
            state BACKUP
            interface eth0
            virtual_router_id 51  ## the same as MASTER lvs
            priority 90
            advert_int 1
    track_interface {
        eth0
    }
    authentication {
            auth_type PASS
            auth_pass 1111
                    }
    virtual_ipaddress {
            192.168.2.12
                       }
      track_script {  
        check_run  
    }  
}









以下是检查nginx健康状态的脚本:


  #!/bin/bash
NGINX_PROCESS=`ps -C nginx --no-header | wc -l`
if [ $NGINX_PROCESS -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 3
        if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
                /etc/init.d/keepalived stop
        fi  
fi



















运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657164-1-1.html 上篇帖子: MySQL 5.6通过Keepalived+互为主从实现高可用架构 下篇帖子: heartbeat+ipvs+keepalived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表