本文重点在于搭建四层负载调度以及七层负载调度结合的实验,主旨是让其负载调度的概念理解更加深刻,真实生产环境中,大型枕垫会使四层负载调度与七层负载调度结合使用,所以本文前面会简单介绍四层与七层的区别,如有错误或者遗漏的地方,欢迎大家指正批评,谢谢。
区别:
四层:基于ip+端口的负载均衡
七层:基于以你应用层(url)信息的负载均衡
优缺点:
四层:
四层更快:在内核空间处理,不用走用户空间。需要解析的更少
七层:
七层功能更多:经内核空间,进入用户控件的应用进程进行转发。可以实现更复杂的负载均衡控制,比如基于url、session、动静分离等。会占用大量cpu时间,承载的并发较四层少
应用场景:
四层适合大型站点,接入层最前端,结合四层+七层使用。
七层适合中小站点,只使用七层负载均衡。
实验目的:搭建四层与七层的负载调度集群。
实验准备:7台C6标准虚拟机(selinux已关闭)
实验规划:
服务器角色 | 简称 | IP地址 |
---|---|---|
LVS负载调度 | D | 192.168.10.10 集群IP:192.168.10.100 |
Nginx负载调度 | N1 | 192.168.10.11 |
Nginx负载调度 | N2 | 192.168.10.12 |
真实服务器1 | RS1 | 192.168.10.13 |
真实服务器2 | RS2 | 192.168.10.14 |
真实服务器3 | RS3 | 192.168.10.15 |
真实服务器4 | RS4 | 192.168.10.16 |
实验拓扑图
配置apache服务,向网页中填写不同内容。
yum install -y httpd
echo "www.daqiang.com" >> /var/www/html/index.html
service httpd restart
curl localhost
真实服务器配置如上,不同真实服务器最好配置不同网页内容方便区分。
安装编译语言以及依赖关系
yum -y install gcc gcc-c++ lrzsz zlib zlib-devel pcre pcre-devel
准备安装包,解压编译安装。
tar -zxvf nginx-1.13.8.tar.gz
tar -zxvf openssl-1.0.2h.tar.gz
cd nginx-1.13.8/
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl=/root/openssl-1.0.2h --with-stream
make && make install
useradd -s /sbin/nologin -M nginx
vim /usr/local/nginx/conf/nginx.conf
在http区域添加负载区域区域
# www.daqiang.com
upstream www {
server 192.168.10.13:80;
server 192.168.10.14:80;
}
# mail.daqiang.com
upstream mail {
server 192.168.10.15:80;
server 192.168.10.16:80;
}
在http区域添加虚拟主机并配置反向代理
# www.daqiang.com
server {
listen 80;
server_name www.daqiang.com;
location / {
proxy_pass http://www;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# mail.daqiang.com
server {
listen 80;
server_name mail.daqiang.com;
location / {
proxy_pass http://mail;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
配置完毕,检查配置文件,准备访问测试。
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
在本地添加以上域名
C:\Windows\System32\drivers\etc\hosts
浏览器进行访问测试。
http://www.daqiang.com/
点击刷新
再进行mail域名访问
点击刷新
Nginx负载高可用区域构建完毕,节省搭建时间,将N1的Nginx目录发至N2对应目录中即可。
scp -r /usr/local/nginx [email protected]:/usr/local/
PS:记得创建运行用户和修改hosts文件。
关闭网卡守护服务,此服务会与 network服务冲突。
service NetworkManager stop
chkconfig NetworkManager off
配置回环子接口
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
修改网卡名称、IP地址、子网掩码。
DEVICE=lo:0
IPADDR=192.168.10.100
NETMASK=255.255.255.255
保存网卡信息,修改内核参数,声明arp行为。
vim /etc/sysctl.conf
#LVS_DR lo ARP
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
保存退出,刷新内核参数,启动回环网卡。
sysctl -p
ifup ifcfg-lo:0
添加路由规则,并使其开机自启。
route add -host 192.168.10.100 dev lo:0
route -n
echo "/sbin/route add -host 192.168.10.100 dev lo:0" >> /etc/rc.local
两台网卡如上配置即可
关闭网卡守护服务,此服务会与 network服务冲突。
service NetworkManager stop
chkconfig NetworkManager off
配置负载集群访问IP(漂移IP)
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
修改网卡名称与IP地址,删除uuid与mac地址。
保存退出,启动该网卡
ifup eth0:0
修改内核参数,关闭网卡重定向功能,刷新内核参数。
vim /etc/sysctl.conf
#LVS_DR
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
sysctl -p
加载LVS模块,下载命令行管理工具。
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
添加并保存调度规则。
ipvsadm -A -t 192.168.10.100:80 -s rr
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.11:80 -g
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.12:80 -g
service ipvsadm save
chkconfig ipvsadm on
ipvsadm -Ln --stats
编辑本机hosts文件
C:\Windows\System32\drivers\etc\hosts
添加集群IP以及对应域名
浏览器开启无痕模式进行访问测试
http://www.daqiang.com/
点击刷新
http://mail.daqiang.com/
点击刷新
成功访问,返回LVS调度器查看访问记录。
ipvsadm -Ln --stats
本文于2020年11月15日由Vonmerlot整理成文。