
主机环境
#DNS服务器2台
Master:192.168.10.100
Slave:192.168.10.101
#Iptables 1台
eth1:192.168.10.10
eth0:10.0.0.210
#WEB服务器2台
WEB1:10.0.0.100
WEB2:10.0.0.101
#MySQL服务器2台
Matser:10.0.0.5
Slave:10.0.0.6
#NFS共享服务器1台
10.0.0.201
#NFS的数据备份服务器1台
10.0.0.202
#客户端1台
192.168.10.20
部署数据库主服务器
#数据库安装,采用二进制方式安装,这里我采用脚本方式安装
[root@rocky8 ~]#bash install_mysql5.7or8.0.sh
开始安装MySQL数据库...
安装相关包完成! [ OK ]
创建mysql用户 [ OK ]
数据库安装完成 [ OK ]
#修改主从服务器的主机名
[root@rocky8 ~]#hostnamectl set-hostname mysql-master
[root@rocky8 ~]#hostnamectl set-hostname mysql-slave
#创建提供wordpress网站使用的数据库,库名称为wordpress
mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)
#创建一个账号提供后续搭建WEB服务使用
ysql> create user wordpress@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on wordpress.* to wordpress@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)
#记得刷新权限,否则容易出现权限问题,导致wordpress网站无法连接数据库进行配置
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
部署NFS共享服务器
部署NFS共享服务器,提供apache存储页面服务
[root@NFS01 ~]#apt install nfs-server
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
注意,选中 'nfs-kernel-server' 而非 'nfs-server'
将会同时安装下列软件:
keyutils libnfsidmap1 nfs-common rpcbind
建议安装:
watchdog
下列【新】软件包将被安装:
keyutils libnfsidmap1 nfs-common nfs-kernel-server rpcbind
......................
#启动服务,并添加到开机启动,Ubuntu安装完软件默认会启动并添加至开机启动
[root@NFS01 ~]#systemctl enable --now nfs-server
#创建一个同步目录
[root@NFS01 ~]#mkdir /data/wordpress -pv
#配置远程挂载目录,如下配置为挂载至/data/wordpress目录并读写,由于为提供apache存储共享文件,ubuntu下为www-data权限启动apache服务,NFS默认为只读压缩root用户权限以及不压缩普通用户权限,为方便root用户配置,故需设置可读写以及不压缩root权限,故设置特定ID不压缩权限
[root@NFS02 ~]#vim /etc/exports
/data/wordpress *(rw,no_root_squash)
[root@NFS01 wordpress]#exportfs -r
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified forexport"*:/data/wordpress".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
部署WEB服务器(wordpress搭建博客(LAMP)
网卡配置
#配置web01网卡,网关指向iptables
[root@web01 ~]#vim /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
-10.0.0.100/24
gateway4: 10.0.0.210
#配置web02网卡,网关指向iptables
[root@web02 ~]#vim /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
-10.0.0.101/24
gateway4: 10.0.0.210
#重新加载网卡配置
[root@web01 ~]#netplan apply
[root@web02 ~]#netplan apply
安裝apache、php
php为依赖于apache的一个组件,没有独立的服务,为apache提供php的能力,phph无法独立部署,如需独立部署,需安装php-fpm包
#分別在两台web服务器安装apache、php服务相关组件
[root@web01 ~]#apt install apache2 php php7.4-mysql php7.4-json php7.4-xml
[root@web02 ~]#apt install apache2 php php7.4-mysql php7.4-json php7.4-xml
#安装完相应组件,ubuntu下apache服务会默认启动
[root@web01 ~]#systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset>
Active: active (running) since Sun 2022-11-2011:52:56 CST; 10s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 768ExecStart=/usr/sbin/apachectl start(code=exited, status=0/SUCC>
Main PID: 804 (apache2)
Tasks: 6 (limit: 2236)
Memory: 23.2M
CGroup: /system.slice/apache2.service
├─804 /usr/sbin/apache2 -kstart
├─807 /usr/sbin/apache2 -kstart
├─808 /usr/sbin/apache2 -kstart
├─809 /usr/sbin/apache2 -kstart
├─810 /usr/sbin/apache2 -kstart
└─811 /usr/sbin/apache2 -kstart
11月 2011:52:55 web02 systemd[1]: Starting The Apache HTTP Server...
11月 2011:52:56 web02 systemd[1]: Started The Apache HTTP Server.
#分别在web01以及web02修改php的配置
[root@web01 ~]#vim /etc/php/7.4/apache2/php.ini
post_max_size = 80M
upload_max_filesize = 100M
date.timezone =Asia/Shanghai
[root@web02 ~]#vim /etc/php/7.4/apache2/php.ini
post_max_size = 80M
upload_max_filesize = 100M
date.timezone =Asia/Shanghai
#重启apache服务,重新加载php配置
[root@web01 ~]#systemctl restart apache2
#写一段测试页面,出现如下页面效果,则php可以正常运行
[root@ubuntu2004 apt]#cat /var/www/html/index.php
<?php
phpinfo()
?>
#由于为两台web服务器,为数据同步,故配置挂载共享目录作为web页面存放位置
1)两台web服务器分别安装NFS客户端
[root@web01 ~]#apt install nfs-common
[root@web01 ~]#apt install nfs-common
2)查看远程主机的共享
[root@web01 ~]#showmount -e 10.0.0.201
Export list for10.0.0.201:
/data/wordpress *
[root@web02 ~]#showmount -e 10.0.0.201
Export list for10.0.0.201:
/data/wordpress *
3)为开机即可挂载共享目录,故分别在两台web服务器的/etc/fstab配置挂载参数
[root@web01 ~]#vim /etc/fstab
10.0.0.201:/data/wordpress /var/www/html nfs _netdev 00
[root@web02 ~]#vim /etc/fstab
10.0.0.201:/data/wordpress /var/www/html nfs _netdev 00
4)挂载
[root@ubuntu2004 ~]#mount -a
#分别查看两台web服务器共享目录挂载情况
[root@web01 ~]#df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
udev devtmpfs 954504 0 954504 0% /dev
tmpfs tmpfs 199940 988 198952 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 101848040585571690772588 7% /
tmpfs tmpfs 999684 0 999684 0% /dev/shm
tmpfs tmpfs 5120 0 5120 0% /run/lock
tmpfs tmpfs 999684 0 999684 0% /sys/fs/cgroup
/dev/sda2 ext4 1510792 310312 1105456 22% /boot
10.0.0.201:/data/wordpress nfs4 101590016643302489950208 7% /var/www/html
tmpfs tmpfs 199936 0 199936 0% /run/user/0
[root@web02 ~]#df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
udev devtmpfs 954504 0 954504 0% /dev
tmpfs tmpfs 199940 988 198952 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 101848040600446090623844 7% /
tmpfs tmpfs 999684 0 999684 0% /dev/shm
tmpfs tmpfs 5120 0 5120 0% /run/lock
tmpfs tmpfs 999684 0 999684 0% /sys/fs/cgroup
/dev/sda2 ext4 1510792 310312 1105456 22% /boot
10.0.0.201:/data/wordpress nfs4 101590016643302489950208 7% /var/www/html
tmpfs tmpfs 199936 0 199936 0% /run/user/0
#由于在NFS服务器上设置了对root账户不压缩权限,故写入、删除数据均正常
[root@web01 html]#mkdir 123
[root@web01 html]#ls
123
[root@web02 html]#rm -rf 123

部署wordpress
#由于web页面存储在共享目录上,故只需在1台web服务器下载wordpress部署程序,并解压移动至/var/www/html目录
[root@web01 ~]#wget https://cn.wordpress.org/latest-zh_CN.tar.gz
[root@web02 ~]#wget https://cn.wordpress.org/latest-zh_CN.tar.gz
--2022-11-2012:05:57-- https://cn.wordpress.org/latest-zh_CN.tar.gz
正在解析主机 cn.wordpress.org (cn.wordpress.org)... 198.143.164.252
正在连接 cn.wordpress.org (cn.wordpress.org)|198.143.164.252|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 23533157 (22M) [application/octet-stream]
正在保存至: “latest-zh_CN.tar.gz”
latest-zh_CN.tar.gz 100%[===================>] 22.44M 5.11MB/s 用时 5.2s
2022-11-2012:06:06 (4.35 MB/s) - 已保存 “latest-zh_CN.tar.gz” [23533157/23533157])
#分别在两台web服务器解压下载的压缩包
[root@web01 ~]#ls
latest-zh_CN.tar.gz snap
[root@web01 ~]#tar xf latest-zh_CN.tar.gz
[root@web01 ~]#ls
latest-zh_CN.tar.gz snap wordpress
[root@web02 ~]#tar xf latest-zh_CN.tar.gz
[root@web02 ~]#ls
latest-zh_CN.tar.gz snap wordpress
#移动wordpress文件至/var/www/html
[root@web01 ~]#mv wordpress/* /var/www/html/
#两台web服务器均可看到移动过来的wordpress文件
[root@web02 html]#ll
总用量 232
drwxr-xr-x 5 root root 409611月 2012:53 ./
drwxr-xr-x 3 root root 409610月 3122:34 ../
-rw-r--r-- 110061006 4052月 6 2020 index.php
-rw-r--r-- 110061006199151月 1 2022 license.txt
-rw-r--r-- 110061006 73899月 1706:27 readme.html
-rw-r--r-- 110061006 72059月 1707:13 wp-activate.php
drwxr-xr-x 910061006 409611月 1612:00 wp-admin/
-rw-r--r-- 110061006 3512月 6 2020 wp-blog-header.php
-rw-r--r-- 110061006 233811月 10 2021 wp-comments-post.php
-rw-r--r-- 110061006 300112月 14 2021 wp-config-sample.php
drwxr-xr-x 510061006 409611月 1612:00 wp-content/
-rw-r--r-- 110061006 55439月 2023:44 wp-cron.php
drwxr-xr-x 27100610061228811月 1612:00 wp-includes/
-rw-r--r-- 110061006 24943月 20 2022 wp-links-opml.php
-rw-r--r-- 110061006 39859月 1916:59 wp-load.php
-rw-r--r-- 110061006491359月 2006:26 wp-login.php
-rw-r--r-- 110061006 852210月 1719:06 wp-mail.php
-rw-r--r-- 110061006245879月 2618:17 wp-settings.php
-rw-r--r-- 110061006343509月 1708:35 wp-signup.php
-rw-r--r-- 110061006 491410月 1719:22 wp-trackback.php
-rw-r--r-- 110061006 32366月 9 2020 xmlrpc.php
#由于apache2服务为www-data权限启动,故需修改wordpress文件存放位置属组为www-data
[root@web01 ~]#ss -tlnp | grep apache2
LISTEN 0 511 *:80 *:* users:(("apache2",pid=808,fd=4),("apache2",pid=807,fd=4),("apache2",pid=806,fd=4),("apache2",pid=805,fd=4),("apache2",pid=804,fd=4),("apache2",pid=801,fd=4))
[root@web01 ~]#ps aux | grep apache2
root 801 0.0 0.9 19638019764 ? Ss 12:26 0:00 /usr/sbin/apache2 -kstart
www-data 804 0.0 0.4 196828 8784 ? S 12:26 0:00 /usr/sbin/apache2 -kstart
www-data 805 0.0 0.4 196828 8784 ? S 12:26 0:00 /usr/sbin/apache2 -kstart
www-data 806 0.0 0.4 196828 8784 ? S 12:26 0:00 /usr/sbin/apache2 -kstart
www-data 807 0.0 0.4 196828 8784 ? S 12:26 0:00 /usr/sbin/apache2 -kstart
www-data 808 0.0 0.4 196828 8784 ? S 12:26 0:00 /usr/sbin/apache2 -kstart
root 2757 0.0 0.0 9524 660 pts/0 S+ 13:33 0:00 grep--color=auto apache2
[root@web01 ~]#id www-data
用户id=33(www-data) 组id=33(www-data) 组=33(www-data)
[root@web02 html]#id www-data
用户id=33(www-data) 组id=33(www-data) 组=33(www-data)
#在其中一台web服务器更改/var/www/html/属主
[root@web01 ~]#chown -R www-data.www-data /var/www/html/
[root@web01 ~]#ll /var/www/html/
总用量 232
drwxr-xr-x 5 www-data www-data 409611月 2012:53 ./
drwxr-xr-x 3 root root 409611月 2011:46 ../
-rw-r--r-- 1 www-data www-data 4052月 6 2020 index.php
-rw-r--r-- 1 www-data www-data 199151月 1 2022 license.txt
-rw-r--r-- 1 www-data www-data 73899月 1706:27 readme.html
-rw-r--r-- 1 www-data www-data 72059月 1707:13 wp-activate.php
drwxr-xr-x 9 www-data www-data 409611月 1612:00 wp-admin/
-rw-r--r-- 1 www-data www-data 3512月 6 2020 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 233811月 10 2021 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 300112月 14 2021 wp-config-sample.php
drwxr-xr-x 5 www-data www-data 409611月 1612:00 wp-content/
-rw-r--r-- 1 www-data www-data 55439月 2023:44 wp-cron.php
drwxr-xr-x 27 www-data www-data 1228811月 1612:00 wp-includes/
-rw-r--r-- 1 www-data www-data 24943月 20 2022 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 39859月 1916:59 wp-load.php
-rw-r--r-- 1 www-data www-data 491359月 2006:26 wp-login.php
-rw-r--r-- 1 www-data www-data 852210月 1719:06 wp-mail.php
-rw-r--r-- 1 www-data www-data 245879月 2618:17 wp-settings.php
-rw-r--r-- 1 www-data www-data 343509月 1708:35 wp-signup.php
-rw-r--r-- 1 www-data www-data 491410月 1719:22 wp-trackback.php
-rw-r--r-- 1 www-data www-data 32366月 9 2020 xmlrpc.php
[root@web02 html]#ll
总用量 232
drwxr-xr-x 5 www-data www-data 409611月 2012:53 ./
drwxr-xr-x 3 root root 409610月 3122:34 ../
-rw-r--r-- 1 www-data www-data 4052月 6 2020 index.php
-rw-r--r-- 1 www-data www-data 199151月 1 2022 license.txt
-rw-r--r-- 1 www-data www-data 73899月 1706:27 readme.html
-rw-r--r-- 1 www-data www-data 72059月 1707:13 wp-activate.php
drwxr-xr-x 9 www-data www-data 409611月 1612:00 wp-admin/
-rw-r--r-- 1 www-data www-data 3512月 6 2020 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 233811月 10 2021 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 300112月 14 2021 wp-config-sample.php
drwxr-xr-x 5 www-data www-data 409611月 1612:00 wp-content/
-rw-r--r-- 1 www-data www-data 55439月 2023:44 wp-cron.php
drwxr-xr-x 27 www-data www-data 1228811月 1612:00 wp-includes/
-rw-r--r-- 1 www-data www-data 24943月 20 2022 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 39859月 1916:59 wp-load.php
-rw-r--r-- 1 www-data www-data 491359月 2006:26 wp-login.php
-rw-r--r-- 1 www-data www-data 852210月 1719:06 wp-mail.php
-rw-r--r-- 1 www-data www-data 245879月 2618:17 wp-settings.php
-rw-r--r-- 1 www-data www-data 343509月 1708:35 wp-signup.php
-rw-r--r-- 1 www-data www-data 491410月 1719:22 wp-trackback.php
-rw-r--r-- 1 www-data www-data 32366月 9 2020 xmlrpc.php
打开wordpress页面初始化配置
打开其中一台web服务器开始设置








将配置拷贝至另一节点
注意:以IP形式初始化wordpress的形式存在,另一节点无法访问管理节点问题,以及访问子页面仍以ip形式访问问题,如下为以域名初始化配置方式进行部署
以域名形式初始化配置
注意,需先关闭一台服务器,由于lvs规则采用轮询方式会出现配置过程在两台web服务器切换导致出现问题,或者更改lvs配置为会话哈希调度算法方式或在轮询算法方式上增加会话保持参数
lvs配置在最后架构修改位置






问题点
打开后台慢
由于wordpres需要加载谷歌字体等插件,导致登录后台慢,可通过配置web服务器可访问外网,或者配置安装如下两个wordpress插件优化,

插件存放位置,可挂载至NFS共享路径,便于两台web服务器访问
[root@web01 plugins]#pwd
/var/www/html/wp-content/plugins
[root@web01 plugins]#ll
总用量 28
drwxr-xr-x 5 www-data www-data 409611月 2414:33 ./
drwxr-xr-x 7 www-data www-data 409611月 2414:44 ../
drwxr-xr-x 4 www-data www-data 409611月 1612:00 akismet/
-rw-r--r--1 www-data www-data 25783月 19 2019 hello.php
-rw-r--r--1 www-data www-data 286月 5 2014 index.php
drwxr-xr-x 2 www-data www-data 409611月 2414:32 remove-open-sans-font-from-wp-core/
drwxr-xr-x 4 www-data www-data 409611月 2414:33 simple-local-avatars/
发表的文章无法查看
如出现发表的文章无法查看,可在设置->固定链接,更改固定链接


测试:

部署数据库从服务器(主从复制)
#在主服务器创建用于主从复制的账号
mysql>createuser repluser@'10.0.0.%' identified by '123456';
Query OK,0 rows affected (0.01 sec)
mysql>grantallon*.*to repluser@'10.0.0.%';
Query OK,0 rows affected (0.00 sec)
mysql>flushprivileges;
Query OK,0 rows affected (0.00 sec)
#备份数据库,用于从服务器导入
[root@mysql-master ~]#mkdir /data/backup -pv
mkdir: created directory'/data/backup'
[root@mysql-master ~]#mysqldump -p123456 -A -F --single-transaction --master-data=1 > /data/backup/fullbackup.sql
mysqldump:[Warning]Using a passwordon the command line interface can be insecure.
WARNING:--master-datais deprecated and will be removed in a future version. Use--source-data instead.
#修改主从服务器my.cnf配置文件,配置GTID,后续配置主从复制信息即可不用手动指定复制节点
[root@mysql-master ~]#vim /etc/my.cnf
gtid_mode=on
enforce_gtid_consistency
[root@mysql-slave ~]#vim /etc/my.cnf
gtid_mode=on
enforce_gtid_consistency
#修改备份的数据库文件,将主从复制信息增加写入,也可单独在从服务器运行
[root@mysql-master backup]#vim fullbackup.sql
CHANGEMASTERTO MASTER_LOG_FILE='rocky8-bin.000003', MASTER_LOG_POS=157;
#将上面的语句修改为如下:
CHANGEMASTERTO
MASTER_HOST='10.0.0.5',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
#拷贝修改后的备份文件至从服务器
[root@mysql-master backup]#scp fullbackup.sql 10.0.0.6:
The authenticity of host '10.0.0.6 (10.0.0.6)' can't be established.
ECDSA key fingerprint is SHA256:DpJFnuv3cskMxmCCHcUs0C2DMzKuafG/UqtjU9a24Pc.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '10.0.0.6' (ECDSA) to the list of known hosts.
root@10.0.0.6's password:
fullbackup.sql 100%2051KB 131.5MB/s 00:00
#在从服务器导入修改后的备份文件
[root@mysql-slave ~]#mysql -p123456
mysql>select@@sql_log_bin;
+---------------+
|@@sql_log_bin|
+---------------+
| 1|
+---------------+
1rowinset(0.00 sec)
mysql>set sql_log_bin=0; #临时关闭二进制日志
Query OK,0 rows affected (0.00 sec)
mysql>select@@sql_log_bin;
+---------------+
|@@sql_log_bin|
+---------------+
| 0|
+---------------+
1rowinset(0.00 sec)
mysql>\. fullbackup.sql #导入数据库文件
mysql>set sql_log_bin=1; #开启二进制日志
Query OK,0 rows affected (0.00 sec)
#开启主从复制
mysql>startslave;
Query OK,0 rows affected,1 warning (0.01 sec)
#查看状态
mysql>showslavestatus\G;
***************************1.row***************************
Slave_IO_State: Waiting forsourceto send event
Master_Host:10.0.0.5
Master_User: repluser
Master_Port:3306
Connect_Retry:60
Master_Log_File: mysql-master-bin.000001
Read_Master_Log_Pos:157
Relay_Log_File: mysql-slave-relay-bin.000002
Relay_Log_Pos:387
Relay_Master_Log_File: mysql-master-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
Skip_Counter:0
Exec_Master_Log_Pos:157
Relay_Log_Space:603
Until_Condition: None
Until_Log_File:
Until_Log_Pos:0
Master_SSL_Allowed:No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
Master_SSL_Verify_Server_Cert:No
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:5
Master_UUID: a4cc6abf-6884-11ed-a7f5-000c299b5c13
Master_Info_File: mysql.slave_master_info
SQL_Delay:0
SQL_Remaining_Delay:NULL
Slave_SQL_Running_State: Replica has readall relay log; waiting for more updates
Master_Retry_Count:86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position:1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key:0
Network_Namespace:
1rowinset,1 warning (0.01 sec)
#从服务器优化,修改my.cnf配置,增加read-only配置,避免从服务器写入导致主从复制出现问题,如下为完整my.cnf配置
[root@mysql-slave ~]#vim /etc/my.cnf
[mysqld]
server-id=6
log-bin
read-only
datadir=/data/mysql
socket=/data/mysql/mysql.sock
gtid_mode=on
enforce_gtid_consistency
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
default_authentication_plugin=mysql_native_password
#default_authentication_plugin=caching_sha2_password
[client]
socket=/data/mysql/mysql.sock
#重启mysql服务
[root@mysql-slave ~]#systemctl restart mysqld.service
#查看数据库表是否正常
mysql>use wordpress
Databasechanged
mysql>showtables;
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
12 rows inset(0.01 sec)
配置DNS服务器
基础配置
#修改主从节点主机名
[root@rocky8 ~]#hostnamectl set-hostname dns-master
[root@rocky8 ~]#hostnamectl set-hostname dns-slave
#安装DNS服务端,bind包
[root@dns-master ~]#yum install bind bind-utils
Last metadata expiration check: 6:10:55 ago on Sun 20 Nov 202209:01:08 AM CST.
Package bind-utils-32:9.11.36-3.el8_6.1.x86_64 is already installed.
Dependencies resolved.
=================================================================================
Package Arch Version Repository Size
=================================================================================
Installing:
bind x86_64 32:9.11.36-5.el8_7.2 AppStream 2.1 M
Upgrading:
bind-libs x86_64 32:9.11.36-5.el8_7.2 AppStream 174 k
bind-libs-lite x86_64 32:9.11.36-5.el8_7.2 AppStream 1.2 M
bind-license noarch 32:9.11.36-5.el8_7.2 AppStream 103 k
bind-utils x86_64 32:9.11.36-5.el8_7.2 AppStream 451 k
python3-bind noarch 32:9.11.36-5.el8_7.2 AppStream 150 k
Transaction Summary
=================================================================================
Install 1 Package
Upgrade 5 Packages
[root@dns-slave ~]#yum install bind bind-utils
Repository extras is listed more than once in the configuration
Last metadata expiration check: 5:59:55 ago on Sun 20 Nov 202209:12:15 AM CST.
Package bind-32:9.11.36-3.el8_6.1.x86_64 is already installed.
Package bind-utils-32:9.11.36-3.el8_6.1.x86_64 is already installed.
Dependencies resolved.
=================================================================================
Package Arch Version Repository Size
=================================================================================
Upgrading:
bind x86_64 32:9.11.36-5.el8_7.2 appstream 2.1 M
bind-libs x86_64 32:9.11.36-5.el8_7.2 appstream 174 k
bind-libs-lite x86_64 32:9.11.36-5.el8_7.2 appstream 1.2 M
bind-license noarch 32:9.11.36-5.el8_7.2 appstream 103 k
bind-utils x86_64 32:9.11.36-5.el8_7.2 appstream 451 k
python3-bind noarch 32:9.11.36-5.el8_7.2 appstream 150 k
Transaction Summary
=================================================================================
Upgrade 6 Packages
配置主服务器
#修改bind配置文件,注释如下两行,以及增加一行配置allow-transfer { 从服务器IP;};
[root@dns-master ~]#vim /etc/named.conf
options {
# listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
# allow-query { localhost; };
allow-transfer { 192.168.10.101;}; #IP写从服务器
#在/etc/named.rfc1912.zones文件下加如下内容,定义区域
[root@dns-master ~]#vim /etc/named.rfc1912.zones
zone "hailin.org" {
type master;
file "hailin.org.zone";
};
#添加DNS区域数据库文件,拷贝一份/var/named/目录下的named.localhost文件,更改为定义的wordpress.com.zone文件名,记得拷贝要加-p带属性拷贝,否则属主会有问题,导致服务异常,dns服务是以named身份运行的,如没加-p,修手动修改属主,如chgrp named wordpress.com.zone
[root@dns-master ~]#cp /var/named/named.localhost /var/named/hailin.org.zone -p
[root@dns-master ~]#ll /var/named/
total 20
drwxrwx--- 2 named named 6 Nov 819:18 data
drwxrwx--- 2 named named 6 Nov 819:18 dynamic
-rw-r-----1 root named 2253 Nov 819:18 named.ca
-rw-r-----1 root named 152 Nov 819:18 named.empty
-rw-r-----1 root named 152 Nov 819:18 named.localhost
-rw-r-----1 root named 168 Nov 819:18 named.loopback
drwxrwx--- 2 named named 6 Nov 819:18 slaves
-rw-r-----1 root named 152 Nov 819:18 wordpress.com.zone
#修改区域解析库文件,新增资源记录
[root@dns-master ~]#vim /var/named/hailin.org.zone
$TTL 1D
@ IN SOA dns1.hailin.org. admin.hailin.org. (
100 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master IN A 192.168.10.100
slave IN A 192.168.10.101
www IN A 192.168.10.10
www IN A 192.168.10.20
#启动DNS服务,并添加至开机启动
[root@dns-master ~]#systemctl enable --now named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
#本机验证解析
[root@dns-master named]#host www.hailin.org
www.hailin.org has address 192.168.10.10
www.hailin.org has address 192.168.10.20
配置从服务器
#修改bind配置文件,注释如下两行,以及增加一行allow-transfer { none;}不允许其他主机进行区域传输
[root@dns-slave ~]#vim /etc/named.conf
options {
# listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
# allow-query { localhost; };
allow-transfer { none;};
#定义区域,在/etc/named.rfc1912.zones下定义区域(zone)
[root@dns-slave ~]#vim /etc/named.rfc1912.zones
zone "hailin.org" {
type slave;
masters { 192.168.10.100;};
file "slaves/hailin.org.slave"; #注意ip前面格式要有空格,否则会出现同步不了问题
};
#启动dns服务,并加入开机启动
[root@dns-slave ~]#systemctl enable --now named
#主服务器上修改区域解析库的serial,数字往上增大,以便发起同步
[root@dns-master ~]#vim /var/named/hailin.org.zone
[root@dns-master ~]#rndc reload
server reload successful
#查看区域解析库是否已同步
[root@dns-slave ~]#ll /var/named/slaves/
total 4
-rw-r--r--1 named named 350 Nov 2015:56 wordpress.com.slave
#从服务器上验证解析
[root@dns-slave slaves]#host www.wordpress.com
www.wordpress.com has address 192.168.10.10
www.wordpress.com has address 192.168.10.20
配置Iptables
配置iptables将内网的web页面映射到外部网络
#首先配置eth1网卡对应两个IP,对外提供访问
[root@rocky8 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NAME=eth1
IPADDR=192.168.10.10
PREFIX=24
IPADDR2=192.168.10.20
PREFIX2=24
BOOTPROTO=static
ONBOOT=yes
#重启eth1网卡,重新加载配置
[root@rocky8 ~]#nmcli connection reload ;nmcli connection down eth1;nmcli connection up eth1;
#配置eth0网卡ip
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.210
PREFIX=24
ONBOOT=yes
#查看两张网卡ip
[root@rocky8 ~]#ip a
...........
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:8e:1e:37 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.210/24 brd 10.0.0.255 scope global noprefixroute eth0
...............
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:8e:1e:41 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 brd 192.168.10.255 scope global noprefixroute eth1
................
#配置DNAT,将内网web服务器的80端口映射至外网提供访问,外网IP:192.168.10.10对应10.0.0.100,外网IP:192.168.10.20对应10.0.0.101
[root@rocky8 ~]#iptables -t nat -A PREROUTING -d 192.168.10.10 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.100:80
[root@rocky8 ~]#iptables -t nat -A PREROUTING -d 192.168.10.20 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.101:80
#检查是否开启路由转发,1为开启
[root@rocky8 ~]#cat /proc/sys/net/ipv4/ip_forward
1
#如路由转发未开启,则开启路由转发,配如下
[root@rocky8 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#应用内核参数
[root@rocky8 ~]#sysctl -p
Rsync 备份WEB服务器数据(即NFS服务提供的共享目录)
配置backup服务器
rsync既可以作为客户端也可以作为服务端,当作为服务端时,只需加--daemon参数即开启服务端,同时会开启873监听端口,另有个问题,作为服务端每次需手动运行rsync --daemon,可写成服务的形式写一个service开机启动,另:ubuntu安装完rsync默认提供service,rhel系列可单独安装rsync-daemon包提供service服务;
#ubuntu安装rsync默认已提供service服务
[root@backup ~]#dpkg -L rsync
/.
/etc
/etc/default
/etc/default/rsync
/etc/init.d
/etc/init.d/rsync
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/rsync.service
[root@backup ~]#systemctl status rsync
○ rsync.service - fast remote file copy program daemon
Loaded: loaded (/lib/systemd/system/rsync.service; disabled; vendor preset:>
Active: inactive (dead)
Docs: man:rsync(1)
man:rsyncd.conf(5)
[root@backup ~]#systemctl cat rsync
# /lib/systemd/system/rsync.service
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf
After=network.target
Documentation=man:rsync(1) man:rsyncd.conf(5)
[Service]
ExecStart=/usr/bin/rsync --daemon--no-detach
RestartSec=1
#准备备份目录
[root@backup-centos8 ~]#mkdir -pv /data/backup
#配置rsync配置
[root@backup ~]#vim /etc/rsyncd.conf
uid = root
gid = root
max connections =0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
[backup]
path = /data/backup/
comment = backup dir
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pas
#服务器端生成验证文件
[root@backup backup]#echo "rsyncuser:123456" > /etc/rsync.pas
#由于该文件存放密码账号,安全起见缩小文件权限
[root@backup backup]#chmod 600 /etc/rsync.pas
[root@backup backup]#ll /etc/rsync.pas
-rw-------1 root root 1711月 1920:28 /etc/rsync.pas
sersync客户端配置
这里采用sersync软件,实现客户端实时同步数据至备份服务器
#下载sersync
#将sersync解压至/usr/local目录下
[root@NFS01 ~]#ls
sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@NFS01 ~]#tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
[root@NFS01 GNU-Linux-x86]#pwd
/usr/local/GNU-Linux-x86
##sersync目录只有两个文件:一个是二进制程序文件,一个是xml格式的配置文件
[root@NFS01 GNU-Linux-x86]#ls
confxml.xml sersync2
[root@NFS01 GNU-Linux-x86]#cp -a ../GNU-Linux-x86/ /usr/local/sersync
#设置PATH变量
[root@NFS01 local]#echo 'PATH=/usr/local/sersync:$PATH' > /etc/profile.d/sersync.sh
[root@NFS01 local]#source /etc/profile.d/sersync.sh
#确认安装rsync客户端工具,如未安装,运行如下命令安装,如下为适用ubuntu命令
[root@NFS01 ~]#apt install rsync
#备份sersync配置文件
[root@NFS01 local]#cd sersync/
[root@NFS01 sersync]#pwd
/usr/local/sersync
[root@NFS01 sersync]#ls
confxml.xml sersync2
[root@NFS01 sersync]#cp confxml.xml confxml.xml.bak
#修改sersync配置文件
[root@NFS01 ~]#vim /usr/local/sersync/confxml.xml
<?xml version="1.0"encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost"port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
delete/close_write/moved_from/moved_to/create folder
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="false"/>
</inotify>
<sersync>
<localpath watch="/data/wordpress">
<remote ip="10.0.0.202"name="backup"/>
<!--<remote ip="192.168.8.39"name="tongbu"/>-->
<!--<remote ip="192.168.8.40"name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-artuz"/>
<auth start="true"users="rsyncuser"passwordfile="/etc/rsync.pas"/>
<userDefinedPort start="false"port="874"/><!-- port=874-->
<timeout start="false"time="100"/><!-- timeout=100-->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh"timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false"schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false"name="command"/>
</sersync>
<plugin name="command">
<param prefix="/bin/sh"suffix=""ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20"port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="" target="_blank">/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com"port="80"username="xxxx"passwd="xxxx"/>
<sendurl base="" target="_blank">http://pic.xoyo.com/cms"/>
<regexurl regex="false"match="" target="_blank">cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
</localpath>
</plugin>
</head>
#创建连接rsynd服务器的用户密码文件,并必须修改权限
[root@NFS01 sersync]#echo 123456 > /etc/rsync.pas
[root@NFS01 sersync]#chmod 600 /etc/rsync.pas
#以后台方式执行同步
[root@NFS01 wordpress]#sersync2 -dro /usr/local/sersync/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -o config xml name: /usr/local/sersync/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
daemon start,sersync run behind the console
use rsync password-file :
user is rsyncuser
passwordfile is /etc/rsync.pas
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12 =1(primary thread) +1(fail retry thread) +10(daemon sub threads)
Max threads numbers is: 22=12(Thread pool nums) +10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /data/wordpress && rsync -artuz-R--delete ./ rsyncuser@10.0.0.202::backup --password-file=/etc/rsync.pas >/dev/null 2>&1
run the sersync:
watch path is: /data/wordpress
#查看备份服务器是否已同步
[root@backup backup]#ls
index.php wp-comments-post.php wp-includes wp-signup.php
license.txt wp-config.php wp-links-opml.php wp-trackback.php
readme.html wp-config.php.bak wp-load.php xmlrpc.php
wp-activate.php wp-config-sample.php wp-login.php
wp-admin wp-content wp-mail.php
wp-blog-header.php wp-cron.php wp-settings.php
[root@backup backup]#ll
总用量 244
drwxr-xr-x 5 www-data www-data 409611月 2017:14 ./
drwxr-xr-x 3 root root 409611月 1920:12 ../
-rw-r--r-- 1 www-data www-data 49011月 2014:01 .htaccess
-rw-r--r-- 1 www-data www-data 405 2月 6 2020 index.php
-rw-r--r-- 1 www-data www-data 19915 1月 1 2022 license.txt
-rw-r--r-- 1 www-data www-data 7389 9月 1706:27 readme.html
-rw-r--r-- 1 www-data www-data 7205 9月 1707:13 wp-activate.php
drwxr-xr-x 9 www-data www-data 409611月 1612:00 wp-admin/
-rw-r--r-- 1 www-data www-data 351 2月 6 2020 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 233811月 10 2021 wp-comments-post.php
-rw-rw-rw- 1 www-data www-data 327911月 2013:58 wp-config.php
-rw-rw-rw- 1 www-data www-data 327911月 2013:58 wp-config.php.bak
-rw-r--r-- 1 www-data www-data 300112月 14 2021 wp-config-sample.php
drwxr-xr-x 7 www-data www-data 409611月 2017:16 wp-content/
-rw-r--r-- 1 www-data www-data 5543 9月 2023:44 wp-cron.php
drwxr-xr-x 27 www-data www-data 1228811月 1612:00 wp-includes/
-rw-r--r-- 1 www-data www-data 2494 3月 20 2022 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3985 9月 1916:59 wp-load.php
-rw-r--r-- 1 www-data www-data 49135 9月 2006:26 wp-login.php
-rw-r--r-- 1 www-data www-data 852210月 1719:06 wp-mail.php
-rw-r--r-- 1 www-data www-data 24587 9月 2618:17 wp-settings.php
-rw-r--r-- 1 www-data www-data 34350 9月 1708:35 wp-signup.php
-rw-r--r-- 1 www-data www-data 491410月 1719:22 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3236 6月 9 2020 xmlrpc.php
客户端验证
客户端这里我采用window系统,DNS指向DNS服务器192.168.10.100,192.168.10.101


架构修改方案一(增加LVS)
将iptables替换成LVS

#IP调整
内网各服务器网关修改至LVS eth0接口
#修改DNS服务器A记录
$TTL 1D
@ IN SOA dns1.hailin.org. admin.hailin.org. (
111 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master IN A 192.168.10.100
slave IN A 192.168.10.101
www IN A 192.168.10.20
#LVS服务器配置
#配置LVS服务器网卡
[root@ubuntu2204 ~]#cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
-10.0.0.170/24
gateway4: 10.0.0.210
nameservers:
addresses: [223.5.5.5]
eth1:
addresses:
-192.168.10.20/24
#LVS服务器开启ip_forward
[root@ubuntu2204 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@ubuntu2204 ~]#sysctl -p
net.ipv4.ip_forward =1
#LVS服务器配置规则,NAT模式
[root@ubuntu2204 ~]#ipvsadm -A -t 192.168.10.20:80 -s rr
[root@ubuntu2204 ~]#ipvsadm -a -t 192.168.10.20:80 -r 10.0.0.101:80 -m
[root@ubuntu2204 ~]#ipvsadm -a -t 192.168.10.20:80 -r 10.0.0.100:80 -m
[root@ubuntu2204 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.20:80 rr
-> 10.0.0.100:80 Masq 1 0 0
-> 10.0.0.101:80 Masq 1 0 0
架构修改方案二(增加LVS)
架构修改为Client->iptables->lvs->web(apache)

#IP调整
1、内网各服务器网关修改至LVS eth0接口
2、LVS的eth1网关修改至iptables的eth0接口
#修改DNS服务器A记录
[root@dns-master named]#cat hailin.org.zone
$TTL 1D
@ IN SOA dns1.hailin.org. admin.hailin.org. (
113 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master IN A 192.168.10.100
slave IN A 192.168.10.101
www IN A 192.168.10.10
#LVS服务器配置
#网卡调整
[root@ubuntu2204 ~]#cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
-10.0.0.170/24
nameservers:
addresses: [223.5.5.5]
eth1:
addresses:
-10.0.0.20/24
gateway4: 10.0.0.210
#LVS服务器开启ip_forward
[root@ubuntu2204 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@ubuntu2204 ~]#sysctl -p
net.ipv4.ip_forward =1
#LVS服务器配置规则,NAT模式
[root@ubuntu2204 ~]#ipvsadm -A -t 10.0.0.20:80 -s rr
[root@ubuntu2204 ~]#ipvsadm -a -t 10.0.0.20:80 -r 10.0.0.100:80 -m
[root@ubuntu2204 ~]#ipvsadm -a -t 10.0.0.20:80 -r 10.0.0.101:80 -m
[root@ubuntu2204 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.20:80 rr
-> 10.0.0.100:80 Masq 1 0 0
-> 10.0.0.101:80 Masq 1 0 0
#iptables配置修改
#开启ip_forward
[root@rocky8 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@rocky8 ~]#sysctl -p
net.ipv4.ip_forward =1
#nat映射,只将lvs vip地址映射到外网
[root@rocky8 ~]#iptables -t nat -A PREROUTING -d 192.168.10.10 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.20:80
[root@rocky8 ~]#iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 192.168.10.10 tcp dpt:80 to:10.0.0.20:80
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination