keepalived双主模式高可用工作于NAT模型下的ipvs

一、Keepalived简介

ipvs提供高可用性,能够生成ipvs规则;也可以使用脚本来帮助高可用其他应用程序,没有heartbeart重量级;主要用在高可用ipvs,及一些反向代理应用程序

1.拓扑图

说明:1.两个代理服务器通过VIP向外提供数据

2.两个代理服务器都可以代理后端的服务器

3.为测试方便,后端服务器至提供静态页面

2.ip规划

3.安装配置haproxy

关于haproxy的详细配置,

  1. [[email protected] ~]# cat /etc/haproxy/haproxy.cfg
  2. #---------------------------------------------------------------------
  3. # Example configuration for a possible web application.  See the
  4. # full configuration options online.
  5. #
  6. #   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
  7. #
  8. #---------------------------------------------------------------------
  9. #---------------------------------------------------------------------
  10. # Global settings
  11. #---------------------------------------------------------------------
  12. global
  13. # to have these messages end up in /var/log/haproxy.log you will
  14. # need to:
  15. #
  16. # 1) configure syslog to accept network log events.  This is done
  17. #    by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in
  18. #    /etc/sysconfig/syslog
  19. #
  20. # 2) configure local2 events to go to the /var/log/haproxy.log
  21. #   file. A line like the following can be added to
  22. #   /etc/sysconfig/syslog
  23. #
  24. #    local2.*                       /var/log/haproxy.log
  25. #
  26. log         127.0.0.1 local2
  27. chroot      /var/lib/haproxy
  28. pidfile     /var/run/haproxy.pid
  29. maxconn     4000
  30. user        haproxy
  31. group       haproxy
  32. daemon
  33. # turn on stats unix socket
  34. stats socket /var/lib/haproxy/stats
  35. #---------------------------------------------------------------------
  36. # common defaults that all the ‘listen‘ and ‘backend‘ sections will
  37. # use if not designated in their block
  38. #---------------------------------------------------------------------
  39. defaults
  40. mode                    http
  41. log                     global
  42. option                  httplog
  43. option                  dontlognull
  44. option http-server-close
  45. option forwardfor       except 127.0.0.0/8
  46. option                  redispatch
  47. retries                 3
  48. timeout http-request    10s
  49. timeout queue           1m
  50. timeout connect         10s
  51. timeout client          1m
  52. timeout server          1m
  53. timeout http-keep-alive 10s
  54. timeout check           10s
  55. maxconn                 3000
  56. #---------------------------------------------------------------------
  57. # main frontend which proxys to the backends
  58. #---------------------------------------------------------------------
  59. frontend  main *:80
  60. default_backend static
  61. #---------------------------------------------------------------------
  62. # static backend for serving up images, stylesheets and such
  63. #---------------------------------------------------------------------
  64. backend static
  65. balance     roundrobin
  66. server      node2 192.168.1.202:80 check maxconn 2000
  67. server      node3 192.168.1.203:80 check maxconn 2000
  68. #---------------------------------------------------------------------
  69. # round robin balancing between the various backends
  70. #---------------------------------------------------------------------

说明:两个节点的HAproxy的配置文件应该保持一样

4.测试haproxy的配置

5.安装配置keepalived

①、安装keepalived

keepalived的安装可以通过yum源来安装,也可以通过编译源码来安装,本处通过yum源赖安装

②、配置keepalived主节点

  1. [[email protected] ~]# cat /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  3. global_defs {  //全局参数
  4. notification_email { //邮件
  5. [email protected] //收件人地址
  6. }
  7. notification_email_from [email protected] //发件人地址
  8. smtp_server 127.0.0.1 //邮件服务器的地址
  9. smtp_connect_timeout 30 //间隔时间
  10. router_id LVS_DEVEL  //邮件服务器的组的id
  11. }
  12. vrrp_script chk_haproxy {
  13. script "killall -0 haproxy" //检查haproxy是否在线
  14. interval 1 //检查间隔时间
  15. weight -5 //如果检查失败,则权重-5
  16. }
  17. vrrp_instance VI_1 {   //定义第一个集群
  18. state MASTER      //初始状态为主节点,从节点应该为BACKUP
  19. interface eth0    //配置ip的端口
  20. virtual_router_id 51 //本组集群的id号,主从节点必须一样
  21. priority 100 //主节点的优先级,备用节点的优先级必须低于主节点
  22. advert_int 1 //心跳检查间隔时间
  23. authentication {
  24. auth_type PASS   //通信为明文密码通信
  25. auth_pass 1111 //通信的密码,主从节点必须一样
  26. }
  27. virtual_ipaddress {
  28. 192.168.1.99 //定义一个VIP
  29. }
  30. track_script {   //调用上面的命令
  31. chk_haproxy
  32. }
  33. }

③、配置keepalived从节点

  1. [[email protected] ~]# cat /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  3. global_defs {
  4. notification_email {
  5. [email protected]
  6. }
  7. notification_email_from [email protected]
  8. smtp_server 127.0.0.1
  9. smtp_connect_timeout 30
  10. router_id LVS_DEVEL
  11. }
  12. vrrp_script chk_haproxy {
  13. script "killall -0 haproxy"
  14. interval 1
  15. weight -5
  16. }
  17. vrrp_instance VI_1 {
  18. state BACKUP
  19. interface eth0
  20. virtual_router_id 51
  21. priority 99
  22. advert_int 1
  23. authentication {
  24. auth_type PASS
  25. auth_pass 1111
  26. }
  27. virtual_ipaddress {
  28. 192.168.1.99
  29. }
  30. track_script {
  31. chk_haproxy
  32. }
  33. }
  34. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  35. link/ether 00:0c:29:56:78:cd brd ff:ff:ff:ff:ff:ff
  36. inet 192.168.1.204/24 brd 192.168.1.255 scope global eth0
  37. inet 192.168.1.99/32 scope global eth0
  38. inet6 fe80::20c:29ff:fe56:78cd/64 scope link tentative dadfailed
  39. valid_lft forever preferred_lft forever

可以看到ip地址已经配置上去了

我们可以看到网页访问正常

下面,我们模拟服务器损坏,将node1上的haproxy关掉,看看ip地址是否会转移到node4上

  1. [[email protected] ~]# ip add
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5. inet6 ::1/128 scope host
  6. valid_lft forever preferred_lft forever
  7. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  8. link/ether 00:0c:29:56:78:cd brd ff:ff:ff:ff:ff:ff
  9. inet 192.168.1.204/24 brd 192.168.1.255 scope global eth0
  10. inet 192.168.1.99/32 scope global eth0
  11. inet6 fe80::20c:29ff:fe56:78cd/64 scope link tentative dadfailed
  12. valid_lft forever preferred_lft forever

查看网页是否能够访问正常

OK!!可以看到我们的页面访问正常,这就可以实现当前段的一个反向代理服务器宕机或者后端的一个web服务宕机,服务都可以正常对外提供

7.扩展

我们还可以自定义通知机制

  1. #!/bin/bash
  2. # Author: zero<[email protected]>
  3. # description: An example of notify script
  4. #
  5. vip=192.168.1.99
  6. contact=‘[email protected]‘
  7. notify() {
  8. mailsubject="`hostname` to be $1: $vip floating"
  9. mailbody="`date ‘+%F %H:%M:%S‘`: vrrp transition, `hostname` changed to be $1"
  10. echo $mailbody | mail -s "$mailsubject" $contact
  11. }
  12. case "$1" in
  13. master)
  14. notify master
  15. exit 0
  16. ;;
  17. backup)
  18. notify backup
  19. exit 0
  20. ;;
  21. fault)
  22. notify fault
  23. exit 0
  24. ;;
  25. *)
  26. echo ‘Usage: `basename $0` {master|backup|fault}‘
  27. exit 1
  28. ;;
  29. esac

在keepalived的配置文件中通过notify来调用,如下所示

  1. notify_master "/etc/keepalived/notify.sh master"
  2. notify_backup "/etc/keepalived/notify.sh backup"
  3. notify_fault "/etc/keepalived/notify.sh fault"
时间: 2024-08-08 21:56:08

keepalived双主模式高可用工作于NAT模型下的ipvs的相关文章

KeepAlived双主模式高可用集群

一.keepalived简介 keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测:通过共用的虚拟IP地址对外提供服务:每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器宕机,其虚拟IP地址将会被其他服务器接替(优先级决定接替顺序),实现高可用为后端主机提供服务.   二.keepalived组件 Keepalived组件介绍 core:ke

keepalived双主模式实现nginx高可用及LNAMMP架构

keepalived双主模式实现nginx高可用及LNAMMP架构 一.利用keepalived实现nginx调度器高可用: 二.构建LNAMMP架构: 1) Nginx既是前端调度器,又是缓存服务器: 2) 将php的session缓存于memcached中: 3) 在Apache和php上部署Discuz论坛程序: 4) 使用https连接,即使用户使用的是http协议也可以以https协议进行访问: ---------------------------------------------

企业级应用,持久层架构方案二(双主同步高可用二)

这是企业级应用,持久层架构方案的第二篇.在上一篇:企业级应用,持久层架构方案一(双主同步高可用)中.已经准备好了两台mysql数据库节点:hadoop001.hadoop002.两个节点互为主备,实现舒双主同步高可用,如何叫做双主同步高可用呢?其实要分为两个问题:一个是双主同步,互为主备:另一个是高可用.那么在上一篇中已经实现了双主互为主备,本篇通过keepalived虚拟ip实现高可用: 1.安装keepalived 1.1.hadoop001节点 #安装keepalived yum inst

初识MariaDB之9——keepalive+GTID双主实现高可用

一.背景介绍 传统的主从复制架构下,尽管可以使用半同步的方式进行读写分离,但是主节点仍然存在单点隐患,在规模不大的情况下可以采用keepalive+双主的模式对主节点进行高可用保护,客户端通过VIP访问MySQL服务器 二.实现方式 keepalive是通过vrrp协议实现,之前有过介绍这里不多赘述,要注意的是在云主机是禁用vrrp协议的.本次实验采用CentOS7.4,数据库版本为MariaDB-10.2.14,2台MySQL服务器互为主从,172.16.10.30/24为keepalived

keepalived+mysql双主复制高可用方案

MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了双主对外的统一接口以及自动检查.失败切换机制.联合使用,可以实现MySQL数据库的高可用方案. 实验环境:OS:centos 6.x x86_64系统MySQL版本: :mysql 5.6.22   64 位A: master :192.168.79.3 3306B: slave :192.168.

tomcat + keepalived 实现主备高可用

tomacat7+ keepalived 高可用集群配置 服务器环境规划    node1: 10.10.3.16   app01    node2: 10.10.3.17    app02    vip:软件环境规划    操作系统:oracle linux6.8  4.1.12-37.4.1.el6uek.x86_64    keepalived:keepalived-1.3.5    Java:jdk-1.7.0_80    Tomcat:apache-tomcat-7.0.81    配

keepalived(双主模式)+haproxy+mysql_slave

环境说明: debian系统 keepalived_master1 +haproxy 192.168.7.32 keepalived_master1 +haproxy 192.168.9.52 mysql_master 192.168.6.123 mysql_slave1 192.168.4.21 mysql_slave2 192.168.9.53 vip1:192.168.8.102 vip2:192.168.8.103 一 keepalvied配置1 keepalived配置文件(maste

Keepalived双主模式配置流程

实验说明 1)keepalived 支持配置多个VRRP实例,每个实例对应一个业务 2)本次实验将实现 keepalived 的互为主备: 业务A:keepalived01为Master,keepalived02为Backup 业务B:keepalived01为Backup,keepalived02为Master 环境介绍 1)K1 Hostname:keepalived01.example.com IP:192.168.3.31 OS:Centos 7 2)K2 Hostname:keepal

nginx+keepalived高可用及双主模式

高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠. 2.Nginx+keepalived 双主配置 这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境. 1.Nginx+keepali