负载均衡+LNMP+rsync+NFS+lsync部署流程

server/2024/12/22 12:12:13/

负载均衡+LNMP+NFS+rsync+lsync部署流程

文章目录

  • 负载均衡+LNMP+NFS+rsync+lsync部署流程
    • 服务器准备
    • 需求
    • 配置过程
      • 1.nfs服务器配置动态资源公共存储磁盘/data/wordpress
      • 2.db01服务器配置存放静态资源的数据库服务
      • 3.web两台服务器部署nginx+PHP服务
      • 4.web两台服务器编写业务配置文件,创建代码目录并修改其属主组,上传代码
      • 5.浏览器访问,并进行“数据库的打通”配置(两台web都做)
      • 6.将nfs的/data/wordpress挂载到业务存储动态资源的位置
      • 7.lb01配置负载均衡
      • 8.backup服务器配置rsync备份服务
      • 9.nfs服务器部署lsync服务监控动态文件目录,实时同步至backup
      • 10.设置定时任务、脚本,实现定期备份代码
      • 11.在backup服务器部署nfs服务器,编写脚本,防止单点故障

服务器准备

主机名公网IP私网IP功能
web0110.0.0.7172.16.1.7Nginx+PHP
web0210.0.0.8172.16.1.8Nginx+PHP
db0110.0.0.51172.16.1.51mariadb
nfs10.0.0.31172.16.1.31nfs,lsync
lb0110.0.0.5172.16.1.5nginx负载均衡
backup10.0.0.41172.16.1.41rsync

需求

部署WordPress业务;

1.所有服务统一虚拟用户:dezyan ,uid和gid均为666
2.动态资源存储到nfs服务器中,而且为了防止nfs单点故障,要设置备用nfs服务器,并设置脚本
3.静态资源存放在db01服务器中
4.需要多台web服务器,并且要实现负载均衡
5.用户的动态文件需要实时同步至backup服务器中的/imag目录
6.要每天24点备份代码目录至backup服务器中的/code目录,要压缩为以当天主机名+日期命名的压缩包再备份
7.除代理服务器外,所有服务器都不得暴露在公网中

配置过程

1.nfs服务器配置动态资源公共存储磁盘/data/wordpress

1.创建虚拟用户dezyan
[root@nfs ~]# groupadd -g666 dezyan
[root@nfs ~]# useradd -g666 -u666 -M -s /sbin/nologin dezyan
[root@nfs ~]# id dezyan 
uid=666(dezyan) gid=666(dezyan) groups=666(dezyan)
2.安装nfs服务,并进行配置
[root@nfs ~]# yum install -y nfs-utils
[root@nfs ~]# cat /etc/exports
/data/wordpress 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3.创建必要文件,并启动
[root@nfs ~]# mkdir -p /data/wordpress
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable  nfs
4.检查
[root@nfs ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/wordpress 172.16.1.0/24
5.更改属主属组
[root@nfs ~]# chown -R dezyan.dezyan /data/wordpress/

2.db01服务器配置存放静态资源的数据库服务

1.安装mariadb服务,并启动
[root@db01 ~]# yum install -y mariadb-server
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable  mariadb
2.设置数据库密码
[root@db01 ~]# mysqladmin password 'dzy123.com'
3.设置远程登录账户
[root@db01 ~]# mysql -uroot -pdzy123.com
MariaDB [(none)]> grant all on  *.* to dzy@'%' identified by 'dzy123.com';
4.创建WordPress静态资源存放的数据库,名为wordpress
MariaDB [(none)]> create database wordpress;
5.使用web服务器远程连接测试
注意!web01和web02服务器也要下载mariadb-server服务,但不需要启动,因为需要MySQL命令
[root@web01 ~]# yum install -y mariadb-server
[root@web02 ~]# yum install -y mariadb-server
[root@web02 ~]# mysql -h172.16.1.51  -udzy  -pdzy123.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.

3.web两台服务器部署nginx+PHP服务

#两台机器步骤完全一样,此处只以web01演示配置过程
1.创建虚拟用户dezyan
[root@web01 ~]# groupadd -g 666 dezyan
[root@web01 ~]# useradd -g666 -u666 -M -s /sbin/nologin dezyan
[root@web01 ~]# id dezyan
uid=666(dezyan) gid=666(dezyan) groups=666(dezyan)2.安装nginx服务,修改配置,启动服务
#安装
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@web01 ~]# yum install -y nginx
#改配置
[root@web01 ~]# cd /etc/nginx/
[root@web01 nginx]# vim nginx.conf
user  dezyan;
#启动
[root@web01 nginx]# systemctl start nginx
[root@web01 nginx]# systemctl enable  nginx3.安装PHP,修改配置,启动服务
#安装
[root@web01 ~]# yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo   php-process php-xml php-json
#改配置
[root@web01 ~]# vim /etc/php-fpm.d/www.conf24 user = dezyan26 group = dezyan38 listen = 127.0.0.1:9000
#启动
[root@web01 ~]# systemctl  start php-fpm
[root@web01 ~]# systemctl enable  php-fpm
#检查端口有本地9000端口即可

4.web两台服务器编写业务配置文件,创建代码目录并修改其属主组,上传代码

#两台机器步骤完全一样,此处只以web01演示配置过程
#编写业务配置文件
[root@web01 ~]# vim /etc/nginx/conf.d/wp.conf
server {listen 80;server_name wp.dezyan.com;root /code/wordpress;location / {index index.php index.html;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl restart nginx
#创建代码目录,上传代码
[root@web01 ~]# mkdir /code/wordpress -p
[root@web01 ~]# cd /code/wordpress/
[root@web01 wordpress]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
[root@web01 wordpress]# tar xf wordpress-5.0.3-zh_CN.tar.gz
[root@web01 wordpress]# rm -rf wordpress-5.0.3-zh_CN.tar.gz
[root@web01 wordpress]# mv wordpress/* .
#修改代码目录属主属组
[root@web01 ~]# chown -R dezyan.dezyan /code/wordpress/

5.浏览器访问,并进行“数据库的打通”配置(两台web都做)

  • 按照下表填写
数据库名wordpress
用户名dzy
密码dzy123.com
数据库主机172.16.1.51
表前缀wp_

6.将nfs的/data/wordpress挂载到业务存储动态资源的位置

#两台机器步骤完全一样,此处只以web01演示配置过程
#创建动态文件存放目录
mkdir -p /code/wordpress/wp-content/uploads/
mount -t nfs 172.16.1.31:/data/wordpress /code/wordpress/wp-content/uploads/
#设置开机自动挂载
[root@web01 ~]# vim /etc/fstab
172.16.1.31:/data/wordpress     /code/wordpress/wp-content/uploads/     nfs defaults 0 0

7.lb01配置负载均衡

1.创建虚拟用户dezyan
[root@web01 ~]# groupadd -g 666 dezyan
[root@web01 ~]# useradd -g666 -u666 -M -s /sbin/nologin dezyan
[root@web01 ~]# id dezyan
uid=666(dezyan) gid=666(dezyan) groups=666(dezyan)2.安装nginx服务,修改配置,启动服务
#安装
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@web01 ~]# yum install -y nginx
#改配置
[root@web01 ~]# cd /etc/nginx/
[root@web01 nginx]# vim nginx.conf
user  dezyan;
#配置代理
#反向代理优化文件
vim /etc/nginx/proxy_paramsproxy_set_header Host $http_host;	proxy_http_version 1.1;				proxy_connect_timeout 30;			proxy_send_timeout 60;proxy_read_timeout 60;proxy_buffering on;proxy_buffer_size 32k;proxy_buffers 4 128k;
[root@lb01 ~]# cd /etc/nginx/conf.d/
[root@lb01 conf.d]# vim lb.conf
upstream webs {						server 172.16.1.7;server 172.16.1.8;
}
server {listen 80;server_name wp.dezyan.com;		location / {proxy_pass http://webs;		#使用proxy_pass模块将请求转发给地址池include proxy_params;}
}#启动
[root@web01 nginx]# systemctl start nginx
[root@web01 nginx]# systemctl enable  nginx

8.backup服务器配置rsync备份服务

1.下载rsync服务
[root@backup ~]# yum install -y rsync
2.修改配置文件
uid = dezyan
gid = dezyan
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log[code]
path = /rsync/code[imag]
path = /rsync/imag
3.创建必要文件
[root@backup ~]# groupadd -g 666 dezyan
[root@backup ~]# useradd -g 666 -u 666 -M -s /sbin/nologin dezyan
[root@backup ~]# id dezyan
uid=666(dezyan) gid=666(dezyan) groups=666(dezyan)
[root@backup ~]# echo rsync_backup:123 > /etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd 
[root@backup ~]# mkdir -p /rsync/code  /rsync/imag
[root@backup ~]# chown -R dezyan.dezyan /rsync/
4.启动服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable  rsyncd
5.随便找一台机器测试
[root@lb01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::code

9.nfs服务器部署lsync服务监控动态文件目录,实时同步至backup

1.安装
[root@nfs ~]# yum install -y lsyncd
2.配置
[root@nfs ~]# vim /etc/lsyncd.conf
settings {logfile = "/var/log/lsyncd/lsyncd.log",statusFile = "/var/log/lsyncd/lsyncd.status",maxProcesses = 2,nodaemon = false,
}
sync {default.rsync,source = "/data/wordpress/",target = "rsync_backup@172.16.1.41::imag",delete = true,delay = 1,rsync = {binary = "/usr/bin/rsync",password_file = "/etc/rsyncd.pwd",archive = true,compress = true,}
}
3.创建必要文件
[root@nfs ~]# echo 123 > /etc/rsyncd.pwd
[root@nfs ~]# chmod 600 /etc/rsyncd.pwd
4.启动服务
[root@nfs ~]# systemctl start lsyncd
[root@nfs ~]# systemctl enable  lsyncd
5.在backup查看是否已同步
[root@backup ~]# ll -d /rsync/imag/*
drwxr-xr-x 3 dezyan dezyan 16 Dec 11 17:52 /rsync/imag/2024

10.设置定时任务、脚本,实现定期备份代码

#两台web机器步骤完全一样,此处只以web01演示配置过程
[root@web01 ~]# mkdir /shellscripts
[root@web01 ~]# vim /shellscripts/code.sh
date=`date +%F`
name=`hostname`
dir={$date}_{$name}
tar zcf /tmp/$dir.tar.gz /code/*  
export RSYNC_PASSWORD=123
rsync -avz /tmp/$dir.tar.gz rsync_backup@172.16.1.41::code[root@web01 ~]# vim /etc/crontab
00 00 * * * root sh /shellscripts/code.sh

11.在backup服务器部署nfs服务器,编写脚本,防止单点故障

1.下载
[root@backup ~]# yum install -y nfs-utils
2.配置
[root@backup ~]# vim /etc/exports
/rsync/imag 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3.启动
[root@backup ~]# systemctl start nfs
[root@backup ~]# systemctl enable nfs
4.查看
[root@backup ~]# showmount -e 172.16.1.41
Export list for 172.16.1.41:
/rsync/imag 172.16.1.0/24
5.编写脚本(web端都写)
[root@web01 ~]# vim  /shellscripts/shellneterror.sh
#!/bin/bash
ping -c1 -W1 172.16.1.31 &>/dev/null #或者使用
#showmount -e 172.16.1.31 &>/dev/null
if [ $? -ne 0 ];then
umount -lf /code/wordpress/wp-content/uploads &>/dev/null &
sleep 2
umount -lf /code/wordpress/wp-content/uploads &>/dev/null
mount -t nfs 172.16.1.41:/rsync/imag /code/wordpress/wp-content/uploads
fi

http://www.ppmy.cn/server/152228.html

相关文章

12_HTML5 Video(视频) --[HTML5 API 学习之旅]

HTML5 引入了 <video> 标签&#xff0c;使得在网页中嵌入和控制视频变得非常简单。<video> 元素允许你直接在 HTML 中指定视频文件&#xff0c;并提供了多种属性和方法来控制视频的播放、暂停、音量等。 基本用法 HTML5 的 <video> 标签让嵌入和控制视频变…

使用 datamodel-code-generator 从 MySQL 生成 Python 模型

使用 datamodel-code-generator 从 MySQL 生成 Python 模型 简介 datamodel-code-generator 是一个强大的工具&#xff0c;可以从多种数据源&#xff08;包括 MySQL&#xff09;自动生成 Python 数据模型。本文将详细介绍如何使用它从 MySQL 数据库生成 Pydantic 模型。 安装…

分布式数据库 OceanBase 的前世今生

文章目录 分布式数据库的开端OceanBase 2022 年度发布会为什么“小就是大”&#xff1f;商业化进程按下“加速键”向国际输出中国技术 OceanBase 2024 年度发布会为什么要做云数据库&#xff1f;2 年服务超 700 客户崭露头角一体化云数据库简化数据栈产品力和生态力是未来制胜关…

react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由

使用BrowserRouter package 配置 &#xff08;这部分代码可以不做配置也能实现&#xff09; {"homepage": "/admin",}vite.config 配置 export default defineConfig({base: /admin])BrowserRouter 添加配置项 <BrowserRouter basename/admin>&l…

【Spring框架 三】

Spring框架 三 SpringWeb开发框架框架概述核心组件RESTful Web Services异常处理过滤器和拦截器 总结 Spring Spring框架是一个开源的Java应用程序框架&#xff0c;它提供了一种轻量级的解决方案&#xff0c;用于开发企业级Java应用程序。Spring框架的核心原则是依赖注入&…

Scala快速入门+示例

目录 定义和描述idea基础关键字变量、常量输出数据类型类型转换 函数式编程函数和方法的区别定义示例有参带返回值有参没有返回值 注意点 面向对象object和class的区别对象的属性 快速上手使用版 定义和描述 基于JVM的语言&#xff0c;支持面向对象、面向函数&#xff0c;支持…

高校教师成果管理小程序的设计与实现springboot+论文源码调试讲解

第2章 开发环境与技术 基于web的高校教师成果管理的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对基于web的高校教师成果管理用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常…

简单介绍一下Linux的常用命令

一、文件和目录操作命令 ls&#xff08;list&#xff09;命令 功能&#xff1a;用于列出目录的内容&#xff0c;包括文件和子目录的名称、权限、所有者、大小、修改时间等信息。 示例&#xff1a; ls&#xff1a;简单列出当前目录下的非隐藏文件和目录。 ls -l&#xff1a;以…