麒麟操作系统服务架构保姆级教程(八)数据库拆分静态业务拆分和负载均衡

当我们网站的访问量提升上来了,平均每分钟上千条访问量,但是服务器的性能是有限的,所以就需要将单台的架构进行拆分了,但是web服务器的内容不同怎么办,就会用到咱们的共享存储,两台web服务器今天咱们将LNMP架构拆分,分别拆分为:lb负载均衡,web服务器,数据库服务器,共享存储服务器,好,话不多说,直接开始操作

目录

一、LNMP架构拆分:数据库

二、LNMP架构拆分:扩展web服务

三、配置NFS服务

四、nginx正向代理和反向代理

五、配置负载均衡:

六、负载均衡调度算法


💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!

👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!

🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!

服务器拆分如下:

服务器名称 IP
lb01 10.0.0.5
web01 10.0.0.7
web02 10.0.0.8
db01 10.0.0.51
nfs 10.0.0.31

一、LNMP架构拆分:数据库

bash 复制代码
db01   10.0.0.51
web01  10.0.0.7
第一步: 准备一台10.0.0.51服务器
1.部署Mariadb服务
[root@db01 ~]#yum -y install mariadb-server
2.启动mariadb 加入开机自动启动
[root@db01 ~]#systemctl start mariadb
[root@db01 ~]#systemctl enable mariadb
第二步:将web01上的数据库的内容倒入文件中名为all.sql
[root@web01 ~]# mysqldump -uroot -pqy123.com -A >all.sql
第三步:将all.sql 拷贝到db01
[root@db01 ~]# scp all.sql 10.0.0.51:/root/ 
第四步:db01服务器将all.sql导入本地数据
[root@db01 ~]#mysql -uroot < all.sql
重启密码生效
[root@db01 ~]#systemctl restart mariadb
授权一个用户可以实现远程连接:
[root@db01 ~]#mysql -uroot -pqy123.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 使用以下命令授权远程用户qy 管理所有的库和所有的表,密码为qy123.com
MariaDB [(none)]> grant all on  *.* to qy@'%' identified by 'qy123.com';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
第五步: web01服务器修改业务代码数据信息指向db01
web服务器停止数据库并禁止开机自动运行!!!
[root@web01 ~]#systemctl stop mariadb
[root@web01 ~]#systemctl disable mariadb
测试远程连接数据库:
先用root用户测试
[root@web01 ~]#mysql -h 172.16.1.51 -uroot -pqy123.com
ERROR 1045 (28000): Access denied for user 'root'@'172.16.1.7' (using password: YES)
在用授权用户qy测试
[root@web01 ~]#mysql -h 172.16.1.51 -uqy -pqy123.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
MariaDB [(none)]> quit
修改代码中的数据库的配置信息:
查找数据库信息位于哪个配置文件
[root@web01 wordpress]#grep 'y123.com' .* -r
./wp-config.php:define( 'DB_PASSWORD', 'qy123.com' );
../wordpress/wp-config.php:define( 'DB_PASSWORD', 'qy123.com' );
../she/config.php:$pe['db_pw'] = 'qy123.com'; //数据库密码
找到后进行修改:
[root@web01 wordpress]#egrep 'DB_USER|DB_HOST'  wp-config.php -n
26:define( 'DB_USER', 'qy' );
32:define( 'DB_HOST', '172.16.1.51' );
访问业务测试:
www.wp.com

二、LNMP架构拆分:扩展web服务

bash 复制代码
web01 10.0.0.7
web02 10.0.0.8
db01  10.0.0.51
1.准备一台web02
2.创建虚拟用户www
[root@web02 ~]#groupadd -g666 www
[root@web02 ~]#useradd -u666 -g666 -M -s /sbin/nologin www
3.web02服务器部署nginx
[root@web02 ~]#scp 172.16.1.7:/etc/yum.repos.d/nginx.repo /etc/yum.repos.d/
[root@web02 ~]#yum -y install nginx
4.web02服务器部署php
1)上传php.tar.gz
2)解压
[root@web02 ~]#tar xf php71.tar.gz
3)本地安装
[root@web02 ~]#yum -y localinstall *.rpm
5.nginx配置无差异同步web01
[root@web02 ~]#rsync -avz --delete 172.16.1.7:/etc/nginx /etc/
6.php配置无差异同步web01
[root@web02 ~]#rsync -avz --delete 172.16.1.7:/etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf
7.web01将整个代码目录拷贝到web02
web01打包代码目录
[root@web01 /]#tar zcvf code.tar.gz code
拷贝到web02
[root@web01 /]#scp code.tar.gz 172.16.1.8:/
web02解压代码目录
[root@web02 /]#tar xf code.tar.gz 
[root@web02 /]#ll code
8.修改session目录权限
[root@web02 ~]#chown www.www /var/lib/php/session/
9.启动服务
[root@web02 ~]#systemctl start nginx php-fpm
[root@web02 ~]#systemctl enable nginx php-fpm
10.测试服务
将hosts 解析到web02
10.0.0.8  www.wp.com

10.0.0.8可以正常访问服务啦!!!

三、配置NFS服务

bash 复制代码
10.0.0.7  web01 客户端
10.0.0.8  web02 客户端
10.0.0.31 NFS   服务端
1.装备一台NFS服务器 
2.安装nfs服务
yum -y install nfs-utils
3.配置nfs服务
[root@nfs ~]#cat /etc/exports
/code/wp  172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/code/she 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
创建必要数据:
[root@nfs ~]#groupadd  -g666 www
[root@nfs ~]#useradd -u666 -g666 -M -s /sbin/nologin www
[root@nfs ~]#mkdir -p /code/{wp,she}
[root@nfs ~]#ll /code/
total 0
drwxr-xr-x 2 root root 6 Apr 18 11:30 she
drwxr-xr-x 2 root root 6 Apr 18 11:30 wp
授权属主属组为www
[root@nfs ~]#chown www.www /code/{wp,she}
[root@nfs ~]#ll /code/
total 0
drwxr-xr-x 2 www www 6 Apr 18 11:30 she
drwxr-xr-x 2 www www 6 Apr 18 11:30 wp
4.启动nfs服务
[root@nfs ~]#systemctl start nfs
[root@nfs ~]#systemctl enable nfs
5.检查nfs服务
[root@nfs ~]#cat /var/lib/nfs/etab 
/code/she   
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
/code/wp    
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
客户端挂载:
1.两台客户端web01和web02需要安装nfs-utils 不需要启动
[root@web01 ~]#yum -y install nfs-utils
[root@web02 ~]#yum -y install nfs-utils
2.将web01和web02上本地磁盘上的图片推送到nfs服务端
[root@web01 /]#scp -r /code/wordpress/wp-content/uploads/2024 172.16.1.31:/code/wp/
[root@web02 ~]#scp -r /code/wordpress/wp-content/uploads/2024/04/* 172.16.1.31:/code/wp/2024/04/
3.挂载查看图片
web01挂载
[root@web01 ~]#mount -t nfs 172.16.1.31:/code/wp /code/wordpress/wp-content/uploads
[root@web01 zh]#df -h
df: '/mnt': Stale file handle
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              476M     0  476M   0% /dev
tmpfs                 487M     0  487M   0% /dev/shm
tmpfs                 487M  7.7M  479M   2% /run
tmpfs                 487M     0  487M   0% /sys/fs/cgroup
/dev/sda3              18G  2.6G   16G  15% /
/dev/sda1             197M  110M   88M  56% /boot
tmpfs                  98M     0   98M   0% /run/user/0
172.16.1.31:/code/wp   18G  2.0G   16G  12% /code/wp/wp-content/uploads   
修改NFS上共享目录下权限
[root@nfs ~]#chown -R www.www /code/wp/
[root@nfs ~]#ll /code/wp/
total 0
drwxr-xr-x 3 www www 16 Apr 18 11:36 2024
web02挂载
[root@web02 ~]#mount -t nfs 172.16.1.31:/code/wp /code/wordpress/wp-content/uploads
[root@web02 ~]#df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              476M     0  476M   0% /dev
tmpfs                 487M     0  487M   0% /dev/shm
tmpfs                 487M  7.7M  479M   2% /run
tmpfs                 487M     0  487M   0% /sys/fs/cgroup
/dev/sda3              18G  2.3G   16G  13% /
/dev/sda1             197M  110M   88M  56% /boot
tmpfs                  98M     0   98M   0% /run/user/0
172.16.1.31:/code/wp   18G  2.0G   16G  12% /code/wordpress/wp-content/uploads

在10.0.0.7创建新的内容

10.0.0.8也可以访问到内容啦

四、nginx正向代理和反向代理

bash 复制代码
正向代理
    正向代理是一个位于客户端和目标服务器之间的代理服务器。客户端通过配置正向代理服务器,将请求发送给代理服务器,代理服务器再将请求转发到目标服务器,目标服务器响应后,代理服务器将响应返回给客户端。简单来说,正向代理是代表客户端去访问目标服务器;在一些情况下,客户端可能不想让目标服务器知道自己的真实 IP 地址,通过正向代理,目标服务器看到的请求 IP 是代理服务器的 IP,从而保护了客户端的隐私。
反向代理
定义:
反向代理服务器位于目标服务器(如 Web 服务器)之前,客户端直接向反向代理服务器发送请求,反向代理服务器根据请求的内容,将请求转发到内部的真实服务器(可以是一个或多个),并将真实服务器的响应返回给客户端。反向代理是代表服务器来接收客户端的请求。
可以通过nginx的反向代理实现负载均衡,当网站的流量很大时,通过将请求均匀地分配到多个内部服务器,可以避免单个服务器过载,提高系统的整体性能和可用性。例如,一个大型电商网站在促销活动期间,大量的用户请求可以通过反向代理被分配到多个 Web 服务器上进行处理。反向代理服务器可以隐藏内部服务器的真实 IP 地址,对内部服务器起到一定的保护作用。外部的恶意攻击者很难直接攻击到内部的真实服务器,因为他们接触到的只有反向代理服务器。而且,反向代理服务器还可以对请求进行过滤,如过滤恶意请求、SQL 注入攻击等,提高系统的安全性;随着网站业务的增长,可以方便地在后端添加更多的真实服务器,只需要在反向代理服务器上配置好新的服务器加入负载均衡的规则即可,而不需要对客户端进行任何修改。

五、配置负载均衡:

bash 复制代码
10.0.0.5
1.配置nginx仓库
[root@web01 /]#scp /etc/yum.repos.d/nginx.repo 10.0.0.5:/etc/yum.repos.d/nginx.repo
2.安装nginx
[root@lb01 ~]#yum -y install nginx
3.配置负载均衡
[root@lb01 conf.d]#cat default.conf 
upstream webs {
    server 172.16.1.7;
    server 172.16.1.8;
}
server {
    listen 80;
    server_name www.static.com;
    location / {
        proxy_pass http://webs;
        include proxy_params;
    }
}
[root@lb01 conf.d]#cat ../proxy_params 
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

修改本地的hosts解析;

发现是通过10.0.0.5负载均衡服务器进行的转发访问了

六、负载均衡调度算法

bash 复制代码
负载均衡的几种调度算法?
一共五种:
1.轮询  按时间顺序逐一分配到不同的后端服务器(默认)    配置相同。默认的为轮询
2.weight  加权轮询,weight值越大,分配到的访问几率越高 后端web服务器配置不相同使用
3.ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
4.url_hash  按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
5.least_conn  最少链接数,那个机器链接数少就分发
简述(五种!五种!五种!!!)
1.rr轮询
2.加权轮询
3.ip_hash
4.url_hash
5.最少连接数

今天的LNMP架构拆分就告一段落了,但是负载均衡服务还有很多,下篇文章我准备着重介绍一下各类的负载均衡实现方法


想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~

相关推荐
喻师傅11 分钟前
SQL—替换字符串—replace函数用法详解
android·数据库·sql
Wind哥12 分钟前
VS2022引入sqlite数据库交互
数据库·c++·sqlite
童安格粉丝22 分钟前
linux下安装达梦数据库v8详解
linux·数据库·centos·达梦·安装·客户端·v8
李歘歘23 分钟前
Redis数据库——Redis雪崩、穿透、击穿
java·数据库·redis·mysql·缓存·go
我是鸹貔31 分钟前
微服务-Eureka
微服务·eureka·架构
凡人的AI工具箱33 分钟前
每天40分玩转Django:Django实战 - 在线打印服务系统
网络·数据库·后端·python·django
开心工作室_kaic38 分钟前
springboot571基于协同过滤算法的私人诊所管理系统(论文+源码)_kaic
前端·数据库·vue.js·后端·html5
代码代码快快显灵1 小时前
Redis的数据结构(基本)
数据库·redis·缓存
genggeng不会代码1 小时前
操作系统大题整理
linux·运维·服务器