我们要在三台虚拟机上搭建Nginx集群,这里使用centos7为例。

准备:1.每台虚拟机的网络适配器选择「NAT 模式」2.给三台虚拟机分配静态IP和角色,并且能相互ping通

虚拟机角色                固定 IP(示例)    核心作用
负载均衡器(LB)    192.168.184.100    接收用户请求,分发到后端服务器
应用服务器 1(Web1)    192.168.184.101    实际提供网页服务
应用服务器 2(Web2)    192.168.184.102    实际提供网页服务

请根据自己的网段修改静态IP。(我这里是192.168.184)

我用network修改配置文件来弄静态IP失败了,建议使用nmcli。

network和nmcli:管网络的工具,前者修改配置文件,后者直接在命令行修改静态IP,不用改配置文件。

配置静态IP后验证三台是否能ping通,在负载均衡器上输入以下命令:

ping 192.168.100.101 -c 3
ping 192.168.100.102 -c 3

接下来搭建Nginx集群:、

1-- 三台虚拟机全部安装Nginx

(1)安装依赖

yum install -y wget

(2)添加Nginx官方源

vi /etc/yum.repos.d/nginx.repo
# Nginx 稳定版软件源(官方仓库,最安全稳定)
[nginx-stable]

# 仓库名称(随便写,方便识别)
name=nginx stable repo

# 软件下载地址(自动适配CentOS 7系统)
baseurl=http://nginx.org/packages/centos/7/$basearch/

# 开启GPG校验,保证软件包没被篡改(安全选项)
gpgcheck=1

# 启用这个仓库(1=启用,0=禁用)
enabled=1

# GPG密钥地址,用于校验软件包完整性
gpgkey=https://nginx.org/keys/nginx_signing.key

(3)安装Nginx

yum install -y nginx

(4)启动并设置开机自启

systemctl start nginx
systemctl enable nginx

(5)关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

若不关防火墙:

你本机电脑访问虚拟机 ❌
负载均衡访问后端 Web 服务器 ❌
其他机器访问你的 80 端口 ❌

2--配置两台web应用服务器

给两台应用服务器设置不同的页面,方便看负载效果。

====第一台web机器,将IP替换成自己的IP====
echo "<h1>Web Server 1 —— 192.168.184.101</h1>" > /usr/share/nginx/html/index.html
systemctl restart nginx


====第二台web机器,将IP替换成自己的IP====
echo "<h1>Web Server 2 —— 192.168.184.102</h1>" > /usr/share/nginx/html/index.html
systemctl restart nginx

3--配置负载均衡器(分发)

打开Nginx配置

vi /etc/nginx/nginx.conf

将里面内容全部替换成下面内容

# 全局配置:Nginx 工作进程数(1个足够测试环境)
worker_processes 1;

# 事件模块:配置网络连接
events {
    # 每个进程最大支持 1024 个并发连接
    worker_connections 1024;
}

# HTTP 服务核心配置
http {
    # 引入文件类型支持配置(让Nginx认识各种文件格式)
    include mime.types;
    # 默认文件类型(二进制流)
    default_type application/octet-stream;
    charset utf-8;
    # 开启高效文件传输模式(必开)
    sendfile on;
    # 长连接超时时间 65秒(提升访问速度)
    keepalive_timeout 65;

    # ==================== 负载均衡配置 ====================
    # 定义后端服务器集群,名字叫 web_cluster
    upstream web_cluster {
        # 后端Web服务器1
        server 192.168.184.101:80;
        # 后端Web服务器2
        server 192.168.184.102:80;
    }

    # 虚拟主机:对外提供服务
    server {
        # 监听 80 端口(HTTP默认端口)
        listen 80;
        # 域名(本地测试用localhost即可)
        server_name localhost;

        # 匹配所有请求
        location / {
            # 核心:把请求转发给上面定义的集群 web_cluster
            proxy_pass http://web_cluster;

            # 把真实的域名传递给后端服务器
            proxy_set_header Host $host;
            # 把用户真实IP传递给后端(日志会显示真实访客IP)
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

4--检查配置,重启Nginx

nginx -t
##成功时出现sucessful
systemctl restart nginx

5--测试是否成功

打开windows本机浏览器,输入http://192.168.184.100,不断刷新:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐