Chuẩn bị 4 node, chạy CentOS 7 với cấu hình
Quan trọng, phải lưu ý, thực hiện chính xác
Cài đặt Ceph
Cài đặt Ceph Jewel trên 3 Node
Cài đặt Nextcloud
Cài đặt Nextcloud 13 trên CentOS 7
Cú ý thiết lập IP theo lab hiện tại
Cấu hình file hosts
vim /etc/hosts
Nội dung
# content vim
192.168.2.133 ceph-admin
192.168.2.134 ceph-node-1
192.168.2.135 ceph-node-2
192.168.2.136 ceph-client # Nextcloud node
Thực hiện các bước sau trên ceph-client
ssh root@ceph-client
useradd -d /home/cephuser -m cephuser
passwd cephuser
Cấp quyền root cho user vừa tạo
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
Sử dụng NTP đồng bộ thời gian trên tất cả các Node.
Ở đây sử dụng NTP pool US.
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.service
yum install -y open-vm-tools
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
Hủy bỏ thiêt lập firewalld
systemctl stop firewalld
systemctl disable firewalld
Thực hiện các bước sau trên ceph-admin
ssh root@ceph-admin
Chỉnh sửa cấu hình ssh
vim ~/.ssh/config
Nội dung cập nhật
# vim content
Host ceph-admin
Hostname ceph-admin
User cephuser
Host ceph-node-1
Hostname ceph-node-1
User cephuser
Host ceph-node-2
Hostname ceph-node-2
User cephuser
Host ceph-client
Hostname ceph-client
User cephuser
Chuyển ssh-key tới node ceph-client
ssh-keyscan ceph-client >> ~/.ssh/known_hosts
ssh-copy-id ceph-client
Yều cầu nhập passwd trong lần đầu tiền truy cập
Thực hiện các bước sau trên ceph-admin
Truy cập Cluster directory (Có được khi cài đặt Ceph)
cd cluster/
Triển khai Ceph trên ceph-client (Nextcloud node)
ceph-deploy install ceph-client
Thiết lập management-key
ceph-deploy admin ceph-client
Thực hiện trên ceph-admin
Truy cập ceph-admin
ssh root@ceph-admin
Truy cập ceph cluster directory
cd cluster/
Tạo 2 rados gateway:
- 1 trên ceph-node-1
- 1 trên ceph-node-2
ceph-deploy rgw create ceph-node-1 ceph-node-2
API gateways chạy trên port 7480.
Sử dụng 2 gateway trong trường hợp cần tới HA, load balancing
Tạo user cho S3 interface, user được phép sử dụng service.
radosgw-admin user create --uid="nextclouds3" --display-name="Nextcloud S3 User"
radosgw-admin quota set --quota-scope=user --uid="nextclouds3" --max-objects=-1 --max-size=20G
User ở đây chính là Nextcloud server
Kiểm tra user nextclouds3
[root@ceph-admin ~]# radosgw-admin user info --uid=nextclouds3
{
"user_id": "nextclouds3",
"display_name": "Nextcloud S3 User",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [],
"keys": [
{
"user": "nextclouds3",
"access_key": "VJRQ3C2RHWJ1T91BSD5B",
"secret_key": "APyIJpxRci3ETojXWz4fEIOiJMMMifYftFRK0JUM"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"max_size_kb": 20971520,
"max_objects": -1
},
"temp_url_keys": []
}
Thực hiện trên ceph-admin (có thể trên ceph-client)
Trước khi cầu hình Nextcloud sử dụng CEPH-S3, ta cần kiểm tra ceph-node-1 radosgw có cho phép sử dụng service
Cài đặt gói
yum -y install python-boto
Tạo python script "/root/cephs3test.py"
[root@ceph-admin ~]# vim cephs3test.py3
# content
import boto
import boto.s3.connection
access_key = 'VJRQ3C2RHWJ1T91BSD5B'
secret_key = 'APyIJpxRci3ETojXWz4fEIOiJMMMifYftFRK0JUM'
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = 'ceph-node-1', port = 7480,is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),)
bucket = conn.create_bucket('my-new-bucket')
for bucket in conn.get_all_buckets():
print "{name} {created}".format(name = bucket.name,created = bucket.creation_date,)
Chạy script
python /root/cephs3test.py
Kết quả sẽ gần giống
my-new-bucket 2018-02-27T04:56:33.729Z
nextcloud 2018-02-27T04:48:46.508Z
Kiểm tra bằng node ceph-admin
[root@ceph-admin ~]# radosgw-admin bucket list
[
"my-new-bucket",
"nextcloud"
]
Xóa bucket test
radosgw-admin bucket rm my-new-bucket
Thực hiện trên ceph-client
Kiểm tra thông tin user s3 vừa tạo
[root@nextcloud ~]# radosgw-admin user info --uid=nextclouds3
{
"user_id": "nextclouds3",
"display_name": "Nextcloud S3 User",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [],
"keys": [
{
"user": "nextclouds3",
"access_key": "VJRQ3C2RHWJ1T91BSD5B",
"secret_key": "APyIJpxRci3ETojXWz4fEIOiJMMMifYftFRK0JUM"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"max_size_kb": 20971520,
"max_objects": -1
},
"temp_url_keys": []
}
Chú ý: Sử dụng các key sau
Access key: VJRQ3C2RHWJ1T91BSD5B
Secret key: APyIJpxRci3ETojXWz4fEIOiJMMMifYftFRK0JUM
Cấu hình tích hợp Ceph-S3 với Nextcloud
Cấu hình tại đường dẫn file config Nextcloud "/var/www/html/nextcloud/config/config.php"
Cấu hình thêm vào
'objectstore' =>
array (
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' =>
array (
'bucket' => 'nextcloud',
'autocreate' => true,
'key' => 'VJRQ3C2RHWJ1T91BSD5B',
'secret' => 'APyIJpxRci3ETojXWz4fEIOiJMMMifYftFRK0JUM',
'hostname' => '192.168.2.134',
'port' => 7480,
'use_ssl' => false,
'region' => 'optional',
'use_path_style' => true,
),
),
Cấu hình tổng quát sau khi thay đổi
[root@nextcloud ~]# vim /var/www/html/nextcloud/config/config.php
<?php
$CONFIG = array (
'instanceid' => 'ocxp066aqfnv',
'passwordsalt' => '0vAbZpW/j3bEMfrzGOEZRjhZ7VNz6E',
'secret' => 'bftvAR7dHORy5//tqVC5i4mVDwAMgqw+nDtQG5s0fARbF5rW',
'trusted_domains' =>
array (
0 => '192.168.2.136',
1 => '192.168.0.104',
),
'datadirectory' => '/var/www/html/nextcloud/data',
'objectstore' =>
array (
'class' => 'OC\\Files\\ObjectStore\\S3',
'arguments' =>
array (
'bucket' => 'nextcloud',
'autocreate' => true,
'key' => 'VJRQ3C2RHWJ1T91BSD5B',
'secret' => 'APyIJpxRci3ETojXWz4fEIOiJMMMifYftFRK0JUM',
'hostname' => '192.168.2.134',
'port' => 7480,
'use_ssl' => false,
'region' => 'optional',
'use_path_style' => true,
),
),
'overwrite.cli.url' => 'http://192.168.2.136/nextcloud',
'dbtype' => 'mysql',
'version' => '13.0.0.14',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'nc_user',
'dbpassword' => 'thanh123',
'installed' => true,
);
Khởi động lại apache
systemctl restart httpd
[root@nextcloud ~]# radosgw-admin bucket stats --bucket=nextcloud
{
"bucket": "nextcloud",
"pool": "default.rgw.buckets.data",
"index_pool": "default.rgw.buckets.index",
"id": "e4391e3d-1578-4ca7-a07f-14f13e0fa7b2.14101.1",
"marker": "e4391e3d-1578-4ca7-a07f-14f13e0fa7b2.14101.1",
"owner": "nextclouds3",
"ver": "0#1383",
"master_ver": "0#0",
"mtime": "2018-02-26 23:48:46.508126",
"max_marker": "0#",
"usage": {
"rgw.main": {
"size_kb": 593094,
"size_kb_actual": 593444,
"num_objects": 141
}
},
"bucket_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
}
}
[root@nextcloud ~]# radosgw-admin bucket list --bucket=nextcloud
Upload data lên Nextcloud, dung lượng Ceph sẽ thay đổi
[root@nextcloud ~]# ceph -s
cluster 60643eb6-a568-42ae-b665-114807627e09
health HEALTH_OK
monmap e1: 3 mons at {ceph-admin=192.168.2.133:6789/0,ceph-node-1=192.168.2.134:6789/0,ceph-node-2=192.168.2.135:6789/0}
election epoch 10, quorum 0,1,2 ceph-admin,ceph-node-1,ceph-node-2
osdmap e41: 2 osds: 2 up, 2 in
flags sortbitwise,require_jewel_osds
pgmap v621: 316 pgs, 11 pools, 831 MB data, 556 objects
1740 MB used, 28957 MB / 30697 MB avail # Dung lượng thay đổi
316 active+clean