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

[经验分享] LVS+keepalived-Henry

[复制链接]

尚未签到

发表于 2018-12-30 06:05:46 | 显示全部楼层 |阅读模式
  四台centos5.5
  VIP 192.168.0.82
  lvs 192.168.0.81 192.168.0.74
  web 192.168.0.72 192.168.0.73
  LVS服务器(DR模式,所有IP都在内网)
  ln -s /usr/src/kernels/2.6.18-53.e15-i686/ /usr/src/linux
  #如果/usr/src/kernels/目录空先安装kernel-devel
  #yum install  kernel-devel
  yum install ipvsadm
  ipvsadm
  lsmod |grep ip_vs
  echo "1" > /proc/sys/net/ipv4/ip_forward
  #/bin/bash
  VIP=192.168.0.82
  WEB1=192.168.0.72
  WEB2=192.168.0.73
  case "$1" in
  start)
  /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev eth0:0
  /sbin/ipvsadm -C
  /sbin/ipvsadm -A -t $VIP:80 -s rr
  /sbin/ipvsadm -a -t $VIP:80 -r $WEB1 -g
  /sbin/ipvsadm -a -t $VIP:80 -r $WEB2 -g
  touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
  echo "lvs status-------------------[OK]"
  ;;
  stop)
  /sbin/ipvsadm -C
  /sbin/ifconfig eth0:0 down
  route del $VIP
  rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
  echo "lvs stop"
  ;;
  status)
  if [ ! -e /var/lock/subsys/ipvsadm ];then
  echo "lvs stop"
  exit 1
  else
  echo "lvs status-------------------[OK]"
  fi
  ;;
  *)
  echo "Usage: $0 {start|stop|status}"
  exit 1
  ;;
  esac
  WEB服务器(两台一致)
  #!/bin/bash
  #description:start realserver
  #chkconfig
  VIP=192.168.0.82
  /etc/rc.d/init.d/functions
  case "$1" in
  start)
  echo " start LVS of REALServer"
  /sbin/ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
  /sbin/route add -host $VIP1 dev lo:0
  echo "1" >/proc/sys/net/ipv4/ip_forward
  echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
  echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
  echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  stop)
  /sbin/ifconfig lo:0 down
  echo "close LVS Directorserver"
  echo "0" >/proc/sys/net/ipv4/ip_forward
  echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  *)
  echo "Usage: $0 {start|stop}"
  exit 1
  esac
  编译 keepalived-1.1.17(版本不可过高)
  yum install libnl-devel
  ./configure
  make
  make install
  cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/   #设置为service方式启动
  cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
  mkdir /etc/keepalived
  cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
  cp /usr/local/sbin/keepalived /usr/sbin/
  /etc/init.d/keepalived start   #启动keepalived
  vi /etc/rc.local  #添加为开机自启动
  /usr/local/sbin/keepalived -D -f /etc/keepalived/keepalived.conf
  # sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#' /etc/sysctl.conf  #开启内核转发功能
  # sysctl -p    #查看是否开启内核转发
  mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak  #备份原始配置文件
  vi /etc/keepalived/keepalived.conf
  ========================================================
  !Configuration File for keepalived
  global_defs {
  #notification_email {
  #    quanzhou.li@pearlinpalm.com    #填写自己的邮箱出现故障接收报警邮件用
  #}
  #notification_email_from Alexandre.Cassen@firewall.loc
  #smtp_server 127.0.0.1
  #smtp_connect_timeout 30
  router_id LVS_01 #备份服务器改为LVS_02
  }
  vrrp_instance VI_1 {
  state MASTER #备份服务器上MASTER为BACKUP
  interface eth0
  #lvs_sync_daemon_inteface eth1
  virtual_router_id 51
  priority 100 #备份服务上优先级要低于100,如改为90
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  192.168.0.82   #这里填写VIP地址,也可添加多个VIP
  }
  }
  virtual_server 192.168.0.82 80 {   #这里填写VIP地址
  delay_loop 6
  lb_algo rr
  lb_kind DR
  #nat_mask 255.255.255.0
  persistence_timeout 50
  protocol TCP
  real_server 192.168.0.72 80 { #这里是真实服务器的IP
  weight 1
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  real_server 192.168.0.73 80 { #这里是第二台真实服务器的IP
  weight 2
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  }
  ========================================================
  keepalived.conf 文件详解
  安装完成之后,生成的配置文件放置于:/usr/local/keepalived/etc/keepalived/keepalived.conf
  官方提供了不少模板性的配置文件:/usr/local/keepalived/etc/keepalived/samples
  建议将配置文件放置于: /etc/keepalived/keepalived.conf
  如果运用不指定配置文件,他可以直接调用/etc/keepalived/keepalived.conf中的配置文件
  接下来,详细说明配置文件中的各项含义:
  #全局定义块,以下模块不可省略,必须存在。
  global_defs {
  notification_email {
  email #如有故障,发邮件报警的地址,一般不采用,可以随意填写
  }
  notification_email_from email
  smtp_server host
  smtp_connect_timeout num #邮件服务链接超时的最长时间
  lvs_id string #Lvs负载均衡器标识,在一个网络里面,请保持他是唯一性。
  }
  #VRRP实例定义块
  vrrp_sync_group string {  #确定失败切换(FailOver)包含的路由实例个数。即在有2个负载均衡器的场景,一旦某个负载均衡器失效
  group {
  string #备用的负载均衡的服务器名
  string
  }
  vrrp_instance string { #前面定义的后备的负载均衡的服务器名
  state MASTER|BACKUP #只有MASTER和BACKUP两种状态,都必须保持大写。
  interface string #进行通信的端口,如eth0,eth1
  mcast_src_ip @IP #真实的IP地址
  lvs_sync_daemon_interface string #负载均衡器之间的监控接口。如果采用DR模式,可以保持和通信端口一致。
  virtual_router_id num #这个标识是同一个vrrp实例使用唯一的标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同时在整个vrrp内是唯一的。
  priority num #权重,数值越大,权重越大,Master大于Slave。
  advert_int num #Master和Slave负载均衡器之间同步检查的时间间隔,单位:秒
  smtp_alert
  authentication { #Master和Slave之间认证的方式
  auth_type PASS|AH
  auth_pass string #认证的秘密
  }
  virtual_ipaddress { # Block limited to 20 IP addresses
  IP
  IP
  IP
  }
  virtual_ipaddress_excluded { # Unlimited IP addresses number
  IP
  IP
  IP
  }
  #虚拟服务器定义块
  virtual_server (@IP PORT)|(fwmark num) { #上面定义的virtual_ipaddress,需要添加端口
  delay_loop num #服务健康检查周期,单位:秒
  lb_algo rr|wrr|lc|wlc|sh|dh|lblc #负载均衡的调度算法方式,一般使用rr或者wlc。
  lb_kind NAT|DR|TUN #负载均衡转发规则,一般采用DR
  (nat_mask @IP) #地址掩码,可不填
  persistence_timeout num #会话保持时间,单位:秒。如果是动态服务,建议开启。
  persistence_granularity @IP
  virtualhost string
  protocol TCP|UDP #通信协议,有
  sorry_server @IP PORT
  real_server @IP PORT { #真实IP地址
  weight num #权重值,数值越大,权重越高,分发的可能越大。
  TCP_CHECK {
  connect_port num #检查端口
  connect_timeout num #检查超时时间
  }
  }
  real_server @IP PORT {
  weight num
  MISC_CHECK {
  misc_path /path_to_script/script.sh
  (or misc_path “/path_to_script/script.sh ”)
  }
  }
  real_server @IP PORT {
  weight num
  HTTP_GET|SSL_GET {
  url { # You can add multiple url block
  path alphanum
  digest alphanum
  }
  connect_port num
  connect_timeout num
  nb_get_retry num
  delay_before_retry num
  }
  }
  }
  keepalived 实例
  Master 服务器
  #guration File for keepalived (Master Server)
  #writed by eric.w.t 2011/04/12
  ###################################
  #   global define
  ###################################
  global_defs {
  notification_email {
  mesopodamia@gmail.com
  }
  notification_email_from sns-lvs@gmail.com
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
  }
  ####################################
  #   vrrp define
  ####################################
  vrrp_sync_group VGM {
  group {
  VI_1
  }
  }
  vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 110
  priority 100
  advert_int 1
  virtual_ipaddress {
  10.249.0.208
  }
  }
  #####################################
  #   virtual machine setting
  #####################################
  virtual_server 10.249.0.208 80 {
  delay_loop 6
  lb_algo rr
  lb_kind NAT
  nat_mask 255.255.255.0
  protocol TCP
  persistence_timeout 20
  real_server 10.249.0.254 80 {
  weight 10
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  }
  Slave 服务器配置
  #guration File for keepalived (Slave Server)
  #writed by eric.w.t 2011/04/12
  ###################################
  #   global define
  ###################################
  global_defs {
  notification_email {
  mesopodamia@gmail.com
  }
  notification_email_from sns-lvs@gmail.com
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
  }
  ####################################
  #   vrrp define
  ####################################
  vrrp_sync_group VGM {
  group {
  VI_1
  }
  }
  vrrp_instance VI_1 {
  state SLAVE
  interface eth0
  virtual_router_id 110
  priority 99
  advert_int 1
  virtual_ipaddress {
  10.249.0.208
  }
  }
  #####################################
  #   virtual machine setting
  #####################################
  virtual_server 10.249.0.208 80 {
  delay_loop 6
  lb_algo rr
  lb_kind NAT
  nat_mask 255.255.255.0
  protocol TCP
  persistence_timeout 20
  real_server 10.249.0.254 80 {
  weight 10
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  }
  参考文档 :
  http://www.keepalived.org/documentation.html
  #调用检测脚本
  vrrp_script check_run {
  script "/root/keepalived_check_mysql.sh"
  interval 5
  }


运维网声明 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-657336-1-1.html 上篇帖子: keepalived 简单配置 下篇帖子: haproxy高可用之非抢占keepalived(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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