haproxy+keepalived双主模型及动静分离的实现

实验目标:

1、haproxy统计页面的输出机制;

2、haproxy动静分离机制;

3、基于keepalived的高可用实现;

环境: vm8虚拟机

操作系统: centos 6.4

内核版本: 2.6.32-358.el6.x86_64

注:

(1) 每个haproxy各有两块网卡,外网网卡选择Bridge,内网网卡选择Vmnet2;

(2) 内部两台web服务器的网卡都是选择Vmnet2;

一、准备工作:

1、各节点IP地址相关设置

node1:  ifconfig eth1 192.168.16.15/24 up

node2:  ifconfig eth1 192.168.16.16/24 up

node3:  ifconfig eth0 192.168.16.17/24 up

route add default gw 192.168.16.15

node4:ifconfig eth0 192.168.16.18/24 up

route add default gw 192.168.16.15

2、设置主机名

1) 临时设置主机名,即时生效

node1:  hostname node1.ja.com

node2:  hostname node2.ja.com

node3:  hostname node3.ja.com

node4:  hostname node4.ja.com

2) 确保主机重启之后,主机名仍保持不变

node1:  sed -i ‘s/\(HOSTNAME=\).*/\1node1.ja.com/‘ /etc/sysconfig/network

node2:  sed -i ‘s/\(HOSTNAME=\).*/\1node2.ja.com/‘ /etc/sysconfig/network

node3:  sed -i ‘s/\(HOSTNAME=\).*/\1node3.ja.com/‘ /etc/sysconfig/network

node4:  sed -i ‘s/\(HOSTNAME=\).*/\1node4.ja.com/‘ /etc/sysconfig/network

3、添加主机名称解析,在各节点执行如下操作:

cat >ed.txt<<EOF

\$a\172.16.16.15  node1.ja.com

\$a\192.168.16.15 node1.ja.com

\$a\192.168.16.16 node2.ja.com

\$a\192.168.16.17 node3.ja.com

\$a\192.168.16.18 node4.ja.com

EOF

sed -i -f ed.txt /etc/hosts

4、配置各节点与控制端的互信

# ssh-keygen -t rsa -P ‘‘

# ssh-copy-id -i .ssh/id_rsa.pub node2.ja.com

# ssh-copy-id -i .ssh/id_rsa.pub node3.ja.com

# ssh-copy-id -i .ssh/id_rsa.pub node4.ja.com

测试主机互信是否成功

# for i in `seq 2 4`;do ssh node$i.ja.com ‘date‘ &>/dev/null;done

5、各节点时间的时间同步

1) 命令行同步,立即生效:

ssh node2.ja.com ‘ntpdate 172.16.0.1‘;ntpdate 172.16.0.1

2) 设置定时任务,永久有效:

echo ‘*/5 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null;/sbin/hwclock -s‘ >>/var/spool/cron/root

二、各节点的软件安装与配置

1、haproxy的安装与配置

node1:

==========================================================================================

# yum -y install haproxy

# cd /etc/haproxy/

# cp haproxy.cfg{,.ori}

# egrep -v ‘^$|^[[:space:]]*#‘ /etc/haproxy/haproxy.cfg

global

log         127.0.0.1 local2

chroot      /var/lib/haproxy

pidfile     /var/run/haproxy.pid

maxconn     4000

user        haproxy

group       haproxy

daemon

stats socket /var/lib/haproxy/stats

defaults

mode                    http

log                     global

option                  httplog

option                  dontlognull

option http-server-close

option forwardfor       except 127.0.0.0/8

option                  redispatch

retries                 3

timeout http-request    10s

timeout queue           1m

timeout connect         10s

timeout client          1m

timeout server          1m

timeout http-keep-alive 10s

timeout check           10s

maxconn                 3000

frontend webserver

bind *:80

acl url_static       path_beg       -i /static /images /javascript /stylesheets

acl url_static       path_end       -i .jpg .gif .png .css .js .html

acl host_static      hdr_beg(host)  -i img. video. download. ftp. imgs. image. videos.

acl url_php         path_end    -i .php

use_backend static         if url_static or host_static

use_backend dynamic           if url_php

default_backend            dynamic

backend static

balance     roundrobin

server      node3 192.168.16.17:80  check maxconn 3000

backend dynamic

balance     roundrobin

server      node4 192.168.16.18:80 check maxconn 1000

==========================================================================================

2、定义haproxy日志记录

==========================================================================================

# vim /etc/haproxy/haproxy.cfg

global

log     127.0.0.1 local2    将自己的日志交给本机的rsyslog去管理

# vim  /etc/rsyslog.conf

启用下面几项(UDP或TCP其中之一即可),将rsyslog.conf作为日志服务器来工作

第一步:启动可以帮助服务器记录日志的功能

# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

# Provides TCP syslog reception

$ModLoad imtcp

$InputTCPServerRun 514

第二步:定义记录日志的设施

local2.*        /var/log/haproxy.log

保存退出并重启rsyslog,haproxy 查看是否开始记录日志了

# service rsyslog restart

# service haproxy reload

在浏览器访问测试,然后查看日志,看是否记录日志了

# tail /var/log/haproxy.log

保持node1,node2上haproxy.cfg配置文件内容保持一致

在node1上操作:

# cd /etc/haproxy/

# scp -p haproxy.cfg node2.ja.com:/etc/haproxy/

在node2上操作:

编辑node2的/etc/rsyslog.conf,启用或添加内容同node1

至此,haproxy基本配置完毕!!!

==========================================================================================

3、WEB服务器配置

==========================================================================================

1) node3:  使用nginx处理静态页面

yum源中没有nginx,epel源中有nginx,所以需要先安装epel源

# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

# yum -y install nginx

# echo "node3.ja.com" >/usr/share/nginx/html/index.html

# service nginx start

# chkconfig nginx on

查看nginx是否可以正常提供的web服务

# curl http://172.16.16.17

2) node4: 使用apache处理动态页面

# yum -y install httpd php php-mysql

# echo "node4.ja.com" >/var/www/html/index.php

# service httpd start

# chkconfig httpd on

查看nginx是否可以正常提供的web服务

# curl http://172.16.16.18

3) 通过浏览器直接访问node3,node4上的web服务,看是否可以web服务器是否工作正常

4) 分别为node3,node4提供动静测试页

node3:

# cd /usr/share/nginx/html/

# for i in `seq 10`;do echo "<h1>node3.test$i</h1>" >test$i.html;done

# vim /usr/share/nginx/html/index.php

Welcome to node3.jacom

<?php

phpinfo();

?>

node4:

# cd /usr/share/nginx/html/

# for i in `seq 10`;do echo "<h1>node4.test$i</h1>" >test$i.html;done

# vim /usr/share/nginx/html/index.php

Welcome to node4.jacom

<?php

phpinfo();

?>

==========================================================================================

实现第一个目标:haproxy统计页面的输出机制

============================================================================================

在浏览器输入http://www.ja.com:7007/hpadmin?stats并回车,即会弹出如下身份验证的窗口,此时只需输入在haproxy中设置的用户名和密码即可

如下截图:即为成功登陆后,看到的内容

实现第二个目标: haproxy动静分离机制

============================================================================================

============================================================================================

实现第三个目标: 基于keepalived的高可用实现

============================================================================================

node1: 模拟node1上的haproxy服务意外关闭,看haproxy服务是否能够实现故障转移

# service haproxy stop

# service haproxy status

haproxy is stopped

浏览器访问测试,验证高可用效果

我们在浏览器请求某一图片资源,依然可以得到相应,就表示我们前端至少还有一个haproxy仍在工作着,及haproxy实现了高可用

haproxy+keepalived双主模型及动静分离的实现,布布扣,bubuko.com

时间: 2025-01-18 23:33:08

haproxy+keepalived双主模型及动静分离的实现的相关文章

keepalived 双主模型

keepalived 双主模型 双主模型是两台服务器互为主备,即一台为主备,另一台为备主,让两台服务器并行运行,也可以实现减轻单台keepalived主机上的压力.双主模型需要注意此时需要有2个VIP地址 keepalived 双主模型实现 准备主机2台 server hostname ip keepalived s1 172.20.27.10 keepalived s2 172.20.27.11 s1 节点配置 修改配置文件 [[email protected] ~]# vim /etc/ke

LVS+Keepalived双主模型的实现

拓扑结构: Client LVS1 LVS2 RS1 RS2 192.168.2.1 DIP 192.168.2.128 VIP 192.168.2.198 DIP 192.168.2.129 VIP 192.168.2.199 192.168.2.130 192.168.2.131 实现双主模型我们需要配置两个虚拟路由器组,也就是每台主机需要配置两段 vrrp_instance,每个虚拟接口配置虚拟IP,LVS1与LVS2的同一组virtual_router_id内互为主备,这里如果不明白可以

keepalived双主模型高可用+lvs-实例

拓扑图: 环境准备: Centos6.5x86_64 关闭防火墙和Selinux node5: eth0:192.168.1.190/24   VIP:192.168.1.121/24 node1:eth1:192.168.1.191/24   VIP:192.168.1.122/24 node2:RIP:eth0: 192.168.19.2/24 node3:RIP:eth0: 192.168.19.3/24   所有节点网关/DNS都为:192.168.1.1 每个服务器的hosts文件 #

基于keepalived双主模型的高可用LVS

背景知识: keepalived:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器. LVS:LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统. 实验系统:CentO

keepalived双主模型实现高可用ipvs的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 案例拓扑图 说明: 主机操作系统为:CentOS-6.5-x86_64 准备工作 安装keepalived和ipvsadm 在IP地址为10.170.2.60和10.170.2.61两台主机上安装keepalived和ipvsadm # yum -y install keepalived # yum -y install ipvsadm 安装httpd 在IP地址为10.170.2.101和10

keepalived+nginx 双主模型实现高可用服务

一.keepalived的工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个虚拟路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为mas

双主模型高可用负载均衡集群的实现(keepalived+lvs-dr)

实现keepalived双主模型lvs高可用集群 一.拓扑图 二.环境准备 两台负载均衡调度器,两台web服务器. 调度器A环境: VS:一张网卡 DIP:192.168.0.7/24 VIP(主):192.168.0.200 VIP(备):192.168.0.201 软件包:yum install -y keepalived ipvsadm nginx(作用:sorry-server服务) 调度器B环境: VS:一张网卡 DIP:192.168.0.8/24 VIP(主):192.168.0.

[转] Haproxy、Keepalived双主高可用负载均衡

http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepalived双主模式做了测试,双主的模式充分利用了服务器资源,这样不会导致服务器浪费. 这里举例说明: 默认情况下,第一台负载均衡器主要分发www.zhirs.com的请求,第二台负载均衡器主要分发img.zhirs.com的请求. 任意一台宕机都不会影响网站分发. 实验环境 VIP1=192.168.13

keepalived + haproxy 实现web 双主模型的高可用负载均衡

1.本文的架构图: 阐述各服务器用途: 1.haproxy在本构架中实现的是:负载均衡 2.keepalived实现对haproxy的高可用 3.apache static 实现静态页面的访问 4.aoache dynamic实现动态页面的访问,图中有两个是实现负载均衡的 配置各功能模块: 一.配置haproxy和keepalived 验证: 1.当一台keepalived宕机后,VIP会不会转移到另外一台服务器 2.当一台haproxy服务出故障,VIP会不会转移到另外一台服务器 注意: 那如