当前位置: 首页 > article >正文

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

负载均衡+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  nginx

3.安装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.conf
 24 user = dezyan
 26 group = dezyan
 38 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_params
	    proxy_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.kler.cn/a/446249.html

相关文章:

  • 【原生js案例】让你的移动页面实现自定义的上拉加载和下拉刷新
  • 深入理解ER模型:数据库设计的核心工具与应用
  • PHP接入美团联盟推广
  • 本地缓存和Redis缓存 存储更新时间的更新套路
  • Navicat 17 功能简介 | SQL 美化
  • [机器学习]XGBoost(3)——确定树的结构
  • QT exe文件设置图标【终极解决方案!】
  • word实现两栏格式公式居中,编号右对齐
  • 解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题
  • Java 单元测试中 JSON 相关的测试案例
  • 【C++算法】48.分治_归并_数组中的逆序对
  • uniapp 图片上传功能以及给图片添加水印
  • 数据分析实战—鸢尾花数据分类
  • 诸葛智能CTO文革:放大数据价值,释放金融营销原动力
  • Day29 C++ 模板
  • day-95 定长子串中元音的最大数目
  • 计算机视觉:原理、分类与应用
  • 头歌实训数据结构与算法-图的最短路径(第2关:多源最短路径)
  • 在 C# 中加载图像而不锁定文件
  • Xcode 文件缺失:Missing submodule xxx
  • 基于Spring Boot的大学就业信息管理系统
  • MPLS小实验:静态建立LSP
  • 【Spring】Spring的模块架构与生态圈—Spring MVC与Spring WebFlux
  • thinkphp框架diygw-ui-php进销存出库记录操作
  • 基于Spring Boot的高校素拓分管理系统
  • ImageGlass:基于C#开发的轻量级、多功能的图像查看器