Haproxy 搭建 web 集群

Linux运维老纪 2024-06-17 15:03:06 阅读 91

Haproxy 是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的 upstream 模块支持群集 功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy 好,今天给大家分享如何使用Haproxy 搭建 web 集群

实战操作如下:

(一)环境要求

五台linux虚拟机

1.DR 服务器:192.168.111.10

2.Web 服务器1:192.168.111.12

3.Web 服务器2:192.168.111.13

4.共享服务器:192.168.111.11

5.客户端:192.168.111.14

6.vip(虚拟IP):192.168.111.30

(二)实验步骤

1、配置负载调度器(192.168.111.10)

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0

modprobe ip_vs #加载ip_vs模块

cat /proc/net/ip_vs #查看ip_vs版本信息

yum install -y ipvsadm

(1)、配置虚拟 IP 地址(VIP:192.168.111.30)

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens33:0

vim ifcfg-ens33:0

DEVICE=ens33:0

ONBOOT=yes

IPADDR=192.168.111.30

NETMASK=255.255.255.255

ifup ens33:0

ifconfig ens33:0

(2)、调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应,不充当路由器,

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

(3)、配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm

或者ipvsadm  --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

ipvsadm -C     #清除原有策略

ipvsadm -A -t 192.168.111.30:80 -s rr

ipvsadm -a -t 192.168.111.30:80 -r 192.168.111.12:80 -g    #若为隧道模式,-g替换为-i

ipvsadm -a -t 192.168.111.30:80 -r 192.168.111.13:80 -g

ipvsadm -ln   #查看节点状态,Route代表 DR模式

2、部署共享存储(NFS服务器:192.168.111.11)

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0

yum install -y nfs-utils rpcbind

systemctl start nfs.service

systemctl start rpcbind.service

systemctl enable nfs.service

systemctl enable rpcbind.service

mkdir /opt/dmj /opt/kk

chmod 777 /opt/dmj/ /opt/kk/

vim /etc/exports

/usr/share *(ro,sync)

/opt/dmj 192.168.111.0/24(rw,sync)     #/24与()之间不能有空格

/opt/kk 192.168.111.0/24(rw,sync)

exportfs -rv

showmount -e

3、配置节点服务器(192.168.111.12、192.168.111.13)

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0

#将两个节点服务器的网关和DNS注释掉后重启网卡,如果有网关服务器则指向网关服务器

(1)、配置虚拟 IP 地址(VIP:192.168.111.30)

#此地址仅用做发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路有记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.111.30

NETMASK=255.255.255.255     #注意子网掩码必须全为1

#NETWORK=127.0.0.0

# If you're having problems with gated making 127.0.0.0/8 a martian,

# you can change this to something else (255.255.255.255, for example)

#BROADCAST=127.255.255.255

ONBOOT=yes

#NAME=loopback

ifup lo:0ifconfig lo:0

route add -host 192.168.111.30 dev lo:0    #禁锢路由

route -n    #查看路由

vim /etc/rc.local

/sbin/route add -host 192.168.111.30 dev lo:0

chmod +x /etc/rc.d/rc.local

(2)、调整内核的ARP 响应参数以阻止更新 VIP 的MAC 地址,避免发生冲突

vim /etc/sysctl.conf

......net.ipv4.conf.lo.arp_ignore = 1   #系统只响应目的IP为本地IP的ARP请求

net.ipv4.conf.lo.arp_announce = 2  #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

sysctl -p

或者

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

yum install -y nfs-utils rpcbind httpd

systemctl start rpcbind

systemctl start httpd

----------192.168.111.12-----------------

mount.nfs 192.168.111.11:/opt/dmj /var/www/html/

echo 'this is dmj web!' > /var/www/html/index.html

#设为自动挂载

vim /etc/fstab

192.168.111.11:/opt/dmj /var/www/html nfs defaults,_netdev 0 0

mount -a

----------192.168.111.13-----------------

mount.nfs 192.168.111.11:/opt/kk /var/www/html/

echo 'this is kk web!' > /var/www/html/index.html

#设为自动挂载

vim /etc/fstab

192.168.111.11:/opt/kk /var/www/html nfs defaults,_netdev 0 0

mount -a

4、测试 LVS 群集

在客户端使用浏览器访问: http://192.168.111.30/,默认网关指向 192.168.111.30



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。