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/

posted @ 2025-04-02 23:32  丁志岩  阅读(34)  评论(0)    收藏  举报