高可用的负载均衡配置方法(Haproxy+KeepAlived)

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)

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第1张图片

4.Haproxy的安装配置过程

4.1 Haproxy安装方法

在Master(192.168.187.129)操作

下载

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

 解压缩

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

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

[[email protected]] make TARGET=linux26               

[[email protected]] make PREFX=/usr/local/haproxy install                 

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

创建pid文件,日志文件,配置文件,在安装目录下建立配置文件目录

[root@localhost sbin]mkdir conf

[root@localhost sbin]mkdir logs

[root@localhost logs]vihaproxy.log

[root@localhost logs]vihaproxy.pid

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

[root@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 /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

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

balance source

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

cookie SERVERID

#日志设置

log 127.0.0.1 local0 err

# 要负载的后台服务器
#服务器定义,cookie 1表示serverid1
# weight  -- 调节服务器的负重
# check -- 允许对该服务器进行健康检查
# inter  -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise  -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
# fall  -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 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的方式.

[root@localhost sbin]./haproxy –f./conf/haproxy.cfg              

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


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

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

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第2张图片

4.4.修改日志配置

使用root账户首先修改/etc/sysconfig/syslog文件,将SYSLOGD_OPTIONS="-m0”修改为SYSLOGD_OPTIONS="-m 0 -r -x",支持收集远程服务器日志。然后修改/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

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

解压缩

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

安装

[root@localhost /]cd keepalived-1.2.7                                               

[root@localhost keepalived-1.2.7]./configure                                       

[root@localhost keepalived-1.2.7]make                                             

[root@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,在两台服务器中飘动,如下图:

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第3张图片

在两台服各器中的/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

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第4张图片

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

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第5张图片

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

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

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

 高可用的负载均衡配置方法(Haproxy+KeepAlived)_第6张图片

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

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

如下图:

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第7张图片

6.Haproxy+KeepAlived的测试

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

.192.168.2.63的运行环境


.192.168.2.68的运行环境


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

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

高可用的负载均衡配置方法(Haproxy+KeepAlived)_第8张图片

当关掉做为主机的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 

你可能感兴趣的:(架构学习)