WordPress使用ceph存储-全部服务使用docker运行
环境说明
所有系统均为Ubuntu-2204-LTS
| 主机名 | 主机IP | 运行服务 | 运行镜像 |
|---|---|---|---|
| docker02 | 10.0.0.96 | docker | mysql |
| elk91 | 10.0.0.91 | docker | wordpress |
| elk92 | 10.0.0.92 | docker | wordpress |
| elk93 | 10.0.0.93 | docker | wordpress |
| ceph141 | 10.0.0.141 | ceph | |
| ceph142 | 10.0.0.142 | ceph | |
| ceph143 | 10.0.0.143 | ceph | |
| nginx | 10.0.0.7 | docker | nginx |
一、WordPress结合ceph架构说明

二、docker启动MySQL
1.ceph集群创建块设备
[root@ceph141 ~]# rbd info docker-data/wordpress-db
rbd image 'wordpress-db':
size 100 GiB in 25600 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: dac4293bbf49
block_name_prefix: rbd_data.dac4293bbf49
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Wed Apr 2 22:11:56 2025
access_timestamp: Wed Apr 2 22:11:56 2025
modify_timestamp: Wed Apr 2 22:11:56 2025
2.客户端开机挂载
#安装命令包
[root@docker02 ~]# apt install -y ceph-common
#先映射到客户端
[root@docker02 ~]# rbd map docker-data/wordpress-db
/dev/rbd1
#格式化
[root@docker02 ~]# mkfs.xfs /dev/rbd1
……
Discarding blocks...Done.
#创建挂载目录
[root@docker02 ~]# mkdir -p /wordpress/db
[root@docker02 ~]# mount /dev/rbd1 /wordpress/db
#查看
[root@docker02 ~]# df -h | grep word
/dev/rbd1 100G 747M 100G 1% /wordpress/db
#编写开机自启动文件
[root@docker02 ~]# vim /etc/rc.local
#!/bin/bash
rbd map docker-data/wordpress-db
mount /dev/rbd1 /wordpress/db
3.启动MySQL数据库
#拉取Mysql镜像
[root@docker02 ~]# docker pull mysql:8.0.36-oracle
#启动mysql
[root@docker02 ~]# docker run -d --name wordpress-db-server \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=dezyan \
-v /wordpress/db:/var/lib/mysql \
--network host \
--restart always \
mysql:8.0.36-oracle
eda92ddad43c5b3f6b2d1baed542726b2577b63089307d0e05e8017ae6d07210
#查看运行状态
[root@docker02 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda92ddad43c mysql:8.0.36-oracle "docker-entrypoint.s…" 21 seconds ago Up 20 seconds wordpress-db-server
#查看本地端口3306是否启动
[root@docker02 ~]# ss -tnl | grep 3306
LISTEN 0 151 *:3306 *:*
LISTEN 0 70 *:33060 *:*
三、docker启动nginx配置负载均衡
[root@nginx01 ~]# docker run -d --name nginx-proxy --network host nginx:1.27.4-alpine
[root@nginx01 ~]# docker exec -it nginx-proxy sh
[root@nginx01 ~]# docker exec -it nginx-proxy sh
/ # vi /etc/nginx/conf.d/wp.conf
#在http模块中添加如下内容
http {
upstream webs {
server 10.0.0.91:80;
server 10.0.0.92:80;
server 10.0.0.93:80;
}
upstream mysql {
server 10.0.0.96:3306;
}
server {
listen 80;
location / {
proxy_pass http://webs;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 3306;
location / {
proxy_pass http://mysql;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
/ # nginx -t
/ # nginx -s reload
四、docker启动wordpress
1.WordPress节点安装ceph环境
[root@elk91 ~]# apt -y install ceph-common
[root@elk92 ~]# apt -y install ceph-common
[root@elk93 ~]# apt -y install ceph-common
2.服务端准备认证文件相关信息到WordPress节点
[root@ceph141 ~]# scp /etc/ceph/ceph.{client.admin.keyring,conf} 10.0.0.91:/etc/ceph
[root@ceph141 ~]# scp /etc/ceph/ceph.{client.admin.keyring,conf} 10.0.0.92:/etc/ceph
[root@ceph141 ~]# scp /etc/ceph/ceph.{client.admin.keyring,conf} 10.0.0.93:/etc/ceph
3.客户端开机挂载cephFS文件系统
3.1 创建wp的元数据和数据池
[root@ceph141 ~]# ceph osd pool create wp_data
pool 'wp_data' created
[root@ceph141 ~]# ceph osd pool create wp_metadata
pool 'wp_metadata' created
3.2 创建一个文件系统,名为wp
[root@ceph141 ~]# ceph fs new wp wp_metadata wp_data
Pool 'wp_data' (id '17') has pg autoscale mode 'on' but is not marked as bulk.
Consider setting the flag by running
# ceph osd pool set wp_data bulk true
new fs with metadata pool 18 and data pool 17
#标记'wp_data'存储池为大容量
[root@ceph141 ~]# ceph osd pool set wp_data bulk true
set pool 17 bulk to true
[root@ceph141 ~]# ceph osd pool get wp_data bulk
bulk: true
3.3 查看验证
[root@ceph141 ~]# ceph fs ls
name: wp, metadata pool: wp_metadata, data pools: [wp_data ]
3.4 应用mds的文件系统
[root@ceph141 ~]# ceph orch apply mds wp
Scheduled mds.wp update...
[root@ceph141 ~]# ceph mds stat
wp:1 {wp:0=wp-cephfs.ceph142.dunsqx=up:active} 1 up:standby
3.5 查看cephFS集群的详细信息
[root@ceph141 ~]# ceph fs status wp
wp - 0 clients
==
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active wp.ceph142.mmwiuu Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
wp_metadata metadata 96.0k 1729G
wp_data data 0 1729G
STANDBY MDS
wp-cephfs.ceph142.dunsqx
wp-cephfs.ceph141.nsvdek
wp.ceph143.ivlgai
oldboyedu-cephfs.ceph141.zlsaoa
MDS version: ceph version 19.2.1 (58a7fab8be0a062d730ad7da874972fd3fba59fb) squid (stable)
3.6 添加多个mds服务器
[root@ceph141 ~]# ceph orch daemon add mds wp ceph141
Deployed mds.wp.ceph141.xktlac on host 'ceph141'
[root@ceph141 ~]# ceph fs status wp
wp - 0 clients
==
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active wp.ceph142.mmwiuu Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
wp_metadata metadata 96.0k 1729G
wp_data data 0 1729G
STANDBY MDS
wp-cephfs.ceph142.dunsqx
wp-cephfs.ceph141.nsvdek
oldboyedu-cephfs.ceph141.zlsaoa
wp.ceph141.xktlac
MDS version: ceph version 19.2.1 (58a7fab8be0a062d730ad7da874972fd3fba59fb) squid (stable)
3.7 在cephfs中创建目录web
#创建挂载目录
[root@docker02 ~]# mkdir /test
#挂载
[root@docker02 ~]# mount -t ceph 10.0.0.141:6789,10.0.0.142:6789,10.0.0.143:6789:/ /test -o name=admin,secret=AQBHnepnUo4UHhAAahGjcxqpUtjlfKtRhkR0WA==
#查看
[root@docker02 ~]# df -h | grep test
10.0.0.141:6789,10.0.0.142:6789,10.0.0.143:6789:/ 1.7T 0 1.7T 0% /test
#进入目录创建web
[root@docker02 ~]# cd /test/
[root@docker02 test]# mkdir web
3.8 WordPress集群挂载cephfs
确保CephFS集群中是存在/web目录的,具体见上步,其中secret的值也要自行修改
所有节点都要操作
# mkdir -p /wordpress/wp
# mount -t ceph 10.0.0.141:6789,10.0.0.142:6789,10.0.0.143:6789:/web /wordpress/wp -o name=admin,secret=AQBHnepnUo4UHhAAahGjcxqpUtjlfKtRhkR0WA==
# df -h | grep wp
10.0.0.141:6789,10.0.0.142:6789,10.0.0.143:6789:/web 1.7T 0 1.7T 0% /wordpress/wp
4.WordPress集群启动WordPress容器
所有节点都要操作
docker run -d --name wordpress-wp-server \
-e WORDPRESS_DB_HOST=10.0.0.7:3306 \
-e WORDPRESS_DB_USER=admin \
-e WORDPRESS_DB_PASSWORD=dezyan \
-e WORDPRESS_DB_NAME=wordpress \
-v /wordpress/wp:/var/www/html \
-p 80:80 \
--restart always \
wordpress:6.7.1-php8.1-apache
五、访问测试
http://10.0.0.96/

本文来自博客园,作者:丁志岩,转载请注明原文链接:https://www.cnblogs.com/dezyan/p/18806969

浙公网安备 33010602011771号