使用LVS+Nginx配置NAT模式的Web集群

准备条件

需要最少准备三台虚拟机,关闭selinx和防火墙。

主机名 身份 网络接口 连接模式 IP地址 网关 软件
DS 调度服务器 ens160 nat 192.168.20.40/24 192.168.20.254 ipvsadm
DS 调度服务器 ens224 仅主机 172.21.8.10/24 - ipvsadm
web1 真实服务器 ens224 仅主机 172.21.8.20/24 172.21.8.10/24 nginx
web2 真实服务器 ens224 仅主机 172.21.8.30/24 172.21.8.10/24 nginx

PS:

  1. DS一定是两块网卡,并且用一张网卡去作为真实服务器的网关。
  2. DS的两块网卡最好模式是不一样的。

DS的配置

下载ipvsadm

1
yum install -y ipvsadm

添加一个虚拟服务指定运输层协议为TCP、VIP为192.168.20.40、端口为80、调度算法为加权轮训。

1
ipvsadm -A -t 192.168.20.40:80 -s rr

为虚拟服务器添加后端真实服务器

1
ipvsadm -a -t 192.168.20.40:80 -r 172.21.8.20:80 -m
1
ipvsadm -a -t 192.168.20.40:80 -r 172.21.8.20:80 -m

使用命令查看生成的策略

1
ipvsadm -Ln

开启路由转发功能

1
echo "1" > /proc/sys/net/ipv4/ip_forward

使用命令修改轮训的时间

1
ipvsadm --set 1 1 1

使用命令查看超时时间设置

1
ipvsadm -L --timeout

WEB1配置

下载Nginx

1
yum install -y nginx

nginx的配置文件保存在/etc/nginx/nginx.conf

使用命令去掉Nginx配置文件的空行和注释行

1
egrep -v "^[[:space:]]*#|^$" nginx.conf.default > nginx.conf

修改配置文件

折叠代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
worker_processes  1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 172.21.8.20; # 本机IP
location / {
root /web; # 根目录地址
index index.html index.htm; # 要去寻找的文件
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

创建HTML资源文件

1
mkdir /web

编辑网页入口文件

1
2
touch /web/index.html
echo "web1111" > /web/index.html

开启Nginx服务

1
nginx

验证服务开启

1
lsof -i:80

WEB2配置

web2配置基本同web1。

使用命令去掉Nginx配置文件的空行和注释行

1
egrep -v "^[[:space:]]*#|^$" nginx.conf.default > nginx.conf

修改配置文件

折叠代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
worker_processes  1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 172.21.8.30;
location / {
root /web;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

创建HTML资源文件

1
mkdir /web

编辑网页入口文件

1
2
touch /web/index.html
echo "web2222" > /web/index.html

开启Nginx服务

1
nginx

验证服务开启

1
lsof -i:80

测试

先在web1主机

1
curl 172.21.8.20

然后在web2主机

1
curl 172.21.8.30

最后在DS主机上

1
curl 192.168.20.40

如果观察到web1111web2222来回显示在页面上则配置成功。

其他可能用到的命令

Linux查看路由表

1
ip r s

重启Nginx的命令

1
nginx -s reload

关闭Nginx的命令

1
nginx -s stop