Nginx-负载均衡服务器部署

部署前准备:

让LNMP架构和存储服务器建立关系

第一个历程: 找出图片存储的目录

blog.test.com     /wp-content/uploads/2024/04/内存性保护报错.png
URL                            URI

根据图片链接地址获取图片存储位置

第二个历程: 使web服务器和存储服务器建立关系

检查存储服务是否正常

PS:没有安装NFS服务的,请先安装上

NFS存储服务器创建好web服务器的站点账户"www"

useradd www -u 1111

给予存储web服务器目录属主属组

useradd www -u 1111

 对存储目录设置nfs目录权限

[root@nfs01 blog]# cat /etc/exports
/data/blog 192.168.149.0/24(rw,sync,anonuid=1111,anongid=1111,no_root_squash)

重启NFS服务生效

systemctl restart nfs

第三个历程:

在存储图片路径的目录挂载到nfs服务器中

mount -t nfs 192.168.149.31:/data/blog /html/blog/wp-content/uploads/

然后验证站点上传图片是否可以正常保存在存储服务器中

让LNMP架构和数据库服务器建立关系 

PS:需要提前部署一个存储mysql数据库服务器

第一个历程: 将web服务器本地数据库数据进行备份 

mysqldump -uroot -p123456 --all-database >/tmp/web_back.sql

第二个历程: 将备份数据进行迁移 

scp -rp /tmp/web_back.sql 192.168.149.51:/tmp

第三个历程: 恢复数据信息

数据库服务器安装数据库服务

yum install -y mariadb-server mariadb

启动服务/服务开机自启
[root@mysql ~]# systemctl start mariadb.service 
[root@mysql ~]# systemctl enable mariadb.service

 创建数据库登录用户与密码

mysqladmin -u root  password '123456'

恢复数据库数据 

mysql -uroot -poldboy123 </tmp/web_back.sql

 第四个历程: 修改数据库服务器中数据库用户信息

MariaDB [(none)]> select user,host from mysql.user;
+-----------+-------------+
| user      | host        |
+-----------+-------------+
| root      | 127.0.0.1   |
| root      | ::1         |
|           | localhost   |
| root      | localhost   |
| wordpress | localhost   |
|           | nginx-web01 |
| root      | nginx-web01 |
+-----------+-------------+
7 rows in set (0.00 sec)


优化一下:

 删除无用的用户信息
delete from mysql.user where user="" and host="localhost";
delete from mysql.user where user="" and host="web01";
添加: 添加新的用户信息
grant all on wordpress.* to 'wordpress'@'192.168.149.%' identified by '123456';

#让数据库生效
flush privileges;

第五个历程: 修改web服务器代码文件信息

vim wp-config.php

/** MySQL hostname */
define( 'DB_HOST', '192.168.149.51' );

第六个历程:停止web服务器上数据库服务 

systemctl stop mariadb.service
systemctl disable mariadb.service

测试是否可以正常远程连接:

mysql -uwordpress -p123456 -h 192.168.149.51

扩展报错:

问题01:
数据库服务没有正确启动: Error establishing a database connection  连接不上3306端口
问题02: 
PHP服务没有开启,报502错误

web01代码信息迁移到web02服务器,并且修改了网站域名无法正确访问
访问新域名会自动跳转到老的域名
方法一: 
修改wordpres后台设置信息,将后台中老的域名改为新的域名
方法二:
修改数据库中的一个表, 在表中修改一个和域名有关的条目信息 (update phpmyadmin)

准备负载均衡的环境 

集群服务器部署:

PS: 集群中每台服务器的配置一模一样

正常生产环境:

    01. 先部署好一台LNMP服务器,上传代码信息
    02. 进行访问测试
    03. 批量部署多台web服务器
    04. 将nginx配置文件进行分发
    05. 将站点目录分发给所有主机

这边环境测试从简:

将web01作为模板主机克隆

克隆以后修改主机名和ip地址

hostnamectl set-hostname web02
hostnamectl set-hostname web03

修改固定IP:
sed -i 's#111#112#g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's#111#113#g' /etc/sysconfig/network-scripts/ifcfg-eth0

以上三台集群服务器部署完成

负载均衡服务器部署:

第一个历程: 安装部署nginx软件 

vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
priority=1
yum install nginx -y

第二个历程: 编写nginx负载服务配置文件 

备份初始文件:

cd /etc/nginx/
cp nginx.conf{,.bak}

清除无用的内容
grep -Ev '^$|#' nginx.conf.bak >nginx.conf

vim nginx.conf
将user改为www

创建www用户
创建:useradd -u 1111 www -s /sbin/nologin -M
检查:id www

 切换目录:

cd conf.d/

生成ld.conf文件
vim ld.conf
upstream test {
       server 192.168.149.111:80;
       server 192.168.149.112:80;
       server 192.168.149.113:80;
    }
server {
    listen       80;
    server_name  www.test.com;
    location / {
        proxy_pass http://test;
    }
}

第三个历程: 实现负载功能测试 

创建www的站点配置文件 

cd /etc/nginx/conf.d
vim www.conf
server {
       listen        80;
       server_name   www.test.com;
       location  / {
         root  /html/www;
         index   wenwen.html;
       }
}

将配置文件下发给另外两台集群服务器

scp -rp /etc/nginx/conf.d/www.conf 192.168.149.112:/etc/nginx/conf.d
scp -rp /etc/nginx/conf.d/www.conf 192.168.149.113:/etc/nginx/conf.d

因没有真实域名,修改Windows的hosts文件加域名解析

192.168.149.51    www.test.com  blog.test.com bbs.test.com

指定负载访问的域名需要修改/etc/nginx/nginx.conf配置文件指定访问域名的站点目录

三个集群web服务器都需要进行修改

vim /etc/nginx/nginx.conf

主要需要修改的内容如下: 第二行需要进行注释
include /etc/nginx/conf.d/www.conf;
#include /etc/nginx/conf.d/*.conf;

三台均衡服务器生成测试html文件 

for name in www bbs blog;do echo "$name 192.168.149.111">/html/$name/wenwen.html;done

使用负责均衡服务器进行测试:

加解析域名:
vim /etc/hosts
192.168.149.41 www.test.com

重启网络服务生效:
systemctl restart network

利用curl命令访问负载均衡服务器

curl www.test.com/wenwen.html

反向代理模块使用:

ngx_http_proxy_module       --- proxy_pass

访问不同的网站地址,不能显示不同的网站页面

proxy_set_header Host $host;

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
    }
}

在这个例子中,当用户访问 http://example.com/ 时,NGINX 会将请求转发到 http://backend_server,并且会将 Host 请求头设置为 example.com,即 server_name 中定义的服务器名称。这样,后端服务器就可以根据这个 Host 值来处理请求

通过使用 proxy_set_header 指令,可以确保后端服务器接收到的请求头部信息是准确和完整的,从而保证代理后的请求能够正确地被后端服务器处理。这对于维护后端服务的正常运行和安全性是非常关键的。

proxy_set_header X-Forwarded-For $remote_addr;

访问网站用户地址信息无法进行分析统计 

到/var/log/nginx/查看access.log日志可以看到

proxy_next_upstream error timeout http_404 http_502 http_403;

访问负载均衡会出现错误页面,影响用户体验

以上部署需要:三台web集群服务器,一台数据存储nfs服务器.一台sql数据库服务器,一台负载均衡服务器共六台

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ycchenG7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值