Keepalived+Haproxy搭建高可用Web群集

经过博文:Haproxy服务调优及配置内容详解
已经能够了解Haproxy服务的做用;
经过博文:利用Keepalived实现双机热备详解
已经能够了解到Keepalived服务的做用;html

Haproxy服务是搭建群集调度的一种工具,性能好。可是现实环境中确定须要和Keepalived服务一块儿使用,避免形成单点故障。linux

1、案例环境:

Keepalived+Haproxy搭建高可用Web群集

这篇博文其实跟博文:搭建LVS(DR模式)+Keepalived高可用群集,可跟作!!!
差很少,只是把负责搭建群集环境的LVS换成了Haproxy。其实也没什么好写的,本意是不想写的。可是其中有几个知识点,必需要了解,不然这个环境不可能实现。redis

2、案例实施

案例实施大体步骤:
1.为了简单起见,每一个服务器(无论是Web节点和是调度服务器),实际环境中,应该开启防火墙相关流量;
2.主调度服务器上安装Keepalived和Haproxy服务;
3.配置Web节点服务器,安装Web服务(APache、Nginx均可以)建立虚拟IP地址,全部配置都同样可是建议主页不要同样,这样能看出效果,实际环境中网站主页内容必须同样,能够搭建NFS服务器等来同步网页内容;
4.客户机测试访问主Haproxy服务器地址(可否访问到Web页面);
5.从调度服务器安装Keepalived和Haproxy服务;
6.客户机访问漂移IP地址(可否访问成功);vim

关于服务具体较少及软件包获取方式,能够参考博文:利用Keepalived实现双机热备详解
Haproxy服务调优及配置内容详解服务器

具体步骤:app

(1)配置主调度器服务器

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//关闭防火墙与SELinux
[root@localhost ~]# yum -y install keepalived pcre-devel bzip2-devel
//安装相应的服务及工具
[root@localhost ~]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26
[root@localhost haproxy-1.5.19]# make install
//安装Haproxy服务
[root@localhost ~]# mkdir /etc/haproxy
[root@localhost ~]# cp /usr/src/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
//编写Haproxy服务的配置文件
global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        #redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  appli1-rewrite 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin
        server  app1_1 192.168.1.3:80 check inter 2000 rise 2 fall 5
        server  app1_2 192.168.1.4:80 check inter 2000 rise 2 fall 5
[root@localhost ~]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy 
[root@localhost ~]# chmod +x /etc/init.d/haproxy 
[root@localhost ~]# chkconfig --add /etc/init.d/haproxy 
[root@localhost ~]# /etc/init.d/haproxy start
Starting haproxy (via systemctl):                          [  肯定  ]
//编写服务启动脚本并启动服务             
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
//编写Keepalived服务的配置文件
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.254
    }
}
//配置文件只留这些,剩下的建议注释或删除
[root@localhost ~]# systemctl start keepalived
//启动Keepalived服务

(2)配置Web节点服务器

两台Web节点服务器,配置几乎同样,只有网页内容不同,这里就拿一个为例:ide

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo aaa > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
//安装并启动http服务

两台Web节点服务器都已配置完毕能够经过主调度器的IP地址进行访问!工具

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
[root@localhost network-scripts]# ifup lo
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.1.254  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
//配置虚拟IP地址
[root@localhost ~]# route add -host 192.168.1.254 dev lo:0
//添加本机路由
[root@localhost ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore  =  1
net.ipv4.conf.all.arp_announce  =  2
net.ipv4.conf.default.arp_ignore  =  1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore  =  1
net.ipv4.conf.lo.arp_announce  = 2
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
//修改内核参数

两台Web节点配置到这里,就可使用漂移IP地址进行访问!虽然是使用漂移IP进行访问,可是当主调度器宕机,客户端也就不能访问Web节点服务器了。因此须要搭建从调度器(越多越好)!oop

(3)配置从调度器服务器

从调度服务器配置几乎和主调度器配置同样,可是Keepalived服务中的路由器ID、优先级、热备状态不同,剩下的就是如出一辙!因此这里就不介绍了!相信你们看完前几篇博文,都不用看博文就能够作出来的。性能

主、从调度器配置完毕后,能够测试主调度器宕机,还能不能访问!(本人测试没问题)你们自行测试!

使用Haproxy服务搭建的群集环境,能够很清除的看出群集轮询的状态!

这样就能够很好的避免单点故障带来的损失!

实际环境中,确定要搭建NFS共享存储来同步网站主页内容,NFS共享存储很基础的服务,这里就不介绍了!

建议搭建NFS共享存储,来保证Web节点服务内容一致(实际环境中确定是这样作的)!

———————— 本文至此结束,感谢阅读 ————————

相关文章
相关标签/搜索