- Cấu hình SeLinux
sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config
setenforce 0
- Cấu hình FileHost
cat <<EOF> /etc/hosts
192.168.50.145 ceph_node1
192.168.50.146 ceph_node2
192.168.50.147 ceph_node3
EOF
- Cấu hình FirewallD
firewall-cmd --add-port=6789/tcp --permanent
firewall-cmd --add-port=6800-7100/tcp --permanent
firewall-cmd --reload
- Cấu hình NTP
yum install -y ntp ntpdate ntp-doc
ntpdate -qu 0.centos.pool.ntp.org 1.centos.pool.ntp.org 2.centos.pool.ntp.org
systemctl start ntpd
systemctl enable ntpd
timedatectl set-ntp true
hwclock -w
- Khởi tạo Yum Repository
cat <<EOF> /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=https://download.ceph.com/rpm-mimic/el7/x86_64/
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-mimic/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://download.ceph.com/rpm-mimic/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
EOF
- Cài đặt Yum
yum-plugin-priorities.
yum -y install yum-plugin-priorities
- Cài đặt EPEL Repository
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- Cài đặt CEPH package
yum -y install snappy leveldb gdisk python-argparse gperftools-libs
yum install -y ceph
-
Mỗi Cluster yêu cầu ít nhất một MON và các OSD đi kèm. Bootstrap MON là yêu cầu đầu tiên để khởi động một Ceph Cluster. MON cũng yêu cầu tăng tính khả dụng ca như các thnàh phần khác trong Cluster như Object, pool replica.
-
Để bootstrap một MON cần các cấu hình tối thiểu
- Unique Identifier : ID của cụm
- Cluster Name : tên của cụm
- Monitor Name : mỗi MON instance trong cụm sẽ có 1 tên riêng
- Monitor Map : khi bootstrap một MON đầu tiên sẽ yêu cẩu khởi tạo một monitor map
- Monitor Keyring: monitor nói chuyện với nhau thông qua các secret key.
- Administrator Keyring: sử dụng để làm việc vơi CLuster thông qua admin use và key
-
Khởi tạo fsid, sử dụng cho trường fsid
[]# uuidgen
efde9ca7-5b57-4ed6-ae01-8cb3befe5bac
[]# UUID=efde9ca7-5b57-4ed6-ae01-8cb3befe5bac
- Khởi tạo một MON là yêu cầu đầu tiên và tối thiểu để chạy Ceph cluster. Cấu hình node1 làm MON. Khởi tạo cấu hình Ceph
cat <<EOF> /etc/ceph/ceph.conf
[global]
fsid = efde9ca7-5b57-4ed6-ae01-8cb3befe5bac
public network = 192.168.50.0/24
cluster network = 192.168.30.0/24
mon initial members = ceph_node1, ceph_node2, ceph_node3
mon host = 192.168.50.145, 192.168.50.146, 192.168.50.147
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
EOF
- Khởi tạo Key cho MON
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
- Khởi tạo key boostrap OSD
sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'
- Khởi tạo key cho Administrator
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
- Thêm key vào
ceph.mon.keyringf
sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
- Khởi tạo monitor map
monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
monmaptool --create --add ceph_node1 192.168.50.145:6789 --add ceph_node2 \ 192.168.50.146:6789 --add ceph_node3 192.168.50.147:6789 --fsid $UUID /tmp/monmap
- Khởi tạo default data directory cho MON
ceph_node1
sudo -u ceph mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph_node1
- Phân quyền
chown -R ceph:ceph /tmp/ceph.mon.keyring
chown -R ceph:ceph /tmp/monmaprpm
- Khởi tạo MON ban đầu từ key rpm
sudo -u ceph ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
sudo -u ceph ceph-mon --mkfs -i ceph_node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
- Khởi động monitor
sudo touch /var/lib/ceph/mon/ceph-ceph_node1/done
systemctl stop ceph-mon@ceph_node1
systemctl daemon-reload
systemctl start ceph-mon@ceph_node1
systemctl enable ceph-mon@ceph_node1
systemctl status ceph-mon@ceph_node1
-
Do cơ chế qourum , yêu cầu ít nhất 2 trên 3 mon tham gia vào quá trình qorum
-
Trên node CEPH_node1, sau khi khởi động mon daemon, thực hiện copy key và mon map
scp /etc/ceph/ceph.client.admin.keyring root@ceph_node2:/etc/ceph/ceph.client.admin.keyring
scp /tmp/monmap root@ceph_node2: /tmp/monmap
scp /tmp/ceph.mon.keyring root@ceph_node2:/tmp/ceph.mon.keyring
-
Trên các node cần thêm MON thực hiện khởi tạo service.
-
Khởi tạo default data directory cho MON
ceph_node2
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph_node2
chown -R ceph:ceph /tmp/ceph.mon.keyring
chown -R ceph:ceph /tmp/monmap
- Khởi tạo MON ban đầu từ key và mon map
sudo -u ceph ceph-mon --mkfs -i ceph_node2 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
- Khởi động monitor
sudo touch /var/lib/ceph/mon/ceph-ceph_node2/done
systemctl stop ceph-mon@ceph_node2
systemctl daemon-reload
systemctl start ceph-mon@ceph_node2
systemctl enable ceph-mon@ceph_node2
systemctl status ceph-mon@ceph_node2
- Khởi tạo user cho mgr
ceph auth get-or-create mgr.ceph_node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
- Khởi tạo folder cho mgr
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-{hostname}
sudo ceph auth get-or-create mgr.ceph_node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-{hostname}/keyring
sudo chown -R ceph:ceph /var/lib/ceph/mgr
- Khởi động mgr service
systemctl start ceph-mgr@{hostname}.service
systemctl enable ceph-mgr@{hostname}.service
systemctl status ceph-mgr@{hostname}.service
- Lấy key bootstrap OSD
ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring
- Cấu hình Ceph OSD
ceph-volume lvm zap /dev/vdb
sudo ceph-volume lvm prepare --data /dev/vdb
ceph-volume lvm list ## return ID and osd FSID
[block] /dev/ceph-c4922ed5-e8c9-43f3-b71e-7d6eace01c72/osd-block-7c8947dd-300a-43c9-a0a5-d56f47377e07
type block
osd id 0
cluster fsid 69624950-e1a4-4048-9e14-deafee51a943
cluster name ceph
osd fsid 7c8947dd-300a-43c9-a0a5-d56f47377e07
encrypted 0
cephx lockbox secret
block uuid 4AXOTY-VvrD-mc0V-RK6n-slrE-9OPy-JmEJQW
block device /dev/ceph-c4922ed5-e8c9-43f3-b71e-7d6eace01c72/osd-block-7c8947dd-300a-43c9-a0a5-d56f47377e07
vdo 0
crush device class None
devices /dev/vdb
sudo ceph-volume lvm activate {ID} {FSID} ## active OSD
sudo ceph-volume lvm activate 0 7c8947dd-300a-43c9-a0a5-d56f47377e07
hoặc
ceph-volume lvm zap /dev/vdb
ceph-volume lvm create --data /dev/vdb