2168575 发表于 2018-12-31 08:30:04

keepalived lvs 负载均衡 集群

  准备两台调度主机,两台real server主机
  

  下载软件: keepalived-1.2.5.tar.gz
  

  将以前的piranha 集群服务关闭
  

  yum install gcc make openssl-devel kernel-devel popt-devel libnl-devel -y
  

  如果没有安装kernek-devel 软件包,则此keepalived 不具备负载均衡功能
  

  tar zxvf keepalived-1.2.5.tar.gz #两台调度主机需要安装
  

  cd keepalived-1.2.5
  

  ./configure       #如果报错,则安装需要的软件包
  


  下面为 configure 后的输出内容,必须支持IPVS
  

  Keepalived configuration
  

  Keepalived
  

  version : 1.1.17
  

  Compiler : gcc
  

  Compiler flags : g
  

  O2
  

  Extra Lib : lpopt
  

  lssl
  

  lcrypto
  

  Use IPVS Framework : Yes   #注意编译时一定要支持lvs
  

  IPVS sync daemon support : Yes
  

  Use VRRP Framework : Yes
  

  Use LinkWatch : No
  

  Use Debug flags : No
  


  make && make install
  

  默认将keepalived 安装到/usr/local/etc/ 目录下
  

  cd /usr/local/etc/ && ls   #查看keepalived的安装
  

  cp -r keepalived/ /etc/
  

  cd rc.d/init.d/
  

  cp keepalived /etc/init.d/
  

  cd ../..sysconfig/
  

  cp keepalived /etc/sysconfig/#两台主机都要安装keepalived
  


  复制安装文件到相应的目录下
  

  cd /etc/keepalived/
  

  vim keepalived.conf
  

  ! Configuration File for keepalived
  


  global_defs {
  

  notification_email {
  

  1165862826@qq.com   #接收警报的email地址,可以添加多个
  

  }
  

  notification_email_from keepalived@desktop99.example.com
  

  smtp_server 127.0.0.1   #使用本机转发email
  

  smtp_connect_timeout 30
  

  router_id LVS_DEVEL   #load balancer的标识ID,用于email警报
  

  }
  


  vrrp_instance VI_1 {
  

  state MASTER   #备机改为BACKUP,此状态是由priority的值来决定的,当
  

  priority的值小于备机的值,那么将会失去MASTER状态
  

  interface eth0   #HA监测网络接口
  

  virtual_router_id 99#vrid只能在1-255范围内,且主备的vrid必须相同
  

  priority 100    #备份调度主机的优先级要比主调度主机的小才行
  

  advert_int 1    #主备之间的通告间隔秒数
  

  authentication {   #主备切换时的验证
  

  auth_type PASS
  

  auth_pass 1111
  

  }
  

  virtual_ipaddress {#HA虚拟ip,可加多个
  

  192.168.0.240
  

  }
  

  }
  


  virtual_server 192.168.0.240 80 { 设置虚拟服务
  

  delay_loop 6   #每隔6秒查询realserver状态
  

  lb_algo rr   #lvs 调度算法,这里使用轮叫
  

  lb_kind DR   #lvs负载均衡机制,这里使用直连路由
  

  # nat_mask 255.255.255.0
  

  # persistence_timeout 50#同一IP的连接50秒内被分配到同一台realserver,如果是ftp的话,不需要注释持续链接。
  

  protocol TCP   #用TCP协议检查realserver状态
  


  real_server 192.168.0.34 80 {
  

  weight 1
  

  TCP_CHECK {
  

  connect_timeout 3
  

  nb_get_retry 3   #故障重试秒数
  

  delay_before_retry 3 #重试延迟
  

  }
  

  }
  

  real_server 192.168.0.81 80 {
  

  weight 1
  

  TCP_CHECK {
  

  connect_timeout 3
  

  nb_get_retry 3
  

  delay_before_retry 3
  

  }
  

  }
  

  }
  


  scp keepalived.conf 192.168.0.100:/etc/keepalived/
  

  scp过去,要改主机名,state状态,优先级要比主的小
  

  ln -s /usr/local/sbin/keepalived /usr/sbin/ keepalived服务只会在/usr/sbin目录下查找keepalived的命令    在两台调度主机上作连接,并启动
  

  /etc/init.d/keepalived start
  遇到的问题:
启动keepalived服务后,VIP并没有启动,需要手动配置。
  


  tail -f /var/log/messages
  

  VRRP_Instance(VI_1) Entering MASTER STATE 显示此提示信息表示好了
  

  在备份调度主机
  

  vim keepalived.conf
  

  ! Configuration File for keepalived
  


  global_defs {
  

  notification_email {
  

  1165862826@qq.com
  

  }
  

  notification_email_from keepalived@desktop100.example.com
  

  smtp_server 127.0.0.1
  

  smtp_connect_timeout 30
  

  router_id LVS_DEVEL
  

  }
  


  vrrp_instance VI_1 {
  

  state BACKUP
  

  interface eth0
  

  virtual_router_id 99
  

  priority 50
  

  advert_int 1
  

  authentication {
  

  auth_type PASS
  

  auth_pass 1111
  

  }
  

  virtual_ipaddress {
  

  192.168.0.240
  

  }
  

  }
  


  virtual_server 192.168.0.240 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.0.34 80 {
  

  weight 1
  

  TCP_CHECK {
  

  connect_timeout 3
  

  nb_get_retry 3
  

  delay_before_retry 3
  

  }
  

  }
  

  real_server 192.168.0.81 80 {
  

  weight 1
  

  TCP_CHECK {
  

  connect_timeout 3
  

  nb_get_retry 3
  

  delay_before_retry 3
  

  }
  

  }
  

  }
  

  备份调度主机的优先级要比主调度主机的小才行,
  

  tail -f /var/log/messages
  

  VRRP_Instance(VI_1) Entering BACKUP STATE 显示此提示信息表示好了
  


  分别在 realserver 上执行以下命令
  

  vi /etc/sysctl.conf
  

  net.ipv4.conf.all.arp_ignore = 1
  

  net.ipv4.conf.lo.arp_ignore = 1
  

  net.ipv4.conf.all.arp_announce = 2
  

  net.ipv4.conf.lo.arp_announce = 2
  

  sysctl -p
  

  ifconfig eth0:0 192.168.0.240 netmask 255.255.255.255 up
  

  route add -host 192.168.0.240 dev eth0:0
  


  如果在lo:0 上设置 192.168.0.240 ,则不需要关闭 arp,只需:
  

  ifconfig lo:0 192.168.0.240 netmask 255.255.255.255 up
  

  route add -host 192.168.0.240 dev lo:0
  


  echo `hostname` > /var/www/html/index.html
  

  service httpd start
  


  在两台调度主机:ip addr show 查看在eth0是否有vip,即192.168.0.240,哪台调度主机上面有vip,则此主机为主调度主机
  


  ipvsadm -l
  

  当访问时,两台调度主机的调度列表保持同步,这样当一台主机宕掉,另一台可以接替,且session会话不会丢失,只是转移到另一台主机。
  


  同前面的集群实验一样,如果访问时只能访问一台real server,则需手动设置arp:
  

  arp -d 192.168.0.240 删除之前的arp缓存
  

  arp -s 192.168.0.240 52:54:00:53:1f:c3
  


  注:keepalived 的高可用效率很高,当主调度主机挂掉,备份的立刻接替。
  


  测试:
  

  访问 http://192.168.0.240,看到页面在两个 realserver 上切换表示成功!
  

  你也可以通过 ipvsadm -Lnc 查看详细连接情况!



页: [1]
查看完整版本: keepalived lvs 负载均衡 集群