博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] Haproxy、Keepalived双主高可用负载均衡
阅读量:6874 次
发布时间:2019-06-26

本文共 7666 字,大约阅读时间需要 25 分钟。

http://blog.chinaunix.net/uid-25266990-id-3989321.html

在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepalived双主模式做了测试,双主的模式充分利用了服务器资源,这样不会导致服务器浪费。 这里举例说明:

默认情况下,第一台负载均衡器主要分发www.zhirs.com的请求,第二台负载均衡器主要分发img.zhirs.com的请求。
任意一台宕机都不会影响网站分发。
实验环境
VIP1=192.168.137.200 (www.zhirs.com)
VIP2=192.168.137.100 (img.zhirs.com)
haproxy01=192.168.137.254
haproxy02=192.168.137.253
web1=192.168.137.201
web2=192.168.137.202
img1=192.168.158.101
img2=192.168.158.102
架构图
 
安装配置过程
1、安装配置过程,(两台Haproxy的安装配置步骤一样)
haproxy下载地址:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz

#cd /usr/local/src#wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz#tar xf haproxy-1.4.24.tar.gz#cd haproxy-1.4.24#make TARGET=linux26 ARCH=x86_64#TARGET是指定内核版本,ARCH指定CPU架构,我使用的是64bit系统#make install

 

   

2、安装完毕后,创建配置文件和启动文件。

 

 

#mkdir /etc/haproxy#cp examples/haproxy.cfg /etc/haproxy#cp examples/haproxy.init /etc/init.d/haproxy#chmod +x /etc/init.d/haproxy#ln -s /usr/local/sbin/haproxy /usr/sbin/#mkdir /usr/share/haproxy

 

   

3、编辑配置文件(两台Haproxy配置文件相同)

#vim /etc/haproxy/haproxy.cfg# this config needs haproxy-1.1.28 or haproxy-1.2.1global    log 127.0.0.1   local0  #日志输出配置,所有日志都记录在本机,通过local0输出    log 127.0.0.1   local1 notice    #log loghost    local0 info    maxconn 4096                #最大连接数    chroot /usr/share/haproxy   #改变当前工作目录。    uid 99                  #所属用户的uid    gid 99                  #所属运行的gid    daemon                  #以后台形式运行haproxy    #debug    #quiet defaults    log global    mode    http  #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK    option  httplog    option  dontlognull    option   redispatch  #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器    option  abortonclose  #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接    retries 3               #两次连接失败就认为是服务器不可用    maxconn 2000            #默认的最大连接数  #timeout http-keep-alive 10s  # timeout queue 1m    contimeout  5000        #连接超时    clitimeout  50000       #客户端超时    srvtimeout  50000       #服务器超时    timeout check 5s            #心跳检测超时    stats refresh 30s           #统计页面自动刷新时间    stats uri  /stats           #统计页面url    stats realm baison-test-Haproxy         #统计页面密码框上提示文本    stats auth admin:admin123           #统计页面用户名和密码设置    stats hide-version                  #隐藏统计页面上HAProxy的版本信息frontend www    bind *:80    #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。    acl web hdr(host) -i www.zhirs.com    #acl后面是规则名称,-i是要访问的域名,如果访问www.zhirs.com这个域名就分发到下面的webserver 的作用域。    acl img hdr(host) -i img.zhirs.com    #如果访问img.baison.com.cn就分发到imgserver这个作用域。    use_backend webserver if web    use_backend imgserver if img backend webserver             #webserver作用域    mode http    balance   roundrobin         #banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数    option  httpchk /index.html    #检测文件,如果分发到后台index.html访问不到就不再分发给它    server     web01 192.168.137.201:80  check inter 2000 fall 3 weight 30   server     web01 192.168.137.202:80  check inter 2000 fall 3 weight 20   server     web01 192.168.137.203:80  check inter 2000 fall 3 weight 10 backend imgserver    mode http    option  httpchk /index.php    balance     roundrobin                             server      img01 192.168.137.101:80  check inter 2000 fall 3    server      img02 192.168.137.102:80  check inter 2000 fall 3

 

   

4、启动Haproxy服务,查看状态。

1
#service haproxy start

 
 5、安装配置keepalived(两台keepalived安装步骤一样)

#cd /root/software#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz#tar -zxvf pcre-8.33.tar.gz#cd pcre-8.33#./configure#make && make install#wget http://nginx.org/download/nginx-1.2.9.tar.gz#tar -zxvf nginx-1.2.9.tar.gz#cd nginx-1.2.9#./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module#make && make install

 

   

6、第一台keepalived配置文件。第一台做192.168.137.200vip的master,192.168.137.100的backup。

#vim /etc/keepalived/keepalived.confglobal_defs {   notification_email {     admin@centos.bz   }   notification_email_from keepalived@domain.com   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_script chk_http_port {                #script "/opt/nginx_pid.sh"                script "/opt/check_haproxy.sh"                interval 2                weight 2}vrrp_instance VI_1 {    state MASTER        ############ 辅机为 BACKUP    interface eth0    virtual_router_id 51    mcast_src_ip 192.168.137.254    priority 100                  ########### 权值要比 back 高    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }track_script {        chk_http_port ### 执行监控的服务        }    virtual_ipaddress {       192.168.137.200    }}vrrp_instance VI_2 {    state BACKUP    interface eth0    virtual_router_id 52    priority 99    advert_int 1    authentication {         auth_type PASS         auth_pass 1111    }    virtual_ipaddress {        192.168.137.100          }}

 

   

7、第二台keepalived的配置文件。

#vim /etc/keepalived/keepalived.confglobal_defs {   notification_email {     admin@centos.bz   }   notification_email_from keepalived@domain.com   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_script chk_http_port {                #script "/opt/nginx_pid.sh"                script "/opt/check_haproxy.sh"                interval 2                weight 2}vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 51    mcast_src_ip 192.168.137.253    priority 99             ##########权值 要比master低    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }track_script {        chk_http_port        }    virtual_ipaddress {       192.168.137.200    }}vrrp_instance VI_2 {    state MASTER    interface eth0    virtual_router_id 52    priority 100    advert_int 1    authentication {         auth_type PASS         auth_pass 1111    }    virtual_ipaddress {        192.168.137.100         }}

 

   

8、检测脚本,为了防止haproxy服务关闭导致keepalived不自动切换。

#vim /opt/check_haproxy.sh#!/bin/bashif [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then     /etc/init.d/haproxy  startfisleep 2if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then       /etc/init.d/keepalived stopfi

 

   

9、启动两台keepalived和Haproxy服务。

#servcie haproxy start#service keepalived start

 

   

10、查看两台服务器的VIP 查看

查看192.168.137.254:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:dc:01:3e brd ff:ff:ff:ff:ff:ff
inet 192.168.137.254/24 brd 192.168.137.255 scope global eth0
inet 192.168.137.200/32 scope global eth0

查看192.168.137.253:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:d5:e7:3d brd ff:ff:ff:ff:ff:ff
inet 192.168.137.253/24 brd 192.168.137.255 scope global eth0
inet 192.168.137.100/32 scope global eth0
inet6 fe80::20c:29ff:fed5:e73d/64 scope link
valid_lft forever preferred_lft forever

11、测试,关闭任意一台keepalived,img和www域名访问正常。 后续会对Nginx+Keepalived 双主结果做测试。

 

 

 

我的VM测试

 

# 机器A keepalived.confglobal_defs {        router_id NodeA}vrrp_instance VI_1 {        state MASTER        interface eth0        virtual_router_id 55        priority 150        advert_int 1        nopreempt        authentication {                auth_type PASS                auth_pass 1111        }        virtual_ipaddress {                192.168.28.188/24        }}# 机器Bglobal_defs {        router_id NodeB}vrrp_instance VI_1 {        state BACKUP        interface eth0        virtual_router_id 55        priority 149        advert_int 1        nopreempt        authentication {                auth_type PASS                auth_pass 1111        }        virtual_ipaddress {                192.168.28.188/24        }}# 查看当前IP使用机器 # ip a

 

转载于:https://www.cnblogs.com/freebird92/p/7239915.html

你可能感兴趣的文章
Exchange Server 运维管理01:Exchange中Active Directory 有什么用?
查看>>
linux系统管理之四:服务状态
查看>>
VMware View FAQ[一]
查看>>
【原创翻译】布尔值(boolean)
查看>>
三元运算式、lambda表达式、内置函数map、reduce、filter以及yield生成器
查看>>
MySQL分库分表分表后数据的查询(5th)
查看>>
iOS-点击图片放大,再次点击返回原视图 类似查看相册的功能
查看>>
JAVA -- stateless4j StateMachine 使用浅析(二)
查看>>
oracle checkpoint
查看>>
KVM虚拟化开源高可用方案(六)ISCSI ON DRBD搭建及常见故障处理
查看>>
android device related
查看>>
iOS 6 Beta3即将发布,iPhone面板谍照已经曝光
查看>>
hadoop 源码包编译
查看>>
关于scrapy的piplines
查看>>
Windows Server 2008 FTP用户目录隔离模式
查看>>
python实现linux下指定目录下文件中的单词个数统计
查看>>
Android源代码下载编译
查看>>
jsp---语句对象Statement
查看>>
RESTful API
查看>>
前端UI框架总结
查看>>