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

[经验分享] 测试配置keepalived,lvs和realserver

[复制链接]

尚未签到

发表于 2018-12-28 13:42:39 | 显示全部楼层 |阅读模式
  测试配置keepalived,lvs和realserver
  有2块地方要注意:
  1)keepalived的配置,分成global,vrrp,lvs

  2)realserver上启用vip的脚本
  

测试配置keepalived_lvs_realserver
一、需求
配置1个vip对应4个real server
vip: 10.0.205.100
dip_master: 10.0.200.21
dip_backup: 10.0.200.22
rip: 10.0.205.2-5

二、配置几个realserver的vip
控制脚本:
[root@svr200-21 salt]# cat lvs/bin/lvs-realsvr.sh
#!/bin/bash
#
# 2015/2/28
# lvs real server
#
# chkconfig:   - 85 15
# description:  control vip on lvs realserver
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
lockfile="/var/lock/subsys/lvs-real"
s_vip='10.0.205.100'
start() {
  ifconfig lo:1 ${s_vip} netmask 255.255.255.255 broadcast ${s_vip}
  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
  retval=$?
  echo
  [ $retval -eq 0 ] && touch $lockfile
  return $retval
}
stop() {
  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
  ifconfig lo:1 down
  retval=$?
  echo
  [ $retval -eq 0 ] && rm -f $lockfile
  return $retval
}
status() {
  ip a |grep inet |grep -v inet6  
}
case $1 in  
  start)
    start
    status
    ;;
  stop)
    stop
    status
    ;;
  status)
    status
    ;;
  *)  
    echo $"Usage: $0 {start|stop|status}"
    exit 2
esac  
在几个rip主机上start脚本,即可启用vip。

三、配置keepalived服务
【director-master】
安装服务:
[root@svr200-21 ~]# yum -y install ipvsadm keepalived
[root@svr200-21 keepalived]# pwd
/etc/keepalived
[root@svr200-21 keepalived]# cp -a keepalived.conf  keepalived.conf.old
配置文件:
[root@svr200-21 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_200_21
}
vrrp_instance VIP_test1 {
    state MASTER            # MASTER or BACKUP,大写
    interface eth0          # 对外服务的端口
    virtual_router_id 205   # 虚拟路由器id
    priority 100            # 数值大则优先级高
    advert_int 1            # 同步时间间隔
    authentication {
      auth_type PASS
      auth_pass 654321
    }
    virtual_ipaddress {
      10.0.205.100
    }
}
virtual_server 10.0.205.100 80 {
    delay_loop 6              # 健康检查时间间隔
    lb_algo wrr                # 调度算法:rr | wrr | lc | wlc | lblc | sh | dh
    lb_kind DR                # 转发规则:NAT | DR | TUN
    #persistence_timeout 50   # 会话保持时间
    protocol TCP
    # genhash -s rip -p port -u url
    # genhash -s 10.0.205.2 -p 80 -u /index.html
    real_server 10.0.205.2 80 {
      weight 1
      HTTP_GET {                  # HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK
        url {
          path /index.html
          digest e93e7f6cfbc7c343707f21e2f681dd31
        }
        connect_timeout 3         # 连接超时时间,秒
        nb_get_retry 3            # 失败重试次数,超过后移除
        delay_before_retry 3      # 失败重试间隔,秒
      }
    }
    real_server 10.0.205.3 80 {
      weight 1
      HTTP_GET {                  # HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK
        url {
          path /index.html
          digest b8682521d6c7a01d370ebad57ad6981f
        }
        connect_timeout 3         # 连接超时时间,秒
        nb_get_retry 3            # 失败重试次数,超过后移除
        delay_before_retry 3      # 失败重试间隔,秒
      }
    }
    real_server 10.0.205.4 80 {
      weight 1
      HTTP_GET {                  # HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK
        url {
          path /index.html
          digest 93c5e661950fabd0bfda085a513cdb7a
        }
        connect_timeout 3         # 连接超时时间,秒
        nb_get_retry 3            # 失败重试次数,超过后移除
        delay_before_retry 3      # 失败重试间隔,秒
      }
    }
    real_server 10.0.205.5 80 {
      weight 1
      HTTP_GET {                  # HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK
        url {
          path /index.html
          digest e63f0e81e7a2fddb2d32d83aacbe8472
        }
        connect_timeout 3         # 连接超时时间,秒
        nb_get_retry 3            # 失败重试次数,超过后移除
        delay_before_retry 3      # 失败重试间隔,秒
      }
    }
}
【director-backup】
[root@svr200-21 keepalived]# diff keepalived.conf  backup/keepalived.conf
10c10
<    router_id LVS_200_21
---
>    router_id LVS_200_22
14c14
<     state MASTER            # MASTER or BACKUP,大写
---
>     state BACKUP            # MASTER or BACKUP,大写
17c17
<     priority 100            # 数值大则优先级高
---
>     priority 50             # 数值大则优先级高

四、启动服务
[root@svr200-21 keepalived]# service keepalived start
Starting keepalived:                                       [  OK  ]
[root@svr200-21 keepalived]# tail -f /var/log/messages
Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker for service [10.0.205.2]:80
Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker for service [10.0.205.3]:80
Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker for service [10.0.205.4]:80
Feb 28 16:37:02 server200-21 Keepalived_healthcheckers[23679]: Activating healthchecker for service [10.0.205.5]:80
Feb 28 16:37:03 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Transition to MASTER STATE
Feb 28 16:37:04 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Entering MASTER STATE
Feb 28 16:37:04 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) setting protocol VIPs.
Feb 28 16:37:04 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Sending gratuitous ARPs on eth0 for 10.0.205.100
Feb 28 16:37:04 server200-21 Keepalived_healthcheckers[23679]: Netlink reflector reports IP 10.0.205.100 added
Feb 28 16:37:09 server200-21 Keepalived_vrrp[23680]: VRRP_Instance(VIP1) Sending gratuitous ARPs on eth0 for 10.0.205.100
查看lvs:
[root@svr200-21 keepalived]# ipvsadm -Ln               
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.205.100:80 wrr
  -> 10.0.205.2:80                Route   1      3          0         
  -> 10.0.205.3:80                Route   1      1          0         
  -> 10.0.205.4:80                Route   1      2          0         
  -> 10.0.205.5:80                Route   1      2          0   

访问网站:
http://10.0.205.100
得到:
--------------------------
HOST: svr205-5

lo: 127.0.0.1
eth0: 10.0.205.5
--------------------------

停止了svr205-5 上的的nginx服务后:
[root@svr200-21 keepalived]# tail -f /var/log/messages
Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: Error connecting server [10.0.205.5]:80.
Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: Removing service [10.0.205.5]:80 from VS [10.0.205.100]:80
Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: Remote SMTP server [127.0.0.1]:25 connected.
Feb 28 16:41:26 server200-21 Keepalived_healthcheckers[23679]: SMTP alert successfully sent.

访问网站:
http://10.0.205.100
得到:
--------------------------
HOST: svr205-4

lo: 127.0.0.1
eth0: 10.0.205.4
--------------------------
查看lvs:
[root@svr200-21 keepalived]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.205.100:80 wrr
  -> 10.0.205.2:80                Route   1      0          0         
  -> 10.0.205.3:80                Route   1      2          0         
  -> 10.0.205.4:80                Route   1      3          0  
  
再次启动svr205-5 上的的nginx服务
[root@svr200-21 keepalived]# tail -f /var/log/messages
Feb 28 16:42:50 server200-21 Keepalived_healthcheckers[23679]: MD5 digest success to [10.0.205.5]:80 url(1).
Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: Remote Web server [10.0.205.5]:80 succeed on service.
Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: Adding service [10.0.205.5]:80 to VS [10.0.205.100]:80
Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: Remote SMTP server [127.0.0.1]:25 connected.
Feb 28 16:42:56 server200-21 Keepalived_healthcheckers[23679]: SMTP alert successfully sent.
查看lvs:  
[root@svr200-21 keepalived]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.205.100:80 wrr
  -> 10.0.205.2:80                Route   1      0          0         
  -> 10.0.205.3:80                Route   1      2          0         
  -> 10.0.205.4:80                Route   1      3          0         
  -> 10.0.205.5:80                Route   1      3          0  





运维网声明 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-656927-1-1.html 上篇帖子: Keepalived原理及配置详解 下篇帖子: centos6.2,64位系统搭建LVS+Keepalived(DR模式)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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