Keepalived+Haproxy搭建高可用Web群集

匿名 (未验证) 提交于 2019-12-03 00:09:02

通过博文: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节点服务内容一致(实际环境中肯定是这样做的)!

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!