Keepalived+Haproxy搭建高可用Web群集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keepalived+Haproxy搭建高可用Web群集相关的知识,希望对你有一定的参考价值。
通过博文:Haproxy服务调优及配置内容详解已经可以了解Haproxy服务的作用;
通过博文:利用Keepalived实现双机热备详解
已经可以了解到Keepalived服务的作用;
Haproxy服务是搭建群集调度的一种工具,性能好。但是现实环境中肯定需要和Keepalived服务一起使用,避免造成单点故障。
一、案例环境:
这篇博文其实跟博文:搭建LVS(DR模式)+Keepalived高可用群集,可跟做!!!
差不多,只是把负责搭建群集环境的LVS换成了Haproxy。其实也没什么好写的,本意是不想写的。但是其中有几个知识点,必须要了解,否则这个环境不可能实现。
二、案例实施
案例实施大致步骤:
1.为了简单起见,每个服务器(不管是Web节点和是调度服务器),实际环境中,应该开启防火墙相关流量;
2.主调度服务器上安装Keepalived和Haproxy服务;
3.配置Web节点服务器,安装Web服务(APache、nginx都可以)创建虚拟IP地址,所有配置都一样但是建议主页不要一样,这样能看出效果,实际环境中网站主页内容必须一样,可以搭建NFS服务器等来同步网页内容;
4.客户机测试访问主Haproxy服务器地址(能否访问到Web页面);
5.从调度服务器安装Keepalived和Haproxy服务;
6.客户机访问漂移IP地址(能否访问成功);
关于服务具体较少及软件包获取方式,可以参考博文:利用Keepalived实现双机热备详解 和
Haproxy服务调优及配置内容详解
具体步骤:
(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节点服务器,配置几乎一样,只有网页内容不一样,这里就拿一个为例:
[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节点服务器了。所以需要搭建从调度器(越多越好)!
(3)配置从调度器服务器
从调度服务器配置几乎和主调度器配置一样,但是Keepalived服务中的路由器ID、优先级、热备状态不一样,剩下的就是一模一样!所以这里就不介绍了!相信大家看完前几篇博文,都不用看博文就可以做出来的。
主、从调度器配置完毕后,可以测试主调度器宕机,还能不能访问!(本人测试没问题)大家自行测试!
使用Haproxy服务搭建的群集环境,可以很清除的看出群集轮询的状态!
这样就可以很好的避免单点故障带来的损失!
实际环境中,肯定要搭建NFS共享存储来同步网站主页内容,NFS共享存储很基础的服务,这里就不介绍了!
建议搭建NFS共享存储,来保证Web节点服务内容一致(实际环境中肯定是这样做的)!
———————— 本文至此结束,感谢阅读 ————————
以上是关于Keepalived+Haproxy搭建高可用Web群集的主要内容,如果未能解决你的问题,请参考以下文章
Haproxy+Keepalived(双机热备)搭建高可用web架构
高可用篇之Keepalived (HAProxy+keepalived 搭建高可用负载均衡集群)