最近在研究服务器高可用集群 (HA)……

Keepalived 是用C写的软路由。提供负载均衡与高可用特性。

负载均衡利用IPVS技术

高可用通过VRRP协议实现

更难能的贵的是,一直到最近还在更新

最近版本 Release 1.3.5 发布于 2017-03-19

安装过程官方推荐从源码编译,当然,负载均衡部分基于LVS,所以LVS部分直接YUM安装。

目标:


实现一个如下图所示的高可用服务器集群。

集群由两台调度器(DirectorServer,DS),三台真实服务器(RealServer,RS)构成。调度器一主一备,三台真实服务器进行负载均衡提供服务。

配置完成后只要能保证至少一台DS和一台RS工作正常,即可对外提供服务。并且管理员可以在邮箱收到相关服务器启停的邮件汇报。

准备:


服务器使用Oracle VM VirtualBox虚拟实现,虚拟机网络使用桥接,所有虚拟机(五台服务器)均在统一内网中,负载均衡工作在LVS的DR模式下。

虚拟机信息:

DS1 - master(CentOS-6.8-x86_64-minimal) : 192.168.0.201

DS2 - backup(CentOS-6.8-x86_64-minimal): 192.168.0.202

RS1 (CentOS-6.8-x86_64-minimal): 192.168.0.203

RS2 (CentOS-6.8-x86_64-minimal): 192.168.0.204

RS3 (CentOS-6.8-x86_64-minimal): 192.168.0.205

VIP: 192.168.0.200

keepalived编译与安装(两台DS上进行)


1)安装依赖库,配置防火墙开放端口。

yum install gcc openssl-devel libnl3-devel ipset-devel iptables-devel libnfnetlink-devel net-snmp-devel -y

iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
service iptables save

2)获取最近版本源代码。

wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz

tar -zxvf keepalived-1.3.5.tar.gz

3)进入目录,编译。

cd keepalived-1.3.5

./configure
 make && make install

4)配置系统服务和开机启动:

cp ./keepalived/etc/init.d/keepalived /etc/init.d/
cp ./keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/

chkconfig keepalived on

service keepalived status  #验证系统服务安装成功

5)一些清理工作:

cd ..
rm -rf keepalived-1.3.5

keepalived配置


1)配置RS,提供WEB服务

三台RS使用Nginx对外提供服务,三个RS提供服务器的端口必须一致,例如80.

为了验证负载均衡效果,可以让三台服务器返回的页面略有区别,比如返回的页面中带上自己的hostname

计划配置LVS负载均衡工作在DR模式下。所以需要对RS进行ARP抑制配置。

配置脚本 realserver.sh 如下:

#!/bin/bash
VIP=192.168.0.200
source /etc/rc.d/init.d/functions
case "$1" in
start)  ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP  /sbin/route add -host $VIP dev lo:0  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  echo "RealServer Start OK"  ;;
stop)  ifconfig lo:0 down  route del $VIP >/dev/null 2>&1  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  echo "RealServer Stoped"  ;;  *)  echo "Usage: $0 {start|stop}"  exit 1
esac
exit 0

执行时使用  /path/to/realserver.sh start

三台RS均需要执行。

2)配置DS,实现HA与负载调度。

Keepalived的负载均衡功能直接利用了LVS,所以使用Keepalived自带的virtual_server配置方式配置负载均衡前,需要为两台DS均安装LVS:

yum install ipvsadm -y

LVS的DR模式没有端口转发功能。调度器对包暴漏的端口和服务器对外提供的服务使用的端口必须是一致的(本案为80端口)。

两台DS均需要开放80端口,以对外提供服务:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save

DS-Master创建keepalived配置文件:

mkdir /etc/keepalived
vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {  notification_email {  guang384@qq.com}  notification_email_from guang384@163.comsmtp_server 127.0.0.1 #使用本地STMP服务,配置方式参考另一篇文章smtp_connect_timeout 30 #服务器全局属性,在收到提醒邮件的时候会用来作为当前服务器的标识,所以每台服务器都要唯一 router_id LVS_DR_DS1  }
vrrp_instance VI_1 {  state MASTER    #指定Keepalived的角色, MASTER 为主机服务器, BACKUP 为备用服务器
    interface eth0virtual_router_id 51  priority 100    #定义优先级,数字越大,优先级越高,主DR必须大于备用DR。  advert_int 1    #心跳间隔,MASTER每隔1秒发送报文告知组内其他机器自己还活着。(主备状态依靠心跳维持)
    authentication {auth_type PASSauth_pass 1111}  virtual_ipaddress {192.168.0.200  #设置主DR的虚拟IP地址(virtual IP),可多设,但必须每行1个  }smtp_alert #使用邮件通知
}
virtual_server 192.168.0.200 80 {  #注意IP地址与端口号之间用空格隔开  delay_loop 1        #设置健康检查时间,单位是秒  (是的,keepalived健康检查也是轮询模式)lb_algo rr          #设置负载调度算法,默认为rr,即轮询算法,最优秀是wlc算法  lb_kind DR          #设置LVS实现LB机制,有NAT、TUNN和DR三个模式可选  #persistence_timeout 50  #保持客户端的请求在这个时间段内全部发到同一个真实服务器,单位为秒  protocol TCP        #指定转发协议类型,有TCP和UDP两种  real_server 192.168.0.203 80 {  weight 1          #配置节点权值,数字越大权值越高  TCP_CHECK {  connect_timeout 2     #表示2秒无响应,则超时  retry 2        #表示重试次数  delay_before_retry 1  #表示重试间隔  }  }  real_server 192.168.0.204 80 {  weight 1TCP_CHECK {connect_timeout 2retry 2delay_before_retry 1}  } real_server 192.168.0.205 80 {  weight 1TCP_CHECK {connect_timeout 2retry 2delay_before_retry 1}  }
}

同样配置文件复制到 DS-BACKUP

修改3个地方(很多文章说只需要配置vrrp_instance中的 状态 和 优先级 两处即可,但是为了邮件提示的准确性,需要将 global_defs.route_id 配置不一样,当然,如果没有配置邮件提示而使用其他方式如nagios对服务器进行监控,这里配置什么其实无所谓)

keepalived.conf修改三个地方

1) router_id LVS_DR_DS2

2) state BACKUP

3 )  priority 50

keepalived 启动和停止:

service keepalived start|stop

keepalived执行日志默认位置:

tail -f  /var/log/messages

直接前台模式启动(for 调试) :

keepalived -l -D -n -d

测试


略……   _(:3」∠)_  -

转载于:https://www.cnblogs.com/tugeler/p/6621959.html

从编译安装Keepalived 到 配置 负载均衡(LVS-DR)相关推荐

  1. centos安装nginx,配置负载均衡

     1.安装nginx 安装教程,参照:http://mp.weixin.qq.com/s/RVaRlRpHqZRjCaXGmOlfKw 2.反向代理的配置 修改部署目录下conf子目录的nginx ...

  2. Lvs+Keepalived高可用负载均衡配置

    Lvs+Keepalived高可用负载均衡配置 环境介绍: vip=192.168.3.80   (负载均衡虚拟ip) lvs+keepalived_master          eth0:172. ...

  3. Nginx 概述 如何正规安装 静态网页配置 反向代理配置 负载均衡配置

    目录 1. 基本概念 1.1 Nginx初步认识 1.2 正向/反向代理 1.3 域名和IP 2. Nginx安装和配置 2.1 安装Nginx 2.2 配置 3. Nginx的使用 3.1 部署静态 ...

  4. NGINX基于Tomcat配置负载均衡

    NGINX基于Tomcat配置负载均衡 本部署指南说明了如何使用NGINX开源和NGINX Plus在Apache Tomcat TM应用程序服务器池之间平衡HTTP和HTTPS流量.本指南中的详细说 ...

  5. 案例一(haproxy+keepalived高可用负载均衡系统)【转】

    1.搭建环境描述: 操作系统: [root@HA-1 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角 ...

  6. keepalived实现nginx负载均衡

    keepalived 实现nginx 负载均衡+主备高可用 概述 nginx作为负载均衡器,所有请求都到nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机,后端web服务将无法提供 ...

  7. keepalived介绍和keepalived实现nginx负载均衡机高可用

    1. keepalived简介 1.1 keepalived是什么? Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...

  8. APACHE 2.2.8+TOMCAT6.0.14配置负载均衡

    作者: jiake0504  链接:http://jiake0504.javaeye.com/blog/265000  发表时间: 2008年11月10日 声明:本文系JavaEye网站发布的原创博客 ...

  9. nginx 负载均衡 404_nginx配置负载均衡

    - 负载均衡是网络基础架构的一个非常关键的组成部分,有了负载均衡,我们可以把应用服务器部署多台,避免了服务宕机,也增强了服务的性能及可用性. - 负载均衡的算法有很多 ,这里只是简单提下, - **轮 ...

最新文章

  1. 打造“新基建”核心支柱 数据中心产业期待提速提质
  2. 【SSM面向CRUD编程专栏 3】关于黑马程序员最全SSM框架教程视频,P37集老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题
  3. java 快速排序 递归_Java递归快速入门
  4. mysql datetime 比较大小_【知识点】分布式事务数据库 —-MySQL 数据库开发规范(第一节)...
  5. python3使用print打印带颜色的字符串
  6. type=button 字体大一点_CAD设计师喜欢用SHX字体的原因你知道吗?
  7. 我的CSDN账号被偷了
  8. JavaWeb教程———过滤器
  9. python+selenium从excel读取成语到谷歌搜索得到搜索结论数
  10. 辅助进度控制的计算机软件是指,辅助进度控制的计算机软件是指以( )为核心的项目管理软件包。...
  11. 链家数据爬取+地图找房
  12. C++ exception with description “bad optional access“ thrown in the test body.
  13. 联想服务器配置 RAID
  14. 网络编程和网络应用开发
  15. codeforces 584E
  16. 【大数据】 大数据计算系统
  17. Mac zshrc文件找不到问题
  18. Android面试宝典(转)
  19. 自然语言处理—文本情感分析
  20. B - Derangement

热门文章

  1. Android 单击+双击+短按+长按 逻辑
  2. 【Redis】17.Cluster集群结构搭建
  3. React 中 keys 的作用是什么?
  4. java.lang包—类加载器ClassLoader类
  5. Unable to resolve dependency for xxx, Could not resolve project
  6. 小程序上拉加载,下拉刷新
  7. RHEL 6.5 + Oracle 11g安装
  8. KNN算法的简单实现
  9. ARM LCD简单绘图API
  10. 零基础如何学习Java,这里分享一些技巧心得