wsxxz 发表于 2018-10-23 07:17:26

keepalived+LVS高可用Director Server

  RHEL6.6_x86_64
  主要软件:
  keepalived-1.2.16.tar.gz
  ipvsadm-1.26-4.el6.x86_64.rpm
  Keepalived是一种高性能的服务器高可用解决方案,架构不同于corosync和heartbeat。Keepalived的实现是基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议),VRRP是一种容错协议。一个网络内的所有主机都设置有一条默认路由,这样,主机发出的目的地址不在本网段的报文将通过默认路由发送往RouterA,从而实现主机与外网通信。当RouterA挂掉,本网段中所有以RouterA为默认路由下一跳的主机将不能与外网通信。VRRP就是解决这一问题而出现的。
  VRRP将局域网的(两台或以上)路由器虚拟成一个设备,对外提供虚拟路由器IP,在路由器组内部,若实际拥有这个对外IP的路由器工作正常的话就是MASTER,MASTER实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,数据转发等。其他设备不拥有该IP,则是BACKUP,BACKUP只接收MASTER的VRRP状态通告信息。当MASTER宕掉,BACKUP接管MASTER的网络功能。

  在这个结构图里,处于下端的是内核空间,它包括 ipvs 和 NETLINK 两个部分。netlink 提供高级路由及其他相关的网络功能,如果我们在负载均衡器上启用 netfilter/iptable,将会直接影响它的性能。出于图形上方的组件为用户空间,
  1、 WatchDog 负责监控 checkers 和 VRRP 进程的状况。
  2、 Checkers 负责真实服务器的健康检查 healthchecking,是 keepalived 最主要的功能。
  3、 VRRP Stack 负责负载均衡器之间的失败切换 FailOver. 如果只用一个负载均衡器,则VRRP 不是必须的。
  4、 IPVS wrapper 用来发送设定的规则到内核 ipvs 代码。
  5、 Netlink Reflector 用来设定 vrrp 的 vip 地址等。
  Master_DS : 192.168.1.5
  Backup_DS : 192.168.1.8
  RS1:192.168.1.6
  RS2: 192.168.1.7
  VIP: 192.168.1.10
  编译安装keepalived
  # tar xf keepalived-1.2.16.tar.gz
  # cd keepalived-1.2.16
  # ./configure --prefix=/usr/local/keepalived --sysconfdir=/etc
  # make
  # make install
  配置keepalived
  vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived
  global_defs {
  notification_email {    #keepalived状态切换时通知email出现故障,邮件报警
  root@localhost
  }
  notification_email_from keepalived@localhost #指定发件人
  smtp_server 127.0.0.1#smtp服务器地址
  smtp_connect_timeout 30 #smtp连接超时时间
  router_id LVS_DEVEL    #运行keepalived机器的一个标识
  }
  vrrp_instance VI_1 {
  state MASTER         #配置为主
  interface eth1       #通讯网卡
  virtual_router_id 51 #路由标识
  priority 100         #优先级
  advert_int 1         #通告时间间隔:发送通告报文的时间间隔。在VRRPVersion2中单位为秒,默认值为1秒。
  authentication {
  auth_type PASS
  auth_pass 1111#验证密码,通讯主机间验证
  }
  virtual_ipaddress {#虚拟IP地址
  192.168.1.10/24 dev eth1 label eth1:0
  }
  }
  virtual_server 192.168.1.10 80 {
  delay_loop 6
  lb_algo rr    # rr调度算法, 有rr|wrr|lblc|sh|sh
  lb_kind DR    # DR模型
  nat_mask 255.255.255.0
  #persistence_timeout 50
  protocol TCP
  sorry_server 127.0.0.1 80#所有RS故障,重定向到本机
  real_server 192.168.1.6 80 {
  weight 1    #权重,0为失效
  TCP_CHECK {
  connect_timeout 3    #连接超时时间
  nb_get_retry 3       #重试次数
  delay_before_retry 3#重试时间间隔
  }
  }
  real_server 192.168.1.7 80 {
  weight 1
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  # yum install ivsadm
  192.168.1.8主机中
  安装keepalived同192.168.1.5
  配置文件中:
  将“state MASTER" 改为 ”state BACKUP"
  将"priority 100"改为比100小的值,这里改为“priority 70".
  # yum install ipvsadm
  配置Real server
  编写Real Server脚本
  #/bin/bash
  # Author xiaoming
  # mail: xiaoming.linux@gmail.com
  VIP=192.168.1.10
  . /etc/init.d/functions
  case "$1" in
  start)
  echo "Start Real Server "
  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  route add -host $VIP dev lo:0
  echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce
  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  stop)
  echo "Stop Real Server"
  /sbin/ifconfig lo:0 down
  route del $VIP
  echo 0 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
  echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
  echo 0 > /proc/sys/net/ipv4/conf/eth1/arp_announce
  ;;
  *)
  echo "Usage: $0 {start|stop}"
  exit 1
  esac
  分别在Real Server1和Real Server2上执行此脚本
  配置完毕,分别在director server上启动keepalived服务,
  # service keepalivedstart
  查看LVS路由表信息
  # ipvsadm -Ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP192.168.1.10:80 rr
  -> 192.168.1.6:80               Route   1      0          0
  -> 192.168.1.7:80               Route   1      0          0

页: [1]
查看完整版本: keepalived+LVS高可用Director Server