目录
1.Nginx反向代理实战
2.Nginx 反向代理和负载均衡实践
实验操作步骤
步骤 1 Nginx1 和 Nginx2 配置
步骤2 测试资源是否可用
步骤 3 安装和配置 Nginx 代理
步骤 4 代理服务器配置检测
步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机
步骤 6 将虚拟主机添加入后端主机组中
步骤 7 IP Hash 算法实践
步骤 8 Random 算法实践
步骤 9 算法选项配置实践
1.Nginx反向代理实战
2.Nginx 反向代理和负载均衡实践
本实验将使用四台虚拟机,其中两台 Nginx 服务器和客户端与《LVS 集群》复用,充当代理服务器的 Nginx 可以新建,也可以清理《LVS 集群》中 LVS 服务器的配置后复用。
实验操作步骤
步骤 1 Nginx1 和 Nginx2 配置
[root@Nginx2 ~]# yum install nginx -y
[root@Nginx2 ~]# systemctl start nginx
[root@Nginx2 ~]# mkdir -p /data/nginx
[root@Nginx2 ~]# touch /data/nginx/index.html
[root@Nginx1 ~]# cat /etc/nginx/conf.d/vhost.conf
server{
listen 80;
server_name www.test.com;
root /data/nginx;
index index.html;
}
[root@Nginx1 ~]# curl 192.168.186.102
hello,nginx2
[root@Nginx2 ~]# curl 192.168.186.101
hello,nginx1
在 LVS 虚拟机上开启路由转发功能,具体参考命令如下:
sed -i "s/ip_forward=0/ip_forward=1/g" /etc/sysctl.conf
sysctl -p | grep net.ipv4.ip_forward
sysctl -a | grep net.ipv4.ip_forward
配置完成后,测试是否能够正常访问 Nginx1 和 Nginx2,具体如下:
[root@LVS ~]# curl 192.168.186.101
hello,nginx1
[root@LVS ~]# curl 192.168.186.102
hello,nginx2
步骤2 测试资源是否可用
在客户端 ping 代理服务器的 10 网段地址,保证二者之间网络可达,如下图所示:
在代理服务器上访问两台 Nginx 服务器,保证 Nginx 服务器可用,如下图所示:
步骤 3 安装和配置 Nginx 代理
[root@Cluster ~]# yum install -y nginx
在代理服务器 Nginx 子配置文件目录中创建代理和负载均衡配置文件,并在文件中添加以下配置:
[root@Cluster ~]# systemctl start nginx
[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
server 192.168.186.101:80;
server 192.168.186.102:80;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://192.168.186.100;
}
}
完成配置后,使用命令“nginx -s reload”重新加载 Nginx 服务。
步骤 4 代理服务器配置检测
在客户端访问 192.168.186.100,查看是否能够达到效果,如果配置正确,现象如下图所示:
步骤 5 在 Nginx1 和 Nginx2 配置虚拟主机
在/data/nginx/中创建 index80.html、index81.html 和 index82.html 文件,分别将使用的端口添加到内容中,
[root@Nginx1 ~]# touch /data/nginx/index80.html
[root@Nginx1 ~]# touch /data/nginx/index81.html
[root@Nginx1 ~]# touch /data/nginx/index82.html
[root@Nginx1 ~]# ls /data/nginx/
index80.html index81.html index82.html
[root@Nginx1 ~]# echo "hello,192.168.186.101:80" > /data/nginx/index80.html
[root@Nginx1 ~]# echo "hello,192.168.186.101:81" > /data/nginx/index81.html
[root@Nginx1 ~]# echo "hello,192.168.186.101:82" > /data/nginx/index82.html
为了使后续的算法体现更加明显,在两台 Nginx 服务器中,添加虚拟主机,具体配置如下:
[root@Nginx1 ~]# vim /etc/nginx/conf.d/vhost.conf
server{
listen 0.0.0.0:80;
server_name localhost;
root /data/nginx;
index index80.html;
}
server{
listen 0.0.0.0:81;
root /data/nginx;
server_name localhost;
index index81.html;
}
server{
listen 0.0.0.0:82;
root /data/nginx;
server_name localhost;
index index82.html;
}
[root@Nginx2 ~]# vim /etc/nginx/conf.d/vhost.conf
server{
listen 0.0.0.0:80;
server_name localhost;
root /data/nginx;
index index80.html;
}
server{
listen 0.0.0.0:81;
root /data/nginx;
server_name localhost;
index index81.html;
}
server{
listen 0.0.0.0:82;
root /data/nginx;
server_name localhost;
index index82.html;
}
[root@Nginx2 ~]# touch /data/nginx/index80.html
[root@Nginx2 ~]# touch /data/nginx/index81.html
[root@Nginx2 ~]# touch /data/nginx/index82.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:80" > /data/nginx/index80.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:81" > /data/nginx/index81.html
[root@Nginx2 ~]# echo "hello,192.168.186.102:82" > /data/nginx/index82.html
步骤 6 将虚拟主机添加入后端主机组中
[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
server 192.168.186.101:80;
server 192.168.186.101:81;
server 192.168.186.101:82;
server 192.168.186.102:80;
server 192.168.186.102:81;
server 192.168.186.102:82;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://192.168.186.100;
}
}
配置完成后重新加载 Nginx 配置文件
步骤 7 IP Hash 算法实践
将代理服务器中相关配置文件中添加配置,修改算法为 IP Hash,具体如下:
[root@Cluster ~]# vim /etc/nginx/conf.d/lb.conf
upstream 192.168.186.100{
ip_hash;
server 192.168.186.101:80;
server 192.168.186.101:81;
server 192.168.186.101:82;
server 192.168.186.102:80;
server 192.168.186.102:81;
server 192.168.186.102:82;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://192.168.186.100;
}
}
步骤 8 Random 算法实践
步骤 9 算法选项配置实践
修改代理主机配置文件,将 Nginx2 的全部虚拟主机设置为 backup,同时将 Nginx1 上的虚拟主机设置一定的权重,具体配置如下图所示:
手动将 Nginx1 上的服务停止,如下图所示:
再次在客户端进行测试,具体显现个如下:
修改代理服务器上的配置文件,将 Nginx2 的部分虚拟主机修改为“down”,具体如下: