设为首页 收藏本站
查看: 1437|回复: 0

[经验分享] 高可用的负载均衡配置方法(Haproxy+KeepAlived)

[复制链接]

尚未签到

发表于 2015-11-20 13:20:52 | 显示全部楼层 |阅读模式
1.什么是HAProxy

  HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
  

2.什么是keepalived
  keepalived是一个类似于layer3,4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器.

3.Haproxy+KeepAlived

用Haproxy+KeepAlived实现高可用的负载均衡方案,用Haproxy做负载匀衡,用KeepAlived做高可用性Health Check,在Master与Slave上面分别配置相同的虚拟路由vrrp(192.168.187.61),当Master宕机后,虚拟路由负载自动由Master转到Slave,负载由Slave完成,当Master恢复以后,自动又恢复到Master。服务器的布署结构如下:Master(192.168.187.129);Slave(192.168.187.132);VRRP(192.168.187.61);SERVER1(192.168.2.68);SERVER2(192.168.2.60)

DSC0000.jpg



4.Haproxy的安装配置过程

4.1 Haproxy安装方法

在Master(192.168.187.129)操作

下载

[iyunv@localhost /]:wget
 http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.23.tar.gz

解压缩

[iyunv@localhost/]:tar xzvf haproxy-1.4.23.tar.gz                                      

编译haproxy,进入解压后的haproxy的目录,用下列命令进行编译:

[iyunv@localhosthaproxy-1.4.23] make TARGET=linux26              

[iyunv@localhosthaproxy-1.4.23] make PREFX=/usr/local/haproxy install                 

安装完成后会在安装目录下生成doc ,sbin ,share三个文件夹。解压的源码文件也可以删除掉。

  创建pid文件,日志文件,配置文件,在安装目录下建立配置文件目录
[iyunv@localhost sbin]mkdir conf

[iyunv@localhost sbin]mkdir logs

[iyunv@localhost logs]vihaproxy.log

[iyunv@localhost logs]vihaproxy.pid

在新创建的目录下创建配置文件

  [iyunv@localhostconf]vi haproxy.cfg
4.2 Haproxy的配置

在创建的haproxy.cfg文件中填入

  #全局配置
global

#日志设置

log 127.0.0.1 local0 info #[err warning info debug]

#最大连接数

maxconn 4096

#用户

user root

#用户组

group root

#使HAProxy进程进入后台运行。这是推荐的运行模式

Daemon

#创建1个进程进入deamon模式运行

nbproc 1

#将所有进程的pid写入文件<pidfile>启动进程的用户必须有权限访问此文件

pidfile /usr/local/haproxy/sbin/logs/haproxy.pid

  #默认配置
defaults  

  #默认的最大连接数
maxconn2000

#连接超时

contimeout5000

#客户端超时

clitimeout30000

#服务器超时

srvtimeout30000

#统计页面配置

listenadmin_stats

      #监听端口
bind 0.0.0.0:1080

#http七层模式

modehttp

#日志设置

log127.0.0.1 local0 err

#统计页面url

stats uri /admin_stats

#监听配置

listen http_in

   #监听端口

bind *:1081

#http七层模式

mode http

#负载均衡的方式,source
IP经过hash计算后 指定到固定的真实服务器上

balance source

#允许插入serverid到cookie中,serverid后面可以定义

cookie SERVERID

  #日志设置
log 127.0.0.1 local0 err


# 要负载的后台服务器
#服务器定义,cookie 1表示serverid1
# weight  -- 调节服务器的负重
# check -- 允许对该服务器进行健康检查
# inter  -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认&#20540; 2000(ms)
# rise  -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认&#20540; 2
# fall  -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认&#20540; 3
# maxconn  -- 指定可被发送到该服务器的最大并发连接数

server localhost *  cookie 1 weight 3 check inter 2000 rise 2 fall 3

#用来做测试的两台实体机器的IP

    server 192.168.2.68 192.168.2.68:8081cookie 2 weight 3 check inter 2000 rise 2 fall 3

server 192.168.2.60 192.168.2.60:80  cookie 3 weight 3 check inter 2000 rise 2 fall3


4.3.启动haproxy测试

  如下是启动haproxy的方式.
[iyunv@localhost sbin]./haproxy –f./conf/haproxy.cfg              

启动以后用以下命令进行查看,如下:

DSC0001.jpg



可以看到haproxy已经以进程的方式启动了.

在IE浏览器中输入http://ip:1080/admin_stats.这是Haproxy的运行状态,如下图:

DSC0002.jpg



4.4.修改日志配置

使用root账户首先修改/etc/sysconfig/syslog文件,将SYSLOGD_OPTIONS=&quot;-m0”修改为SYSLOGD_OPTIONS=&quot;-m 0 -r -x&quot;,支持收集远程服务器日志。然后修改/etc/syslog.conf,增加如下语句:

local0.* /usr/local/haproxy/sbin/logs/haproxy.log
// haproxy.log地址代表了需要存储日志的地址,其中local0这个级别要和haproxy.cfg配置的log级别一样

执行service syslog restart,重新启动系统日志器


另外一台Slave(192.168.187.132)做为备用服务器的机器按照同样的配置


5.KeepAlived安装配置

5.1 KeepAlived的安装方法

下载keepalived

[iyunv@localhost /]:wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

解压缩

[iyunv@localhost /]:tar xzvf keepalived-1.2.7.tar.gz                              

安装

[iyunv@localhost /]cd keepalived-1.2.7                                               

[iyunv@localhost keepalived-1.2.7]./configure                                      

[iyunv@localhost keepalived-1.2.7]make                                            

[iyunv@localhost keepalived-1.2.7]make install                                    

5.2 将keepalived加入服务

按照上述安装方法,keepalived安装完成后,自动安装在/usr/local/sbin目录下面,配置文件

位置在/usr/local/etc/keepalived目录下面,具体操作如下:

/*在配置文件夹/etc下面建立keepalived文件夹*/

Mkdir /etc/keepalived

/*将配置文件复制过去*/

Cp /usr/local/etc/keepalived/keepalived.conf  /etc/keepalived/   

/*将keepalived文件复制到/etc/init.d文件夹,这个文件夹存放可执行的服务程序*/

Cp /usr/local/etc/rc.d/init.d/keepalived   /etc/init.d  

/*将安装目录下面的系统配置文件复制到/etc/sysconfig,这是一个存放系统配文件的目录*/

Cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig/

/*开启服务*/

Service keepalived start

/*停止服务*/

Service keepalived stop

/*重启服务*/

Service keepalived restart


5.3  KeepAlived的配置

安装好以后,对其进行配置如下:

有两台机器(MASTER)所在的192.168.187.129与(SLAVE)192.168.187.132,用(VRRP)192.168.187.61做虚拟IP,在两台服务器中飘动,如下图:

DSC0003.jpg



在两台服各器中的/etc/keepalived文件夹中的keepalived.conf下进行配置:

Master的设置  

192.168.187.129

global_defs {

   router_id Haproxy  #当前节点名

}

vrrp_instance VI_1{

    state MASTER       #指定Haproxy节点为主节点 备用节点上设置为BACKUP即可

interface eth0       #绑定虚拟IP的网络接口

virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP

priority 150         #主节点的优先级(1-254之间),备用节点必须比主节点优先级低

acvert_int 1         #组播信息发送间隔,两个节点设置必须一样

authentication{      #设置验证信息,两个节点必须一致

    auth_type  PASS

    auth_pass  1111

}

Virtual_ipaddress{   #指定虚拟IP,
两个节点设置必须一样

192.168.187.61

     }

   }


Slave的设置

192.168.187.132

global_defs {

   router_id Haproxy  #当前节点名

}

vrrp_instance VI_1{

    state BACKUP       #指定Haproxy节点为备用节点 备用节点上设置为Master即可

interface eth0       #绑定虚拟IP的网络接口

virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP

priority 100        
#主节点的优先级(1-254之间),备用节点必须比主节点优先级低

acvert_int 1         #组播信息发送间隔,两个节点设置必须一样

authentication{      #设置验证信息,两个节点必须一致

    auth_type  PASS

    auth_pass  1111

}

Virtual_ipaddress{   #指定虚拟IP,
两个节点设置必须一样

192.168.187.61

     }

   }


5.4 KeepAlived测试

No1:第一种情况,双机都正常的情况

在(Master)192.168.187.129服务器上面查看IP,可以看到一个192.168.187.61的虚拟IP

DSC0004.jpg



而这时用IP addr在备机192.168.187.132上面查看,可以发现不存在192.168.187.61的虚拟IP

DSC0005.jpg


No2:第二种情况,Master已经宕机的情况

,再用 IP addr 查看,发现虚拟IP已经漂移到192.168.187.132这台机子上面来了,响应速度非常快,

实现了高可用性,如下图:


DSC0006.jpg

No3:第三种情况,Master已经恢复的情况

当Master恢复的情况下,用IP addr 再进行查看,发现虚拟IP再次漂移到192.168.187.129上面来了,

如下图:

DSC0007.jpg



6.Haproxy&#43;KeepAlived的测试

两台被负载的服务器都已经装好了Web的运行环境,运行情况如下:

.192.168.2.63的运行环境

DSC0008.jpg



.192.168.2.68的运行环境

DSC0009.jpg



开两个浏览器页面,用Haproxy中配置的虚拟IP(192.168.187.61)进行测试,可以看到一台负载到了

192.168.2.68,而另外一台被负载到了192.168.2.63。

DSC00010.jpg



当关掉做为主机的192.168.187.129做为宕机处理,同样也不会出问题,虚拟IP由192.168.187.129漂移

到192.168.187.132上面。



  7.安装时出现的问题及处理方法
  No1:第一种错误情况
  错误:haproxy启动报错Startingproxy : cannot bind socket
  原因:其监听80已被占用
  解决办法:查看netstat–ntpl,如果有80端口,说明80被占用了,只需要找到程序关闭就可以了!
  No2:第二种错误情况
错误:安装Keepalived时出现这种错误

1.      configure: error:  

2.        !!! OpenSSL is not properly installed on your system. !!!  

3.        !!! Can not include OpenSSL headers files.            !!!  

  原因:没有安装 OpenSSL
  解决办法:CentOS下安装 Yum –y installopenssl-devel

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141519-1-1.html 上篇帖子: 基于HAproxy的percona xtradb cluster的负载 下篇帖子: [转] 初尝利用HAProxy实现负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表