Haproxy+Keepalived集群实例配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://koumm.blog.51cto.com/703525/1733880

环境说明:

操作系统: Redhat 6.5 x64,本文采用rpm方式安装haproxy,keepalived。   
如果采用原码安装:可以参考基础CentOS5.9 Haproxy+Keepalived+Jboss集群实施架构一例    
app1: 192.168.0.24    
app1: 192.168.0.25    
VIP : 192.168.0.26

http1:192.168.0.24:8080  主机配置LAP环境。   
http2:192.168.0.25:8080  主机配置LAP环境。

一、双机Keepalived配置

实现一个VIP出现,出例采用VIP地址是192.168.0.26。

1.安装keepalived软件

说明:RHEL/CentOS/OEL6.X安装版本中已经集成了keepalive-1.2.7,以及haproxy软件包经过安装没有问题。   
在app1,app2两个节点上直接采用RPM包安装。


1

2

3

4

5

6

7

8

9

10

# rpm -ivh keepalived-1.2.7-3.el6.x86_64.rpm net-snmp-utils-5.5-49.el6.x86_64.rpm net-snmp-libs-5.5-49.el6.x86_64.rpm lm_sensors-3.1.1-17.el6.x86_64.rpm lm_sensors-

devel-3.1.1-17.el6.x86_64.rpm lm_sensors-libs-3.1.1-17.el6.x86_64.rpm    

Preparing...                ########################################### [100%]    

   1:lm_sensors-libs        ########################################### [ 17%]    

   2:net-snmp-libs          ########################################### [ 33%]    

   3:keepalived             ########################################### [ 50%]    

   4:net-snmp-utils         ########################################### [ 67%]    

   5:lm_sensors             ########################################### [ 83%]    

   6:lm_sensors-devel       ########################################### [100%]    

#

2. 创建keepalived配置文件

1) 在app1 节点一上配置文件

说明: 修改配置文件, 绑定的网卡是eth0,从机就是优先级与本机IP不一样外,其它都是一样,相比之前的示例增加了监控脚本。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

# vi /etc/keepalived/keepalived.conf  

! Configuration File for keepalived    

global_defs {    

   notification_email {    

     xxx@126.com    

   }    

   notification_email_from service@abc.com    

   smtp_server 127.0.0.1    

   smtp_connect_timeout 30    

   router_id LVS_DEVEL    

}

vrrp_script chk_haproxy {   

    script "killall -0 haproxy"    

    interval 1    

    weight -2    

}

vrrp_instance VI_1 {   

    state MASTER     

    interface eth0    

    virtual_router_id 51    

    mcast_src_ip 192.168.0.24  

    priority 100      

    advert_int 1    

    authentication {    

        auth_type PASS    

        auth_pass 876543    

    }    

    virtual_ipaddress {    

        192.168.0.26/24 dev eth0 label eth0:1    

    }    

    track_interface {    

        eth0    

    }    

    track_script {    

        chk_haproxy    

    }    

}

2) 在app2节点二上配置文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

# vi /etc/keepalived/keepalived.conf  

! Configuration File for keepalived    

global_defs {    

   notification_email {    

     xxx@126.com    

   }    

   notification_email_from service@abc.com    

   smtp_server 127.0.0.1    

   smtp_connect_timeout 30    

   router_id LVS_DEVEL    

}

vrrp_script chk_haproxy {   

    script "killall -0 haproxy"     

    interval 1     

    weight -2  

}

vrrp_instance VI_1 {   

    state MASTER     

    interface eth0    

    virtual_router_id 51    

    mcast_src_ip 192.168.0.25    

    priority 99  

    advert_int 1    

    authentication {    

        auth_type PASS    

        auth_pass 876543    

    }    

    virtual_ipaddress {    

        192.168.0.26/24  dev eth0 label eth0:1    

    }    

    track_interface {    

        eth0    

    }    

    track_script {    

        chk_haproxy    

    }    

}

3 .在app1,app2两节点上启动与创建keepalived服务

1) 启动服务并加为开机启动:


1

2

service keepalived start    

chkconfig keepalived on

2) 测试并观察VIP漂移情况

(1) VIP地址切换观察

说明:两种方式切换VIP, 一个是关闭haproxy代理服务,一个是关闭相关节点的Keepalived服务。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[root@app1 /]# service keepalived start    

Starting keepalived: [ OK ]

[root@app1 keepalived]# ip a   

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    

    inet 127.0.0.1/8 scope host lo    

    inet6 ::1/128 scope host     

       valid_lft forever preferred_lft forever    

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    

    link/ether 00:0c:29:4c:39:43 brd ff:ff:ff:ff:ff:ff    

    inet 192.168.0.24/24 brd 192.168.0.255 scope global eth0    

    inet 192.168.0.26/24 scope global secondary eth0:1    

    inet6 fe80::20c:29ff:fe4c:3943/64 scope link     

       valid_lft forever preferred_lft forever    

[root@app1 keepalived]#

 

[root@app2 keepalived]# ip a    

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    

    inet 127.0.0.1/8 scope host lo    

    inet6 ::1/128 scope host     

       valid_lft forever preferred_lft forever    

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    

    link/ether 00:0c:29:cf:05:99 brd ff:ff:ff:ff:ff:ff    

    inet 192.168.0.25/24 brd 192.168.0.255 scope global eth0    

    inet6 fe80::20c:29ff:fecf:599/64 scope link     

       valid_lft forever preferred_lft forever    

[root@app2 keepalived]#

注:可以关闭keepalived服务,以及关闭haproxy服务,通过tail -f /var/log/messages观察VIP移动情况。

Jan 11 12:54:19 app2 Keepalived_vrrp[26911]: VRRP_Instance(VI_1) Received higher prio advert   

Jan 11 12:54:19 app2 Keepalived_vrrp[26911]: VRRP_Instance(VI_1) Entering BACKUP STATE    

Jan 11 12:54:19 app2 Keepalived_vrrp[26911]: VRRP_Instance(VI_1) removing protocol VIPs.    

Jan 11 12:54:19 app2 Keepalived_healthcheckers[26910]: Netlink reflector reports IP 192.168.0.26 removed

二、HAproxy反向代理配置

app1, app2配置操作

1. 添加非本机IP邦定支持

# vi /etc/sysctl.conf    
net.ipv4.ip_nonlocal_bind = 1    
# sysctl -p

2. 安装haproxy软件

# rpm -ivh haproxy-1.4.24-2.el6.x86_64.rpm

3. 创建配置文件

1)app1上创建配置文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

# vi /usr/local/haproxy/conf/haproxy.cfg

global   

      log  127.0.0.1   local0     

      maxconn     4000     

      chroot      /var/lib/haproxy    

      pidfile     /var/run/haproxy.pid    

      user        haproxy    

      group       haproxy    

      daemon    

      nbproc 1  

      stats socket /var/lib/haproxy/stats

defaults   

      log       global       

      mode      http   

      option    httplog   

      option    dontlognull     

      option    redispatch   

      option    httpclose     

      option    forwardfor     

      retries   3              

      maxconn   2000     

      contimeout  5000   

      clitimeout  50000     

      srvtimeout  50000     

      timeout check   1s  

      timeout http-request    10s     

      timeout queue           1m  

      timeout connect         10s     

      timeout client          1m  

      timeout server          1m  

      timeout http-keep-alive 10s

listen stats   

      mode http    

      bind 0.0.0.0:91  

      stats enable     

      stats uri /admin     

      stats realm "Admin console"     

      stats auth admin:123456     

      stats hide-version     

      stats refresh 10s     

      stats admin if TRUE

frontend web_proxy    

      bind *:80    

      mode http    

      acl url_dynamic path_end -i .php    

      use_backend phpserver if url_dynamic     

      default_backend webservers

backend webservers   

      balance roundrobin    

      option httpchk GET /test.html HTTP/1.0\r\nHost:192.168.0.26     

      server node01 192.168.0.24:8080 weight 3 check inter 2000 rise 2 fall 1     

      server node02 192.168.0.25:8080 weight 3 check inter 2000 rise 2 fall 1

backend phpserver   

      balance roundrobin    

      option httpchk GET /test.php     

      server node01 192.168.0.24:8080 weight 3 check inter 2000 rise 2 fall 1

  
2)app2上创建配置文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

# vi /usr/local/haproxy/conf/haproxy.cfg

global   

      log  127.0.0.1   local0     

      maxconn 4000     

      chroot      /var/lib/haproxy    

      pidfile     /var/run/haproxy.pid    

      user        haproxy    

      group       haproxy    

      daemon    

      nbproc 1  

      stats socket /var/lib/haproxy/stats

defaults   

      log       global       

      mode      http   

      option    httplog   

      option    dontlognull     

      option    redispatch   

      option    httpclose     

      option    forwardfor     

      retries   3              

      maxconn   2000     

      contimeout  5000   

      clitimeout  50000     

      srvtimeout  50000     

      timeout check   1s  

      timeout http-request    10s     

      timeout queue           1m  

      timeout connect         10s     

      timeout client          1m  

      timeout server          1m  

      timeout http-keep-alive 10s

listen stats   

      mode http    

      bind 0.0.0.0:91  

      stats enable     

      stats uri /admin     

      stats realm "Admin console"     

      stats auth admin:123456     

      stats hide-version     

      stats refresh 10s     

      stats admin if TRUE

frontend web_proxy    

      bind *:80    

      mode http    

      acl url_dynamic path_end -i .php    

      use_backend phpserver if url_dynamic     

      default_backend webservers

backend webservers   

      balance roundrobin    

      option httpchk GET /test.html HTTP/1.0\r\nHost:192.168.0.26     

      server node01 192.168.0.24:8080 weight 3 check inter 2000 rise 2 fall 1     

      server node02 192.168.0.25:8080 weight 3 check inter 2000 rise 2 fall 1

backend phpserver   

      balance roundrobin    

      option httpchk GET /test.html     

      server node01 192.168.0.24:8080 weight 3 check inter 2000 rise 2 fall 1

说明:两节点互为主备模式,均优化将本机的节点应用做为主节点,也可以为负载均衡模式, 主例也配置了一个动静分离的模式。

    

4. app1,app2上配置HAproxy日志文件

Haproxy日志配置,否则默认是不记haproxy日志的,注意与RHEL/CentOS5.x版本的区别。


1

2

3

4

5

6

7

8

9

# vi /etc/rsyslog.conf

$ModLoad imudp   

$UDPServerRun 514    

$UDPServerAddress 127.0.0.1    

local0.* /var/log/haproxy.log     

*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages

说明: 第五行是去掉在/var/log/message再记录haproxy.log日志的功能的。  

直接手动执行   

service rsyslog restart

注:Redhat/Centos6.X 默认haproxy服务运行采用haproxy用户,RPM包安装haproxy,系统已自动配置日录文件轮询功能。

三、配置Keepalived注意点小结:

1,是否有多VIP地址,如果有的话,需要配置多个vrrp_instance实例,双机互备。   
2,监控脚本,用于监控nginx,或haproxy代理服务器的存活状态,用于切换VIP地址。    
3,两种方式切换VIP,一个是关闭代理服务,一个是关闭相关节点的Keepalived服务器。

本文出自 “koumm的linux技术博客” 博客,请务必保留此出处http://koumm.blog.51cto.com/703525/1733880

时间: 2024-12-23 18:06:00

Haproxy+Keepalived集群实例配置的相关文章

国产数据库之达梦数据库 - DM7 MPP集群安装配置

武汉达梦数据库作为国产数据库较有代表性的企业,在数据库研发方面投入了大量的精力,其自主研发的达梦数据库DM7,除了具有单机版可与Oracle相媲美的能力外,同时也研发了一款无共享MPP架构的数据库软件,主要面向在线分析(OLAP)领域. 下面的分享主要参考和使用达梦公司官网提供的下载包及安装文档,感兴趣的同学请自行下载.下载链接:http://www.dameng.com/service/download.shtml 1.MPP集群规划 本集群打算使用2台服务器,每台服务器规划3个数据库实例,总

HBase-0.90.4集群安装配置

HBase是Hadoop数据库,能够实现随机.实时读写你的Big Data,它是Google的Bigtable的开源实现,可以参考Bigtable的论文Bigtable: A Distributed Storage System for Structured.HBase的存储模型可以如下三个词来概括:distributed, versioned, column-oriented.HBase并非只能在HDFS文件系统上使用, 你可以应用在你的本地文件系统上部署HBase实例来存储数据. 准备工作

[喵咪MQ(3)]RabbitMQ集群安装配置

[喵咪MQ(3)]RabbitMQ集群安装配置 w-blog博客 在各项生产环境使用中,容灾总是一个很重要的话题,如果单点故障会导致整个系统奔溃或者是丢失数据是不是好气好气的,领导会追着你问这是怎么了?你只能说是我们没有经验什么什么组件故障了,这个是低级玩法,高级玩法是配置好集群容灾,告诉老板死一两台机器宕机了没有事没有影响,所以我们今天就来讲讲RabbitMQ的集群模式... 附上: 喵了个咪的博客:w-blog.cn RabbitMQ官网 :http://www.rabbitmq.com/

【Big Data】HADOOP集群的配置(一)

                       Hadoop集群的配置(一) 1.    实验准备 1.1    目的: 在虚拟机环境下,让同学们学会从零开始配置Hadoop-2.2集群,并尝试在真实环境下搭建集群. 1.2    主要内容: 物理机器总共4台,想配置基于物理机的Hadoop集群中包括4个节点: 1 个 Master, 3个 Salve ,节点之间局域网连接,可以相互 ping通.IP的分布如表1所示.             表1        4个节点的IP地址分配及角色 Ma

【Big Data】HADOOP集群的配置(二)

Hadoop集群的配置(二) 2.8 节点之间的免密码通信 1.什么是SSH SSH是Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定:SSH为建立在应用层和传输层基础上的安全协议.SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用SSH协议可以有效防止远程管理过程中的信息泄露问题. 从客户端来看,SSH提供两种级别的安全验证. 第一种级别  基于口令的安全验证 只要知道自己的帐号和口令,就可以登录到远程主机.所有

《Hadoop集群与安全》一2.1 在Hadoop集群中配置操作系统

2.1 在Hadoop集群中配置操作系统 正如之前所提到的,Hadoop能够运行在几乎所有Linux版本的系统上.本章随后的讲解会将重点放在CentOS 6.x上,CentOS和Red Hat是Hadoop相关产品安装最为普及的平台.要掌握这些步骤并不难,对于Debian系统所有与配置Hadoop组件的步骤都是一致的,因此读者可以根据自身需求替换对应的包管理器. 2.1.1 选择和设置文件系统 现代Linux系统支持多种不同的文件系统:如EXT3.EXT4.XFS.BTRFS,等等.针对特定的工

Apache+tomcat负载均衡以及集群环境配置安装包+详细教程

问题描述 一:软件环境(所需全部软件已经一起打包,安装使用即可)1.Apache2.0.65(一个)2.tomcat6.0.41(二个或者两个以上)3.mod_jk.so(Apache与Tomcat的连接器,并藉此附带提供集群和负载均衡的功能)二:负载均衡配置(1)Apache配置1.把Apache安装在D:/ApacheGroup/Apache2 解压两分Tomcat,分别在D:/ApacheGroup/apache-tomcat-6.0.41_1,D:/ApacheGroup/apache-

深入分析redis cluster 集群安装配置详解

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集.redis3.0以前,只支持主从同步的,如果主的挂了,写入就成问题了.3.0出来后就可以很好帮我们解决这个问题. 目前redis 3.0还不稳定,如果要用在生产环境中,要慎重. 一,redis服务器说明 192.168.10.219 6379  192.168.10.219 6380  192.168.10.219 6381    192.168.10.220 6382  192.168.10.220 6383  192.168

ElasticSearch-2.0.0集群安装配置与API使用实践

ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了搜索引擎操作的基本API,如果要实现一个能够使用的搜索引擎系统,还需要自己基于Lucene的API去实现,工作量很大,而且还需要很好地掌握Lucene的底层实现原理. ElasticSearch是一个完整的分布式搜索引擎系统,它的一些基本特性包括如下: 全文检索 提供插件机制,可以共享重用插件的功能